fake_execve() and -i option
Johan Aurér
johan.aurer at axis.com
Thu Aug 19 09:03:07 UTC 2004
Hi
This may be a known bug, but I've noticed that running strace with -i
("print instruction pointer at time of syscall") can result in a failed
upeek() call at the very beginning:
# strace-4.5.6/strace -i /bin/ls
upeek: ptrace(PTRACE_PEEKUSER,12475,48,0): No such process
[????????] execve("/bin/ls", ["/bin/ls"], [/* 46 vars */]) = 0
....
I haven't seen this problem under i386/Linux 2.6.x, but it happens
frequently under 2.4.x (and also under CRIS/Linux).
What happens is that when fake_execve() is called, the child process may
or may not have stopped (it stops as a result of execve). If it hasn't
stopped then obviously you can't do PTRACE_PEEKUSER. But with -i, strace
tries to read the PC anyway causing the failed upeek().
Actually, I don't think strace should be trying to read the PC here in the
first place. Printing the PC for the initial execve syscall doesn't seem
very useful to me.
--
aurer at axis.com
More information about the Strace-devel
mailing list