![]() | |||||||||||||
Messages in this thread |
On 04/11, Roland McGrath wrote: >> > So, de_thread() sets SIGNAL_GROUP_EXEC and sends SIGKILL to other thereads. > > > > Sub-thread receives the signal, and calls get_signal_to_deliver->do_group_exit. > > do_group_exit() calls zap_other_threads(SIGNAL_GROUP_EXIT) because there is no > > SIGNAL_GROUP_EXIT set. zap_other_threads() notices SIGNAL_GROUP_EXEC, wakes up > > execer, and changes ->signal->flags to SIGNAL_GROUP_EXIT. > > > > de_thread() re-locks sighand, sees !SIGNAL_GROUP_EXEC and goes to 'dying:'.> > That is what I intend. The exec'ing thread backs out and processes its SIGKILL. > It sounds like you are calling this scenario a problem, but I don't know why. Oh, probably I missed something. But as I can see it, MT exec can never succeed! Once again. Process starts exec, it has no pending signals. Execer thread sets SIGNAL_GROUP_EXEC, sends SIGKILL to other threads, and waits them to die. The first thread which dequeues SIGKILL will change SIGNAL_GROUP_EXEC to SIGNAL_GROUP_EXIT, thus aborting exec. Sorry for persistance if I really misunderstand this patch. Oleg. - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/ | ||||||||||||
| Last update: 2006-04-11 07:53 [from the cache] ©2003-2008 | |||||||||||||