after_fork_parent method waits for all child processes to stop
还没有人认领这个 Issue。
评估
调研方向
Start at lib/debug/local.rb lines 106-107 and inspect after_fork_parent, then reproduce the behavior with the Gemfile and test_daemon.rb example using daemons. Confirm the forked worker behavior from the issue's ps output; done means child processes other than debug no longer remain blocked waiting to stop.
由索引模型根据 Issue 内容生成。
描述
Your environment
ruby -v: ruby 3.2.2 (2023-03-30 revision e51014f9c0) [x86_64-linux]rdbg -v: rdbg 1.9.2
Describe the bug
I'm using delayed_job.
When I tried to increase the number of workers, the number of workers did not increase because the child process did not stop.
The problem was due to Process.waitpid below.
https://github.com/ruby/debug/blob/master/lib/debug/local.rb#L106-L107
To Reproduce
delayed_job uses daemons.
Script:
Gemfile
# frozen_string_literal: true
source "https://rubygems.org"
gem "debug", platforms: %i[ mri windows ]
gem "daemons"
test_daemon.rb
#!/usr/bin/env ruby
require 'bundler/setup'
Bundler.setup
require 'debug'
require 'daemons'
2.times do |i|
Daemons.run_proc("test_daemon.#{i}") do
loop do
end
end
end
Terminal:
$ test_daemon.rb start
Child processes do not stop and workers do not increase.
$ ps aux
--snip--
sada 14719 1.8 0.2 177232 37168 pts/6 Sl+ 17:01 0:00 ruby ./test_daemon.rb start
sada 14735 0.0 0.2 177232 33832 ? Ssl 17:01 0:00 ruby ./test_daemon.rb start
sada 14737 94.6 0.2 180308 37540 ? Rl 17:01 0:08 test_daemon.0
The following fork operations are no longer possible.
- Forks another child process and exits first child. This prevents the potential of acquiring a controlling terminal.
Also, in Rails development, debug is loaded by default, When starting delayed_job, unexpected block is caused by this issue.
Expected behavior
Child processes other than debug do not wait to stop.
- 主要语言
- Ruby
- 星标
- 1.3k
- 派生
- 146
- PR 合并指标
- 30 天内没有已合并 PR
贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
ruby/debug 的其他 Issue
-
难度 3/5 1-2 天 新手友好度 68/100
-
Support exceptionOptions in setExceptionBreakpoints to catch arbitrary exception classes via DAP 未关闭
难度 4/5 3-5 天 新手友好度 55/100
-
难度 3/5 1-2 天 新手友好度 45/100
-
难度 4/5 3-5 天 新手友好度 52/100
-
难度 4/5 3-5 天 新手友好度 35/100
相似的 Issue
-
SyncEm always forwards a dummy block, so wrapped methods lose their no-block/Enumerator behavior 未关闭
难度 2/5 1-3 小时 新手友好度 78/100
-
bug
难度 2/5 1-3 小时 新手友好度 75/100
-
bug
难度 2/5 1-3 小时 新手友好度 72/100
endoflife-date/endoflife.date#11086 ·
-
internal
难度 1/5 1 小时以内 新手友好度 88/100
Kong/developer.konghq.com#7322 ·
-
bug P2
难度 2/5 1-3 小时 新手友好度 88/100