Subject: Re: make: adding .KILL ?
To: Simon J. Gerraty <sjg@crufty.net>
From: Christos Zoulas <christos@zoulas.com>
List: tech-toolchain
Date: 11/02/2006 08:24:00
On Nov 1, 4:26pm, sjg@crufty.net (Simon J. Gerraty) wrote:
-- Subject: Re: make: adding .KILL ?
|
| >| > I don't like the SIGKILL and I don't understand the reason for the sleep()s
| >|
| >| The sleeps are there to give the process time to get scheduled (and exit)
| >| before the kill -9.
|
| >sched_yield()?
|
| Does such a thing exist outside of netbsd?
It is POSIX:
http://opengroup.org/onlinepubs/007908799/xsh/sched_yield.html
| >| However the code ought to send all the jobs SIGTERM, then wait (and reap)
| >| a bit for them to die, then (maybe) send SIGKILL - rather than sleeping
| >| 2 seconds for every job.
|
| >I agree. I think process groups is a nice way to manage this.
|
| Agreed. At this stage I'm as much interested in feedback on the
| general usefulness of a .KILL special src. It's useful to me but
| maybe not others.
|
| Unless something changed recently, I think make is already signaling the
| relevant process groups btw.
I am not sure, I'll have to check.
| >| In any case make won't be looking for a job-token unless it has has
| >| additional tasks to run (and hasn't reached its own job limit).
| >| So you'd also have to catch SIGTERM itself and attempt to do the tidy up.
| >| That will fall fould because the parent make is likely to SIGKILL it
| >| while it is still waiting to terminate any children that are ignoring
| >| SIGTERM.
| >|
| >| You also need to treat the exited jobs in the normal way - ie delete
| >| the (possibly partially made) target.
|
| >Yes, that too :-)
|
| IIRC we've already deposited an abort token, before starting the slaughter.
| Would it be appropriate to just SIGINT everyone and then wait for them to
| bail - ie. don't use Job_AbortAll() for this, but something similar.
| Worst case would be similar behavior to current.
|
| I used Job_AbortAll() for this patch just to verify it would solve my
| problem (of build continuing long after it was doomed).
|
Ok.
christos