On Fri, Mar 26, 2010 at 01:45:22PM +0100, Grzegorz Nosek wrote: > On Fri, Mar 26, 2010 at 04:53:57AM -0700, Matt Helsley wrote: > > Yup. strace would need to be modified to use that. I tried that and it still > > won't work -- I seem to recall it didn't work because strace uses pid values > > obtained from the wait syscall too. To make it work we'd need to be able to > > translate those pids in userspace. That's do-able from userspace if you trace > > all forks descending from the pidns init task. But it's not do-able for > > simple attaches. That's why I was thinking Eric's setns() might be able to > > help if strace used it to enter the tracee's pid namespace whenever we need to. > > > > gdb often doesn't use the same methods but has similar problems with pid > > namespaces. > > Hmm, is there a good reason why strace does not use the data explicitly > provided by the kernel but instead second-guesses it from syscall return > values? I don't know anything about ptrace, really, but I'd expect the strace isn't linux-only. Checking the syscall return values may be seen as being more portable. At least that's my guess. That said there are plenty of #ifdefs in strace and patching it to use GETEVENTMSG is quite a small patch. However, as I said, that still doesn't "fix" strace so that it can be used to trace tasks in child pid namespaces. Especially when the traced tasks are more than one namepace deeper. :( > kernel to provide the tracer with out-of-band information otherwise > taken from clone/waitpid/other syscalls? I don't think the kernel provides special out-of-band methods for fetching pids related to traced tasks except during fork and clone. Not wait*(). The rest of ptrace tends to be focused on reading/writing registers/memory and managing signal delivery. Cheers, -Matt Helsley _______________________________________________ Containers mailing list Containers@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linux-foundation.org/mailman/listinfo/containers