Re: 2.4.x, can't ptrace a task created with clone() ?

From: Daniel Jacobowitz (dan@debian.org)
Date: Wed Jan 15 2003 - 15:27:51 EST


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/



This archive was generated by hypermail 2b29 : Wed Jan 15 2003 - 22:00:55 EST