From: eregontp@... Date: 2017-12-19T15:42:35+00:00 Subject: [ruby-core:84350] [Ruby trunk Bug#14171] can't alloc thread (ThreadError) in DRbServer#main_loop Issue #14171 has been updated by Eregon (Benoit Daloze). I also applied @seki's fix in r61342. ---------------------------------------- Bug #14171: can't alloc thread (ThreadError) in DRbServer#main_loop https://bugs.ruby-lang.org/issues/14171#change-68528 * Author: Eregon (Benoit Daloze) * Status: Closed * Priority: Normal * Assignee: seki (Masatoshi Seki) * Target version: 2.5 * ruby -v: ruby 2.5.0dev (2017-12-12 trunk 61147) [x86_64-linux] * Backport: 2.3: UNKNOWN, 2.4: UNKNOWN ---------------------------------------- The bug can be reproduced by adding `Thread.report_on_exception = true` at the top of lib/drb/drb.rb. ``` DRbTests::TestBug4409#test_bug4409# 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 Could you review? ---Files-------------------------------- 0001-Avoid-creating-a-Thread-for-shutting-down-a-DRbServe.patch (1.89 KB) -- https://bugs.ruby-lang.org/ Unsubscribe: