```
Up to 14 patches, now, but I think most problems are solved,
at least on Linux.  FreeBSD 11.1 is close

Links within:

  https://80x24.org/spew/20180626093817.1533-1-e / 80x24.org/

One potential problem is stuff like:

      pids = []
      pids << Process.fork { Process.exit! 2 }
      pids << Process.fork { Process.exit! 1 }
      pids << Process.fork { Process.exit! 0 }
      Process.waitall

  Can return extra PIDs with MJIT enabled, because exit! cannot
  cleanup and wait for any processes.  I haven't been able to
  reproduce the problem lately, though...

* Implemented rb_grantpt for ext/pty use (to temporarily disable SIGCHLD)

* reinstated non-SIGCHLD code path for rb_waitpid

* split Process.wait(PID > 0) and Process.wait(PID <= 0) threads
  to prioritize (PID > 0) waiters.  This was an important change.

* avoid spurious wakeups in main thread if no trap(:CHLD) users
  (needed to get OpenSSL::PKey::RSA.new working with rubygems test
   and test/-ext-/gvl/test_last_thread.rb to pass on Linux)

  In retrospect, we could probably be avoiding spurious main thread
  wakeups for all signals when nobody registers trap(sig).
  However, this isn't effective on FreeBSD...  We may need to block
  non-VTALRM signals in main thread, and only enable interrupts in
  tiner-thread.

The actual history is a mess, will need to cleanup and do more
documenting before committing.  MJIT takes forever to test :<

I am happy that ext/pty/pty.c is cleaner with the rb_grantpt change, now :)

The following changes since commit 4444025d16ae1a586eee6a0ac9bdd09e33833f3c:

  mjit_compile.inc.erb: drop unnecessary variable (2018-06-25 14:15:26 +0000)

are available in the Git repository at:

  git://80x24.org/ruby.git mjit-chld-wip

for you to fetch changes up to 6545efeee931baa42f38d9b86941c0e5d30c1044:

  process.c (rb_waitpid): reimplement non-SIGCHLD code path (2018-06-26 09:09:21 +0000)

```

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