Hi Rob, Martin, et.al.

I've prototyped (for 9) a thread reaper[1] that uses a single thread to wait for exiting
processes and calling back to the process with the exit status.
the interesting part is getting the exit status back to the Process that needs it
It needs more testing and hardening.

I had not considered using a signal handler for SIGCHLD but that's an option,
though we need to be very careful about thread usage.

Roger

p.s. comments on the single thread reaper appreciated (in a new thread)
[1]  http://cr.openjdk.java.net/~rriggs/webrev-waitpid/




On 3/24/2014 12:38 AM, Rob McKenna wrote:
Hi folks,

Roger Riggs (cc'd) may want to chip in here as he's looking at the reaper thread arrangement in 9 at the moment.

On another note, I too support the merging of those files. I didn't think there was much appetite for it at the time so I must admit this fell down my todo list. Looking at this bug did remind me that its something worth trying though. As per Alan's mail, I'm going to tackle it separately if you folks don't mind. I'll have a look at Peter's changes (thanks Peter!) as soon as I can and see about getting them in.

    -Rob

On 23/03/14 22:30, Martin Buchholz wrote:



On Sun, Mar 23, 2014 at 2:34 AM, Martin Buchholz <marti...@google.com <mailto:marti...@google.com>> wrote:


    We have also thought about whether having reaper threads is
    necessary.  The Unix rule is that child processes should be
    waited for, and some thread needs to do that.  There's no way to
    wait for a set of child pids, or to specify a "completion
    handler".  Well, you might be able to get the newish waitid() to
    do what you want, but it looks like it's not sufficient when java
    is running inside a process that might do independent subprocess
    creation outside of the JVM.


Actually, I take it back. With sufficient work, it looks like you can get SIGCHLD to give you pid information in siginfo_t si_pid, and that can be used to trigger the reaping. It looks like waitpid is "async-signal-safe", so we can call it from our signal handler.

While we're at it we can fix SIGCHLD handling to do signal chaining, as with other signals.


Reply via email to