user kprobes vs debuggers
Vara Prasad
prasadav@us.ibm.com
Fri Feb 3 06:37:00 GMT 2006
Well come to think of this problem i am thinking this is very similar
to the problem between Kprobes and kernel debuggers.
I am thinking we can have a common interface that ptrace and userspace
probes can use to register break points similar to the notifiers for
kernel probes. The common interface stores the information about all the
break points including the ones from the ptrace interface. There is a
tag on the breakpoint that specifies whether the breakpoint is inserted
by the userspace probes or ptrace. Similar to kernel multiple probe
handlers at a probe point, we could have multiple probe handlers for
user space probes as well. One of the probe handler among the multiple
could be to pass it to the debugger for the probes registered by ptrace.
When the break point is hit userspace probes gets the control and checks
if there is a userspace probe point at this location, if yes, runs the
userspace probes handler and if there is a ptrace registered probe point
at the same location pass it debugger as well. Unregistering probes of
both types requires updating the global registery of the probe points.
In the above discussion i didn't differentiate between /proc/pid/mem and
ptrace() as they both go through the same interface in the kernel they
are equivalent for this discussion.
I think this mechanism should handle applications that have breakpoints
builtin as well because i am thinking they are going to use ptrace
interface as well to register the breakpoint, is that correct.
Did i not consider something in the above design?
Frank Ch. Eigler wrote:
>Hi -
>
>During the teleconference earlier today, we discussed the issue of
>coexistence of user-mode kprobes (along the favoured #4 path) with
>debuggers, manipulating the same tasks.
>
>The core issue is that both systems insert breakpoints into pages
>of the target text. Ideally, we would like both systems to operate
>independently, unaware of each other. But:
>
>Without synchronization over "ownership" of the text pages, two
>systems may perform the insertion or removal interleaved in an
>inconvenient way. It may be possible to lose breakpoints, or even to
>create spontaneous ones. To perform sufficient synchronization, we
>may need to (a) detect possible conflicts after the fact, (b) bluntly
>block one system when the other is active, (c) hook user-kprobes into
>ptrace and /proc/mem code paths to intercept debuggers' operations
>and/or (d) provide a virtualization facility where the user-space
>tools only see a kprobe-less image of the real text page.
>
>A related problem is handling of breakpoints once triggered. Clearly
>user-kprobes get to run first. The system needs to know whether user
>space has also set a breakpoint at the same spot, so a subsequent
>ptrace signal can be propagated to the debugger. Some peculiar
>applications may put breakpoints into themselves even without a
>debugger present, expecting to catch SIGTRAP. Ideally, user kprobes
>should work with these too.
>
>- FChE
>
>
>
More information about the Systemtap
mailing list