[ruby-cvs:72537] normal:r65437 (trunk): process.c: implement rb_f_system without toggling ruby_nocldwait

normal at ruby-lang.org normal at ruby-lang.org
Tue Oct 30 10:34:48 JST 2018

normal	2018-10-30 10:34:48 +0900 (Tue, 30 Oct 2018)

  New Revision: 65437


    process.c: implement rb_f_system without toggling ruby_nocldwait
    Following how mjit_worker.c currently works, rb_f_system
    now ensures the VM-wide waitpid lists is locked before
    creating a new process via fork/vfork.
    This ensures other rb_waitpid callers cannot steal work and
    there are no possible race conditions from toggling
    ruby_nocldwait without the use of atomics.
    This sets us up for implementing MJIT process management
    logic using normal Ruby APIs prepares us for VM-wide
    asynchronous/event-base waitpid which can allow MJIT to
    work without worker threads.
    Take 2: set waitpid_state.pid on platforms w/o fork.

  Modified files:

More information about the ruby-cvs mailing list