This is the mail archive of the systemtap@sourceware.org mailing list for the systemtap project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug runtime/14488] New: stapdyn runtime needs deref et al.


http://sourceware.org/bugzilla/show_bug.cgi?id=14488

             Bug #: 14488
           Summary: stapdyn runtime needs deref et al.
           Product: systemtap
           Version: unspecified
            Status: NEW
          Severity: normal
          Priority: P2
         Component: runtime
        AssignedTo: systemtap@sourceware.org
        ReportedBy: jistone@redhat.com
            Blocks: 14178
    Classification: Unclassified


stap's dyninst runtime currently doesn't provide any memory protection, so it
can easily cause SEGVs in the target process.  Dyninst actually catches this,
reports "SEGV IN PROCESS", and dumps a lot of state.  We'd like to instead
catch this in a controlled way with our usual deref() mechanisms.  A few
possibilities:

1. See if Dyninst can install a custom handler on that error, since it seems to
already catch it, then let us resume in our own way.

2. Install our own SEGV handler and figure out how to resume ourselves.  We
might end up competing for the signal handler though vs. Dyninst and the app
itself.

3. Do deref through pread() on /proc/self/mem instead, which hopefully gives
more controlled errors at bad addresses.  (dsmith's idea)

Options 1 and 2, if possible, have the advantage that they only penalize
overhead on the error case.  Option 3 requires at least a syscall every time,
whether or not the address is good, but I think it's still the most feasible
option for us to start with.

-- 
Configure bugmail: http://sourceware.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]