[#87467] [Ruby trunk Bug#14841] Very rarely IO#readpartial does not raise EOFError — mofezilla@...
Issue #14841 has been reported by hirura (Hiroyuki URANISHI).
3 messages
2018/06/10
[#87515] [Ruby trunk Bug#14841] Very rarely IO#readpartial does not raise EOFError — hirura@...
Issue #14841 has been updated by hirura (Hiroyuki URANISHI).
7 messages
2018/06/19
[#87516] Re: [Ruby trunk Bug#14841] Very rarely IO#readpartial does not raise EOFError
— Eric Wong <normalperson@...>
2018/06/19
[email protected] wrote:
[#87517] Re: [Ruby trunk Bug#14841] Very rarely IO#readpartial does not raise EOFError
— Eric Wong <normalperson@...>
2018/06/19
Sorry, I left this out: If you can reproduce it again, can you
[#87519] Re: [Ruby trunk Bug#14841] Very rarely IO#readpartial does not raise EOFError
— hirura <hirura@...>
2018/06/19
Hi Eric,
[#87521] Re: [Ruby trunk Bug#14841] Very rarely IO#readpartial does not raise EOFError
— Eric Wong <normalperson@...>
2018/06/19
hirura <[email protected]> wrote:
[#87541] [Ruby trunk Feature#14859] [PATCH] implement Timeout in VM — normalperson@...
Issue #14859 has been reported by normalperson (Eric Wong).
4 messages
2018/06/21
[#87570] [Ruby trunk Feature#14859] [PATCH] implement Timeout in VM — eregontp@...
Issue #14859 has been updated by Eregon (Benoit Daloze).
4 messages
2018/06/21
[#87605] [Ruby trunk Bug#14867] Process.wait can wait for MJIT compiler process — takashikkbn@...
Issue #14867 has been reported by k0kubun (Takashi Kokubun).
3 messages
2018/06/23
[#87614] [Ruby trunk Bug#14867] Process.wait can wait for MJIT compiler process — normalperson@...
Issue #14867 has been updated by normalperson (Eric Wong).
4 messages
2018/06/23
[#87631] [Ruby trunk Bug#14867] Process.wait can wait for MJIT compiler process — takashikkbn@...
Issue #14867 has been updated by k0kubun (Takashi Kokubun).
5 messages
2018/06/25
[#87635] Re: [Ruby trunk Bug#14867] Process.wait can wait for MJIT compiler process
— Eric Wong <normalperson@...>
2018/06/25
[email protected] wrote:
[#87665] [Ruby trunk Bug#14867] Process.wait can wait for MJIT compiler process — eregontp@...
Issue #14867 has been updated by Eregon (Benoit Daloze).
4 messages
2018/06/28
[#87710] [Ruby trunk Bug#14867] Process.wait can wait for MJIT compiler process — Greg.mpls@...
Issue #14867 has been updated by MSP-Greg (Greg L).
3 messages
2018/06/30
[ruby-core:87621] Re: [Ruby trunk Bug#14867] Process.wait can wait for MJIT compiler process
From:
Eric Wong <normalperson@...>
Date:
2018-06-24 12:15:38 UTC
List:
ruby-core #87621
``` > > File 0001-hijack-SIGCHLD-handler-for-internal-use.patch added > > Scratch that, slightly buggy. Will fix in a bit. Testing with this amendment: https://80x24.org/spew/[email protected]/raw It's a bit tricky, and I introduced yet another sleep function (rb_thread_sleep_interruptible) to make it work. Original problem in my patch was holding a native mutex while forking is dangerous, so I went to normal ruby sleep methods (same as Mutex and autoload). However, it's impossible to resume main thread from signal handler because rb_threadptr_execute_interrupts always restores th->status after trap handlers. In other words, this doesn't work: main = Thread.current trap(:USR1) { main.run } Thread.new { sleep 0.1; Process.kill(:USR1, $$) } sleep So I tried moving rb_sigchld/rb_waitpid_all into timer-thread; but that's racy and not doable unless the Ruby thread holds a native mutex while sleeping on a native condvar (w/o GVL). And that brings us back to the original problem... (Well, I could use futex :P) Now, back to using the main thread to handle SIGCHLD... It seems to be working. I suspect there's an old bug here, since we lose wakeups when the timer-thread is stopped: --- a/process.c +++ b/process.c @@ -1348,6 +1348,9 @@ after_exec_non_async_signal_safe(void) { rb_thread_reset_timer_thread(); rb_thread_start_timer_thread(); + if (rb_signal_buff_size()) { + rb_thread_wakeup_timer_thread(); + } } static void ``` But maybe we can also block signals before stopping timer-thread. Unsubscribe: <mailto:[email protected]?subject=unsubscribe> <http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>