On 04/15/2014 12:04 AM, David M. Lloyd wrote:
There's already such a race in current implementation of
Process.terminate(). It admittedly only concerns a small window between
process exiting and the reaper thread managing to signal this state to
the other threads wishing to terminate it at the same time, so it could
happen that a KILL/TERM signal is sent to an already deceased PID which
was re-used, but it doesn't happen in practice since PIDs are not
re-used very soon typically.

It seems like it would be trivial enough to introduce a synchronization between the reaper thread and whatever API signals child processes.

Not really. Reaper thread(s) wait in system call (waitpid()), so holding a mutex while waiting would prevent other threads from killing the process. After the call returns, the PID is already released and could theoretically be re-used. But in practice this is really not a problem.


Regards, Peter

Reply via email to