Messages in this thread Patch in this message | | | From | Scott James Remnant <> | Subject | [PATCH] coredump: wait on the core pattern umh at least once | Date | Fri, 28 Oct 2011 13:11:28 -0700 |
| |
If a thread crashes as a result of a signal on the thread group leader that signal can still be pending, which means the loop in wait_for_dump_helpers() falls straight though.
This can mean that the crashing process is reaped before any core pattern user-mode helper is run, leaving it without entries in /proc to look through.
While the helper obviously has to deal with that, tweaking this loop so it runs at least one iteration even in that case helps a lot.
Signed-off-by: Scott James Remnant <scott@netsplit.com> --- fs/exec.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/fs/exec.c b/fs/exec.c index 25dcbe5..8959d304 100644 --- a/fs/exec.c +++ b/fs/exec.c @@ -2030,11 +2030,11 @@ static void wait_for_dump_helpers(struct file *file) pipe->readers++; pipe->writers--; - while ((pipe->readers > 1) && (!signal_pending(current))) { + do { wake_up_interruptible_sync(&pipe->wait); kill_fasync(&pipe->fasync_readers, SIGIO, POLL_IN); pipe_wait(pipe); - } + } while ((pipe->readers > 1) && (!signal_pending(current))); pipe->readers--; pipe->writers++; -- 1.7.3.1
| |