Messages in this thread | | | Date | Sat, 29 Oct 2011 16:43:15 +0200 | From | Oleg Nesterov <> | Subject | Re: [PATCH] exec: log when wait_for_dump_helpers aborts due to a signal |
| |
On 10/28, Andrew Morton wrote: > > Well. Neil's changelog for 61be228a06dc6e8662 is quite nice and tells > us everything we could possibly want to know, except for why it tests > sgnal_pending() :(
In short, signal_pending() should not be here. It only reflects the fact that do_coredump() needs the fixes (and can't resist, I sent the patch several years ago, but it was ignored ;)
There are 2 reasons. if signal_pending() == T then:
- pipe_wait() is pointless, it won't block. We do not want a busywait loop.
- And probably even wait_for_dump_helpers() is pointless, it is quite possible that pipe_write() already failed before and the reader doesn't know this.
What I think we should do:
- Fix this code, it should not react to signals.
- But! at the same time the explicit SIGKILL should stop the coredump. It can take a lot of time/resources.
This also makes it oom-killable, and this is important.
- If we dump to the pipe, then perhaps it makes sense to send a signal to the pipe reader in the latter case, but this is a bit offtopic.
I'll try to redo my old patches for 3.2 once I have the time. There are some nasty problems which I forgot, _iirc_ this is not that trivial.
Oleg.
| |