Actions
Bug #14171
closedcan't alloc thread (ThreadError) in DRbServer#main_loop
Description
The bug can be reproduced by adding Thread.report_on_exception = true
at the top of lib/drb/drb.rb.
DRbTests::TestBug4409#test_bug4409#<Thread:0x000055597db83478@ruby/lib/drb/drb.rb:1657 aborting> terminated with exception:
Traceback (most recent call last):
4: from ruby/lib/drb/drb.rb:1665:in `block in main_loop'
3: from ruby/lib/drb/drb.rb:1665:in `loop'
2: from ruby/lib/drb/drb.rb:1679:in `block (2 levels) in main_loop'
1: from ruby/lib/drb/drb.rb:1677:in `ensure in block (2 levels) in main_loop'
ruby/lib/drb/drb.rb:1677:in `new': can't alloc thread (ThreadError)
This Thread.new fails:
if Thread.current['DRb']['stop_service']
Thread.new { stop_service }
end
I think we don't need an extra Thread to stop the DRbServer.
We just need to tweak the logic in DRbServer#stop_service.
Proposed patch attached.
I need to commit it soon to avoid hundreds of warnings during make test-all for #14143.
@seki (Masatoshi Seki) Could you review?
Files
Actions
Like0
Like0Like0Like0