strace -f not following child process

Denys Vlasenko dvlasenk at redhat.com
Tue Jul 9 17:30:47 UTC 2013


On 07/09/2013 09:17 AM, Florian Kelbert wrote:
> 
> 
> On 08.07.2013 10:00, Denys Vlasenko wrote:
>> On 07/05/2013 01:18 PM, Florian Kelbert wrote:
>>> Hi all,
>>>
>>> while trying to strace nginx (http://nginx.org/), using strace -f, I
>>> realized that strace fails to trace a forked child process.
>>
>> Which version of strace and kernel do you have?
> 
> I compiled strace 4.8 from the sources using ./configure && make; using Ubuntu 13.04, kernel 3.8.0-25
> 
>>
>> Can you show the same event with -d option added to strace
>> command line? (the debug output goes to stderr, not -o LOGFILE).
>>
> 
> ./strace -f -d ~/nginx/sbin/nginx
> 
> http://pastebin.com/ZwHXHrWa
> 
> Process 7428 is born in line 518 and survives the subsequent exit_group() by process 7427, as the output of ps shows:

The log shows that exit_group(0) is indeed called immediately after clone(),
making "strace exited too early to see the child" theory feasible.

Can you test this theory by replacing

	while (nprocs != 0)

with

	while (1)

in strace.c in function trace()?

The exit from trace loop will then happen when we receive ECHILD.
In my testing it worked.






More information about the Strace-devel mailing list