Messages in this thread | | | Date | Thu, 24 Feb 2011 18:13:52 +0300 | From | Stas Sergeev <> | Subject | Re: [path][rfc] add PR_DETACH prctl command |
| |
24.02.2011 16:29, Oleg Nesterov wrote: >> And I really think there is no other >> way to daemonize the process with threads, than to use something >> like this patch, or is there? > Depends on what "daemonize" means. Even with this patch, setsid() > after PR_DETACH can fail because we do not change the pids and > the caller can still be pgrp leader. Yes, I am using TIOCNOTTY ioctl instead. It doesn't detach the entire group from tty though, but the plan is to implement also TIOCNOTTY_GRP, in case PR_DETACH is done.
> And. What if the parent of PR_DETACH caller blocks or ignores > SIGCHLD or simply doesn't call do_wait()? The caller can run with > PR_DETACH set without any effect "forever". I am currently rewriting the patch to solve this all. What I am trying to do now, is to reparent directly in prctl(), but delay the list_move_tail(&p->sibling, &p->real_parent->children); to the wait() call. If this is a feasible solution, I'll post the new patch.
> So, to be honest, I do not think this idea will be accepted, and I don't > really understand your motivation. But once again, I never argue with the > "we need this feature" requests, no need to convince me. Lets see if the clean implementation is possible first. :)
> The problem is that ptrace uses this ->exit_code member as well. > Suppose that the (ptraced) task calls PR_DETACH and, say, recieves > a signal after that. See ptrace_signal(). Also do_signal_stop() seems to alter it. Do you mean right now it can't happen that multiple events alter the exit_code, and the parent notices only the last one? In this case I need to add a separate variable.
> I understand why you added PF_EXITING. And, once again, this is not > right afaics. The current condition is more or less "random" and mostly > historical, although correct. If we want to take PF_EXITING into account, > we should just add BUG_ON(!(tsk->flags& PF_EXITING)). IOW, it is just > wrong to call this function unless this tsk exits. OK, I'll address also this.
Thanks for your time, I am hoping to post the patch that addresses the pointed problems.
| |