Server reader thread crashes on exit with Puma in cluster mode

Đang mở
#1,166 1 bình luận 1 reaction 0 người được giao Xem trên GitHub

Chưa có ai nhận issue này.

Đánh giá

Độ khó
3/5
Thời gian dự kiến
1-2 ngày
Mức phù hợp với người mới
45/100
Loại issue
Lỗi
Độ rõ ràng
Đặc tả rõ ràng
Mức độ hoạt động
Đình trệ
Công nghệ
ruby
Lĩnh vực
devtools

Hướng nghiên cứu

Reproduce the shutdown exception with the linked clustered Puma example, then inspect debug/server.rb around lines 44 and 511 and the shown Socket unix_server_loop stack. Done means interrupting the server no longer reports reader or session thread exceptions while the debugger Unix socket is cleaned up.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

Your environment

  • ruby -v: ruby 3.3.9 (2025-07-24 revision f5c772fc7c) [x86_64-linux]
  • rdbg -v: rdbg 1.11.0

Describe the bug
When running a Rails server (puma) with RUBY_DEBUG_OPEN=true, it seems to work normally until you stop the server and we have a crash from the server reader thread:

$ RUBY_DEBUG_OPEN=true bin/rails server
DEBUGGER: Debugger can attach via UNIX domain socket (/run/user/1000/rdbg-110109)
=> Booting Puma
=> Rails 8.0.2.1 application starting in development 
=> Run `bin/rails server --help` for more startup options
[110109] Puma starting in cluster mode...
[110109] * Puma version: 6.6.1 ("Return to Forever")
[110109] * Ruby version: ruby 3.3.9 (2025-07-24 revision f5c772fc7c) [x86_64-linux]
[110109] *  Min threads: 5
[110109] *  Max threads: 5
[110109] *  Environment: development
[110109] *   Master PID: 110109
[110109] *      Workers: 1
[110109] *     Restarts: (✔) hot (✖) phased (✖) refork
[110109] * Preloading application
[110109] * Listening on http://127.0.0.1:3000
[110109] * Listening on http://[::1]:3000
[110109] Use Ctrl-C to stop
[110109] ! WARNING: Detected running cluster mode with 1 worker.
[110109] ! Running Puma in cluster mode with a single worker is often a misconfiguration.
[110109] ! Consider running Puma in single-mode (workers = 0) in order to reduce memory overhead.
[110109] ! Set the `silence_single_worker_warning` option to silence this warning message.
DEBUGGER[bin/rails#110151]: Debugger can attach via UNIX domain socket (/run/user/1000/rdbg-110109)
[110109] - Worker 0 (PID: 110151) booted in 0.0s, phase: 0
^C[110109] - Gracefully shutting down workers...
[110109] === puma shutdown: 2025-12-08 08:58:00 -0300 ===
[110109] - Goodbye!
Exiting
#<Thread:0x00007fcebcb66df8@DEBUGGER__::Server::reader /home/we/p/we/vendor/bundle/ruby/3.3.0/gems/debug-1.11.0/lib/debug/server.rb:44 aborting> terminated with exception (report_on_exception is true):
/home/we/.rbenv/versions/3.3.9/lib/ruby/3.3.0/socket.rb:1128:in `unlink': No such file or directory @ apply2files - /run/user/1000/rdbg-110109 (Errno::ENOENT)
	from /home/we/.rbenv/versions/3.3.9/lib/ruby/3.3.0/socket.rb:1128:in `ensure in unix_server_socket'
	from /home/we/.rbenv/versions/3.3.9/lib/ruby/3.3.0/socket.rb:1128:in `unix_server_socket'
	from /home/we/.rbenv/versions/3.3.9/lib/ruby/3.3.0/socket.rb:1169:in `unix_server_loop'
	from /home/we/p/we/vendor/bundle/ruby/3.3.0/gems/debug-1.11.0/lib/debug/server.rb:511:in `accept'
	from /home/we/p/we/vendor/bundle/ruby/3.3.0/gems/debug-1.11.0/lib/debug/server.rb:49:in `block in activate'
#<Thread:0x00007fcebcb66a10@DEBUGGER__::SESSION@server /home/felipe/p/recipal/vendor/bundle/ruby/3.3.0/gems/debug-1.11.0/lib/debug/session.rb:179 aborting> terminated with exception (report_on_exception is true):
/home/felipe/.rbenv/versions/3.3.9/lib/ruby/3.3.0/socket.rb:1128:in `unlink': No such file or directory @ apply2files - /run/user/1000/rdbg-110109 (Errno::ENOENT)
	from /home/we/.rbenv/versions/3.3.9/lib/ruby/3.3.0/socket.rb:1128:in `ensure in unix_server_socket'
	from /home/we/.rbenv/versions/3.3.9/lib/ruby/3.3.0/socket.rb:1128:in `unix_server_socket'
	from /home/we/.rbenv/versions/3.3.9/lib/ruby/3.3.0/socket.rb:1169:in `unix_server_loop'
	from /home/we/p/we/vendor/bundle/ruby/3.3.0/gems/debug-1.11.0/lib/debug/server.rb:511:in `accept'
	from /home/we/p/we/vendor/bundle/ruby/3.3.0/gems/debug-1.11.0/lib/debug/server.rb:49:in `block in activate'

To Reproduce

I've manged to reproduce this running puma in clustered mode here: https://github.com/Draiken/debug-issue-unlink

Basically, start the server, interrupt it, we get the exception.

Expected behavior
No exceptions should occur.

Additional context
I imagine it's a race condition when attempting to remove the debug unix socket.

Ngôn ngữ chính
Ruby
Star
1.3k
Fork
146
Chỉ số merge pull request
Không có pull request nào được merge trong 30 ngày

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của ruby/debug

Tất cả issue của ruby/debug

Issue tương tự

Thêm issue về Ruby

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.