Hacktoberfest 2026:维护者为十月标记出来的 issue,仍然开放、适合新手。 浏览 Hacktoberfest issue

Server reader thread crashes on exit with Puma in cluster mode

未关闭
#1,166 1 条评论 1 个 reaction 已指派 0 人 在 GitHub 查看

还没有人认领这个 Issue。

评估

难度
3/5
预计耗时
1-2 天
新手友好度
45/100
Issue 类型
缺陷
描述清晰度
描述清楚
活跃度
停滞
技术栈
ruby
领域
devtools

调研方向

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.

由索引模型根据 Issue 内容生成。

描述

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.

主要语言
Ruby
星标
1.3k
派生
146
PR 合并指标
30 天内没有已合并 PR

贡献指南

打开贡献指南

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

ruby/debug 的其他 Issue

查看 ruby/debug 的全部 Issue

相似的 Issue

更多 Ruby Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。