Re: [PATCH] Re: 2.6.12: itimer_real timers don't survive execve()any more

From: George Anzinger
Date: Fri Aug 05 2005 - 10:46:54 EST


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

Roland McGrath <roland@xxxxxxxxxx> 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@xxxxxxxxxx
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 majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/