Oleg Nesterov
821c7de719
exit_notify: fix kill_orphaned_pgrp() usage with mt exit
...
1. exit_notify() always calls kill_orphaned_pgrp(). This is wrong, we
should do this only when the whole process exits.
2. exit_notify() uses "current" as "ignored_task", obviously wrong.
Use ->group_leader instead.
Test case:
void hup(int sig)
{
printf("HUP received\n");
}
void *tfunc(void *arg)
{
sleep(2);
printf("sub-thread exited\n");
return NULL;
}
int main(int argc, char *argv[])
{
if (!fork()) {
signal(SIGHUP, hup);
kill(getpid(), SIGSTOP);
exit(0);
}
pthread_t thr;
pthread_create(&thr, NULL, tfunc, NULL);
sleep(1);
printf("main thread exited\n");
syscall(__NR_exit, 0);
return 0;
}
output:
main thread exited
HUP received
Hangup
With this patch the output is:
main thread exited
sub-thread exited
HUP received
Signed-off-by: Oleg Nesterov <oleg@tv-sign.ru>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2008-03-03 14:53:16 -08:00
..
2008-02-19 10:43:58 +01:00
2008-02-23 10:40:04 -08:00
2008-02-29 18:46:50 +01:00
2008-02-09 23:27:01 -08:00
2008-01-07 14:55:37 -08:00
2008-02-14 21:13:33 -08:00
2008-03-01 07:16:06 -05:00
2007-10-21 02:37:45 -04:00
2008-02-14 21:13:33 -08:00
2008-03-01 07:16:06 -05:00
2008-01-30 13:33:08 +01:00
2008-02-05 09:44:20 -08:00
2007-10-19 11:53:36 -07:00
2008-02-23 17:13:25 -08:00
2008-02-10 10:48:03 +01:00
2007-05-09 12:30:49 -07:00
2008-02-08 09:22:41 -08:00
2008-02-08 09:22:24 -08:00
2007-10-18 14:37:28 -07:00
2007-10-18 14:37:24 -07:00
2007-10-18 14:37:26 -07:00
2008-03-03 14:53:16 -08:00
2008-01-29 17:13:18 +11:00
2008-02-14 21:13:33 -08:00
2008-02-23 17:12:15 -08:00
2008-02-23 17:12:15 -08:00
2008-02-14 22:08:30 +01:00
2008-02-08 09:22:29 -08:00
2008-02-06 10:41:01 -08:00
2008-01-25 21:08:29 +01:00
2008-01-25 21:08:33 +01:00
2008-02-07 08:42:25 -08:00
2007-07-16 09:05:50 -07:00
2008-02-14 21:13:32 -08:00
2008-02-06 10:41:11 -08:00
2008-01-24 20:40:40 -08:00
2008-01-25 21:08:33 +01:00
2008-01-25 21:08:34 +01:00
2006-12-07 08:39:43 -08:00
2007-10-11 22:11:11 +02:00
2008-02-25 23:03:02 +01:00
2008-02-08 09:22:39 -08:00
2008-02-23 17:12:14 -08:00
2008-02-21 15:27:08 -08:00
2008-02-08 09:22:31 -08:00
2006-07-03 15:27:01 -07:00
2008-02-08 09:22:31 -08:00
2006-07-03 15:27:04 -07:00
2008-02-06 10:41:02 -08:00
2007-10-19 11:53:37 -07:00
2008-02-08 09:22:23 -08:00
2008-02-06 22:07:51 -05:00
2008-02-08 09:22:41 -08:00
2008-02-08 09:22:23 -08:00
2008-02-08 09:22:31 -08:00
2008-02-05 09:44:22 -08:00
2008-02-08 09:22:41 -08:00
2008-02-14 22:08:30 +01:00
2008-02-26 07:42:37 -08:00
2008-02-08 09:22:34 -08:00
2008-02-08 09:22:26 -08:00
2008-01-25 21:08:24 +01:00
2008-02-13 16:21:18 -08:00
2008-01-25 21:08:24 +01:00
2008-02-29 20:21:13 +01:00
2008-01-25 21:08:02 +01:00
2008-02-06 10:41:07 -08:00
2008-02-07 08:42:18 -08:00
2008-02-08 19:52:48 +11:00
2008-02-08 09:22:41 -08:00
2008-02-08 09:22:41 -08:00
2006-07-03 15:27:01 -07:00
2008-01-24 20:40:40 -08:00
2008-02-13 15:45:36 +01:00
2006-07-03 15:27:01 -07:00
2007-12-18 15:21:13 +01:00
2008-01-25 21:08:35 +01:00
2008-02-25 16:34:17 +01:00
2008-01-25 21:08:29 +01:00
2008-02-13 15:45:40 +01:00
2007-11-28 15:52:56 +01:00
2008-02-25 16:34:17 +01:00
2007-07-16 09:05:50 -07:00
2008-02-13 16:21:18 -08:00
2008-02-29 18:46:50 +01:00
2008-02-29 18:46:53 +01:00
2008-01-30 13:31:20 +01:00
2008-02-06 10:41:02 -08:00
2006-07-03 15:27:02 -07:00
2008-02-06 10:41:08 -08:00
2008-02-05 09:44:07 -08:00
2008-02-08 09:22:29 -08:00
2008-02-08 09:22:31 -08:00
2008-02-13 16:21:18 -08:00
2007-11-14 18:45:44 -08:00
2008-02-06 10:41:11 -08:00
2008-02-08 09:22:39 -08:00
2008-02-12 14:29:26 -08:00
2008-02-08 09:22:31 -08:00
2007-10-18 14:37:28 -07:00
2007-05-08 11:15:07 -07:00
2008-02-08 09:22:23 -08:00
2008-02-13 15:45:40 +01:00
2007-11-29 09:24:53 -08:00
2007-09-19 11:24:17 -07:00
2008-02-08 09:22:31 -08:00
2008-02-08 09:22:37 -08:00