Activity log for bug #103133

Date Who What changed Old value New value Message
2007-04-05 01:49:50 Andrew Bennetts bug added bug
2007-04-05 01:51:18 Andrew Bennetts bug added attachment 'sigstop-demo.py' (sigstop-demo.py)
2007-04-09 20:01:13 Micah Cowan strace: status Unconfirmed Rejected
2007-04-09 20:01:13 Micah Cowan strace: statusexplanation This doesn't seem to be a bug. From strace(1), -f option: If the parent process decides to wait(2) for a child that is currently being traced, it is suspended until an appropriate child process either terminates or incurs a signal that would cause it to terminate (as determined from the child’s current signal dis‐ position). of course, if that child happens to be strace itself, the "until" bit probably ceases to apply. I'm guessing the call to proc.communicate() involves wait()ing. (Closing bug for now; if further information arises that suggests that this may still be a bug, please feel free to reopen.)
2007-04-15 16:17:26 Andrew Bennetts strace: status Rejected Unconfirmed
2007-04-15 16:17:26 Andrew Bennetts strace: statusexplanation This doesn't seem to be a bug. From strace(1), -f option: If the parent process decides to wait(2) for a child that is currently being traced, it is suspended until an appropriate child process either terminates or incurs a signal that would cause it to terminate (as determined from the child’s current signal dis‐ position). of course, if that child happens to be strace itself, the "until" bit probably ceases to apply. I'm guessing the call to proc.communicate() involves wait()ing. (Closing bug for now; if further information arises that suggests that this may still be a bug, please feel free to reopen.) You are correct that proc.communicate() invokes wait(), or rather waitpid(), but "proc" here is the strace process itself, which is not being traced, so should be irrelevant. Perhaps I'm missing something, but I don't think that part of the man page applies to this case: there's no *child* being traced that is being wait()ed for. All there is is a thread, and the parent never wait()s or joins it while strace is running, so the part of the man page you quote doesn't seem to be relevant. Regardless, the current behaviour seems to make it impossible for a program to reliably call strace -f on itself, which I think is a desirable thing to support. For debugging purposes, being able to wrap a function call with something that starts & stops strace would be quite handy. I hope you don't mind me putting the status back to Unconfirmed for the moment.
2007-05-16 22:36:03 Micah Cowan bug assigned to strace (Debian)
2007-05-18 01:14:43 Micah Cowan strace: status Unconfirmed Confirmed
2007-05-18 01:14:43 Micah Cowan strace: importance Undecided Medium
2007-05-18 01:14:43 Micah Cowan strace: statusexplanation You are correct that proc.communicate() invokes wait(), or rather waitpid(), but "proc" here is the strace process itself, which is not being traced, so should be irrelevant. Perhaps I'm missing something, but I don't think that part of the man page applies to this case: there's no *child* being traced that is being wait()ed for. All there is is a thread, and the parent never wait()s or joins it while strace is running, so the part of the man page you quote doesn't seem to be relevant. Regardless, the current behaviour seems to make it impossible for a program to reliably call strace -f on itself, which I think is a desirable thing to support. For debugging purposes, being able to wrap a function call with something that starts & stops strace would be quite handy. I hope you don't mind me putting the status back to Unconfirmed for the moment.
2007-05-19 06:57:15 Bug Watch Updater strace: status Unknown Unconfirmed
2010-11-11 21:02:44 Micah Cowan removed subscriber Micah Cowan
2010-11-23 04:53:19 Andrew Bennetts strace (Ubuntu): status Confirmed Fix Released
2019-10-25 07:09:57 Vincent Ladeuil removed subscriber Vincent Ladeuil