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/