Re: [2.6.27.24] Kernel coredump to a pipe is failing
- From: Oleg Nesterov <oleg@xxxxxxxxxx>
- Date: Wed, 27 May 2009 20:31:09 +0200
On 05/26, Andi Kleen wrote:
When a signal happens during core dump the core dump to a pipe
can fail, because the write returns short, but the ELF core dumpers
cannot handle that.
There's no reason to handle signals during core dumping, so just
block them all.
Actually, I think there is a strong reason to handle signals during
core dumping. The coredump can take a lot of time/resources, not good
it looks like unkillable procees to users.
Please look at
killable/interruptible coredumps
http://marc.info/?l=linux-kernel&m=121665710711931
at least, I think SIGKILL should terminate core dumping.
Open issue: ELF puts blocked signals into the core dump and
that will be always fully blocked now. Need to save it somewhere?
--- linux-2.6.30-rc5-ak.orig/fs/exec.c 2009-05-14 11:46:24.000000000 +0200
+++ linux-2.6.30-rc5-ak/fs/exec.c 2009-05-26 22:22:12.000000000 +0200
@@ -1760,6 +1760,12 @@
goto fail;
}
+ /* block all signals */
+ spin_lock_irq(¤t->sighand->siglock);
+ sigfillset(¤t->blocked);
+ /* No recalc sigpending */
+ spin_unlock_irq(¤t->sighand->siglock);
Perhaps it makes sense to do
--- a/kernel/signal.c
+++ b/kernel/signal.c
@@ -644,6 +644,7 @@ static int prepare_signal(int sig, struc
/*
* The process is in the middle of dying, nothing to do.
*/
+ return 0;
} else if (sig_kernel_stop(sig)) {
/*
* This is a stop signal. Remove SIGCONT from all queues.
instead, this was discussed before. This way the exiting/coredumping
task ignores all signals, and we cab simplify complete_signal() a bit.
This all needs more discussion, but imho for now something like
Paul's patch http://marc.info/?l=linux-kernel&m=124340506200729
is the best workaround. Note that we have the same dump_write()
in binfmt_elf.c and binfmt_aout.c, perhaps it makes sense to
create coredump_file_write() helper in fs/exec.c.
Oleg.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
- Follow-Ups:
- Re: [2.6.27.24] Kernel coredump to a pipe is failing
- From: Oleg Nesterov
- Re: [2.6.27.24] Kernel coredump to a pipe is failing
- From: Andi Kleen
- Re: [2.6.27.24] Kernel coredump to a pipe is failing
- References:
- Re: [2.6.27.24] Kernel coredump to a pipe is failing
- From: Paul Smith
- Re: [2.6.27.24] Kernel coredump to a pipe is failing
- From: Andi Kleen
- Re: [2.6.27.24] Kernel coredump to a pipe is failing
- Prev by Date: Re: LOCK prefix on uni processor has its use
- Next by Date: Re: [PATCH v2] tracing/workqueue: Get rid of searching last executed worklet in probe_worklet_complete()
- Previous by thread: Re: [2.6.27.24] Kernel coredump to a pipe is failing
- Next by thread: Re: [2.6.27.24] Kernel coredump to a pipe is failing
- Index(es):
Relevant Pages
|