On Thu, Mar 10, 2011 at 12:26:08PM +0100, Denys Vlasenko wrote:
[...]
> Show job control stop differently from signal notification
>
> * strace.c (trace): Query PTRACE_GETSIGINFO on stop signals,
> if it fails, show "--- stopped by SIGFOO ---"
> to indicate that tracee is in job control stop now.
>
> --- strace.0/strace.c 2011-02-14 20:11:45.690110153 +0100
> +++ strace.1/strace.c 2011-03-10 12:15:14.259222703 +0100
> @@ -2626,6 +2626,7 @@ Process %d attached (waiting for parent)
> }
> if (cflag != CFLAG_ONLY_STATS
> && (qual_flags[WSTOPSIG(status)] & QUAL_SIGNAL)) {
> + int in_job_control_stop;
> unsigned long addr = 0;
> long pc = 0;
> #if defined(PT_CR_IPSR) && defined(PT_CR_IIP) && defined(PT_GETSIGINFO)
> @@ -2649,8 +2650,25 @@ Process %d attached (waiting for parent)
> si.si_addr;
> }
> #endif
> + in_job_control_stop = 0;
> + if (WSTOPSIG(status) == SIGSTOP ||
> + WSTOPSIG(status) == SIGTSTP ||
> + WSTOPSIG(status) == SIGTTIN ||
> + WSTOPSIG(status) == SIGTTOU) {
> + /*
> + * PTRACE_GETSIGINFO fails if this is
> + * genuine *stop* notification,
> + * not *signal* notification
> + */
> + siginfo_t si;
> + if (ptrace(PTRACE_GETSIGINFO, pid,
> + 0, &si) != 0)
> + in_job_control_stop = 1;
> + }The more I look at this special handling for job control stop signals, the more I think something is going wrong. Why not to differentiate output format just depending on PTRACE_GETSIGINFO success or failure, without special handling for stop signals? For example, http://strace.git.sourceforge.net/git/gitweb.cgi?p=strace/strace;a=shortlog;h=ldv/trace-siginfo It's a bit intrusive, so I'm not sure it should go before the release, though. P.S. While testing these changes, I've spotted a bug. Try to run "cat > /dev/null & strace -p $!", it looks like some stop signals are not actually delivered to traced processes. -- ldv
pgpU3DsSlPOtL.pgp
Description: PGP signature
------------------------------------------------------------------------------ Colocation vs. Managed Hosting A question and answer guide to determining the best fit for your organization - today and in the future. http://p.sf.net/sfu/internap-sfd2d
_______________________________________________ Strace-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/strace-devel
