Gerd Knorr wrote:
On Thu, Aug 04, 2005 at 03:02:51PM -0700, Andrew Morton wrote:

Roland McGrath <[EMAIL PROTECTED]> wrote:

That's wrong.  It has to be done only by the last thread in the group to go.
Just revert Ingo's change.


OK..

+++ 25-akpm/kernel/exit.c       Thu Aug  4 15:01:06 2005
@@ -829,8 +829,10 @@ fastcall NORET_TYPE void do_exit(long co
-       if (group_dead)
+       if (group_dead) {
+               del_timer_sync(&tsk->signal->real_timer);
                acct_process(code);
+       }
+++ 25-akpm/kernel/posix-timers.c       Thu Aug  4 15:01:06 2005
@@ -1166,7 +1166,6 @@ void exit_itimers(struct signal_struct *
-       del_timer_sync(&sig->real_timer);


That one fixes it for me.

There are other concerns. Let me see if I understand this. A thread (other than the leader) can exec and we then need to change the real_timer to wake the new task which will NOT be using the same task struct.

My looking at the code shows that the thread leader can exit and then stays around as a zombi until the last thread in the group exits. If an alarm comes during this wait I suspect it will wake this zombi and cause problems. So, don't we need to also change real_timer's task when the exiting task is the real_timer wake up task, assigning it to some other member of the group? Note, I don't say just if it is the group leader...

Then when we finally release the signal structure, we can "del" the timer.

Did I miss something here?

--
George Anzinger   george@mvista.com
HRT (High-res-timers):  http://sourceforge.net/projects/high-res-timers/
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to