Re: 2.4.x, can't ptrace a task created with clone() ?
Daniel Jacobowitz (dan@debian.org)
Wed, 15 Jan 2003 15:27:51 -0500
On Wed, Jan 15, 2003 at 04:34:58PM +0000, Daniel Barlow wrote:
>
> Tested with 4.2.20 and 2.4.21-pre3, after PTRACE_ATTACHing to a
> process I created with clone(), wait() returns ECHILD . strace
> of the parent shows
>
> clone(child_stack=0x80599a8, flags=CLONE_VM) = 1292
> rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0
> rt_sigaction(SIGCHLD, NULL, {SIG_DFL}, 8) = 0
> rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
> nanosleep({5, 0}, {5, 0}) = 0
> ptrace(PTRACE_ATTACH, 1292, 0, 0) = 0
> --- SIGCHLD (Child exited) ---
> wait4(-1, 0xbffffbf0, 0, NULL) = -1 ECHILD (No child processes)
> write(2, "waitpid: No child processes\n", 28) = 28
>
> If I replace the clone in my test program with a fork, everything
> works as I expected. Is this a bug, or are my expectations at fault?
> if the latter, how _do_ I attach to one of my cloned children?
You did attach. But if you want to wait for a cloned child, you need
to use __WCLONE or __WALL.
--
Daniel Jacobowitz
MontaVista Software Debian GNU/Linux Developer
-
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/