[Bug 162774] strace ignores int3 SIGTRAP

bugzilla at redhat.com bugzilla at redhat.com
Wed Sep 24 13:05:19 UTC 2008


Please do not reply directly to this email. All additional
comments should be made in the comments box of this bug.


https://bugzilla.redhat.com/show_bug.cgi?id=162774





--- Comment #10 from Denys Vlasenko <dvlasenk at redhat.com>  2008-09-24 09:05:15 EDT ---
Created an attachment (id=317582)
 --> (https://bugzilla.redhat.com/attachment.cgi?id=317582)
Kernel patch to make ALL ptrace SIGTRAPs to be affected by
PTRACE_O_TRACESYSGOOD

The idea behind PTRACE_O_TRACESYSGOOD is to make it possible to distinguish
real SIGTRAP (like int3 instruction on x86) and ptrace generated one.

Current wording of ptrace manpage says that PTRACE_O_TRACESYSGOOD should affect
only PTRACE_SYSCALL related traps. This completely negates the whole idea of
PTRACE_O_TRACESYSGOOD, since now we can't detect other SIGTRAPs. In particular,
one which is emitted after successful execve().

I propose to re-formulate ptrace description so that PTRACE_O_TRACESYSGOOD
affects all ptrace-related SIGTRAPs which otherwise would be indistinguishable
from ordinary ones.

The patch implements this. The patch is against current git+utrace patch.

I tested it with strace patched with previously attatched strace patch and
verified that ugly workaround to detect post-execve() SIGTRAP is not needed
anymore.

This is where it is fiexd for utrace:

-       send_sig(SIGTRAP, task, 0);
+       send_sig(SIGTRAP | ((current->ptrace & PT_TRACESYSGOOD) ? 0x80 : 0),
+               task, 0);

and ordinary ptrace:

-       if (!ptrace_event(PT_TRACE_EXEC, PTRACE_EVENT_EXEC, 0) &&
-           unlikely(task_ptrace(current) & PT_PTRACED))
-               send_sig(SIGTRAP, current, 0);
+       /* if PTRACE_O_TRACEEXEC option is active */
+       if (ptrace_event(PT_TRACE_EXEC, PTRACE_EVENT_EXEC, 0))
+               return;
+       if (unlikely(task_ptrace(current) & PT_PTRACED)) {
+               ptrace_notify_SIGTRAP80();
+       }

Patch also makes other SIGTRAPs send (SIGTRAP | 0x80), like single-stepping.
Not tested.

-- 
Configure bugmail: https://bugzilla.redhat.com/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.




More information about the fedora-triage-list mailing list