Re: heavy handed exit() in latest BK

From: Linus Torvalds (torvalds@transmeta.com)
Date: Sat Feb 08 2003 - 21:00:01 EST


On Sun, 9 Feb 2003, Anton Blanchard wrote:
>
> From BK late last night (has everything except the most recent 2
> sound changesets)
>
> kernel BUG at kernel/exit.c:710!
>
> which is:
>
> do_exit()
> ...
> schedule();
> BUG();
> /* Avoid "noreturn function does return". */
> for (;;) ;
> }
>
> Oops. In a police lineup Id finger the signal changes.

Interesting. Especially as the last thing exit_notify() does (just a few
lines above the schedule()) is to do

        tsk->state = TASK_ZOMBIE;

and that schedule() _really_ really shouldn't return. Regardless of any
signal handler changes.

By then we also have local interrupts disabled, and we've explicitly
disabled preemption, so I don't see how anything could ever wake us up any
more.

But yes, I'd agree with your line-up, if for no other reason than the fact
that I don't really see anything else even _remotely_ likely to muck
around with process state.

I don't see this (obviously), but could you make "try_to_wake_up()" (in
kernel/sched.c) do a

        BUG_ON(p->state & TASK_ZOMBIE);

to see if somebody tries to wake up a zombie task (maybe the signal
handler stuff does that under some unlucky circumstances).

And then the call trace would be very interesting indeed if the above bug
triggers.. (and unlike the do_exit() bug, the tri_to_wake_up() thing
should clearly pinpoint where the problem actually happens, knock wood).

                Linus

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Sat Feb 15 2003 - 22:00:20 EST