From: eregontp@... Date: 2017-12-12T13:28:16+00:00 Subject: [ruby-core:84213] [Ruby trunk Bug#14171] can't alloc thread (ThreadError) in DRbServer#main_loop Issue #14171 has been reported by Eregon (Benoit Daloze). ---------------------------------------- Bug #14171: can't alloc thread (ThreadError) in DRbServer#main_loop https://bugs.ruby-lang.org/issues/14171 * Author: Eregon (Benoit Daloze) * Status: Open * Priority: Normal * Assignee: seki (Masatoshi Seki) * Target version: * 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: