On 04/28, Dave Anderson wrote: > > > IOW. with the patch above the code actually does > > > > if (ACTIVE() && !INSTACK(...)) { > > if (LOCAL_ACTIVE() && file_exists(...)) > > error("invalid/stale stack pointer"); > > else > > error("task no longer exists\n"); > > } > > > > is it wrong? > > > > I thought that !INSTACK() here likely means the task has gone, but back_trace() > > does the additional file_exists() to verify this, and "invalid/stale stack pointer" > > error means that something was wrong. > > > > No? > > I can't even remember -- that code's been in place for so long I'd prefer to just > leave it as-is, and for you to just add something like this: > > if (ACTIVE() && !INSTACK(esp, bt)) { > + if (!(LOCAL_ACTIVE()) } > + error(INFO, "whatever error message you'd like\n"); > + return; > + } OK. ------------------------------------------------------------------------------- Subject: [PATCH v3 03/10] back_trace: don't check /proc if !LOCAL_ACTIVE() Obviously the /proc/$tc->pid check can only make sense if LOCAL_ACTIVE(). Signed-off-by: Oleg Nesterov <oleg@xxxxxxxxxx> --- kernel.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/kernel.c b/kernel.c index a6fa7a6..c82b854 100644 --- a/kernel.c +++ b/kernel.c @@ -2901,6 +2901,10 @@ back_trace(struct bt_info *bt) } if (ACTIVE() && !INSTACK(esp, bt)) { + if (!LOCAL_ACTIVE()) { + error(INFO, "task no longer exists\n"); + return; + } sprintf(buf, "/proc/%ld", bt->tc->pid); if (!file_exists(buf, NULL)) error(INFO, "task no longer exists\n"); -- 2.5.0 -- Crash-utility mailing list Crash-utility@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/crash-utility