I wrote:
>>http://ci.rvm.jp/results/trunk-mjit@silicon-docker/1437559
> OK, I think it's the lack of locking/atomics around
> checking waitpid_state.ret and I introduced the bug
> in commit 9d4027b50334ef804f6f138fba1d342fe188826b
> ("process.c: simplify SIGCHLD-based waitpid").
> 
> I redesign rb_thread_sleep_interruptible tomorrow.

Nope, only native_ppoll_sleep path in native_sleep was
vulnerable to that, I think.  Instead, I will add an extra
FD which only the main thread sleeps on:

   https://80x24.org/spew/20181101103147.18505-1-e / 80x24.org/raw

One downside is (rare?) pthreads platforms without POSIX timers
will now have six pipe FDs (3 pipes) at startup (Ruby 2.5 had 4
pipe FDs).

Now, I don't know which platforms lack POSIX timers.  I know
FreeBSD has them; and Linux can even use cheaper eventfd.
(we also had CI failures due to system-wide pipe limit, so
I favor eventfd when possible)

Unsubscribe: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>