On 1/17/22 11:31 AM, Eric W. Biederman wrote: > Mike Christie <michael.christie@xxxxxxxxxx> writes: > >> On 12/22/21 12:24 PM, Eric W. Biederman wrote: >>> All I am certain of is that you need to set >>> "args->exit_signal = -1;". This prevents having to play games with >>> do_notify_parent. >> >> Hi Eric, >> >> I have all your review comments handled except this one. It's looking like it's >> more difficult than just setting the exit_signal=-1, so I wanted to check that >> I understood you. > > [snip problems with exit_signal = -1] > >> >> What do you think? > > I was wrong. I appear to have confused the thread and the non-thread > cases. > > Perhaps I meant "args->exit_signal = 0". That looks like > do_notify_parent won't send it, and thread_group_leader continues to do > the right thing. That doesn't work too. exit_notify will call do_notify_parent but our parent, qemu, does not ignore SIGCHILD so we will not drop down in into this chunk: psig = tsk->parent->sighand; spin_lock_irqsave(&psig->siglock, flags); if (!tsk->ptrace && sig == SIGCHLD && (psig->action[SIGCHLD-1].sa.sa_handler == SIG_IGN || (psig->action[SIGCHLD-1].sa.sa_flags & SA_NOCLDWAIT))) { do_notify_parent will return false and so autoreap in exit_notify will be false. > > Baring any additional confusion on my part that cleanly solves the > problem of how not to send a signal from a child process cleanly. > > My apologies for sending you on a wild goose chase. > It's no problem. I learned a lot about signal handling :) _______________________________________________ Virtualization mailing list Virtualization@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linuxfoundation.org/mailman/listinfo/virtualization