diff -urNpd linux-3.0.44-vs2.3.2.5-fail/kernel/exit.c linux-3.0.44-vs2.3.2.5/kernel/exit.c --- linux-3.0.44-vs2.3.2.5-fail/kernel/exit.c 2012-10-02 22:44:29.000000000 -0500 +++ linux-3.0.44-vs2.3.2.5/kernel/exit.c 2012-10-02 22:51:20.000000000 -0500 @@ -1053,6 +1053,10 @@ NORET_TYPE void do_exit(long code) validate_creds_for_do_exit(tsk); + /* needs to stay after exit_notify() */ + exit_vx_info(tsk, code); + exit_nx_info(tsk); + preempt_disable(); exit_rcu(); @@ -1074,6 +1078,7 @@ NORET_TYPE void do_exit(long code) /* causes final put_task_struct in finish_task_switch(). */ tsk->state = TASK_DEAD; schedule(); + printk("bad task: %p [%lx]\n", current, current->state); BUG(); /* Avoid "noreturn function does return". */ for (;;)