[Bug dyninst/15624] New: stapdyn deref failure with high pointers on i686

jistone at redhat dot com sourceware-bugzilla@sourceware.org
Thu Jun 13 21:43:00 GMT 2013


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

            Bug ID: 15624
           Summary: stapdyn deref failure with high pointers on i686
           Product: systemtap
           Version: unspecified
            Status: NEW
          Severity: normal
          Priority: P2
         Component: dyninst
          Assignee: systemtap at sourceware dot org
          Reporter: jistone at redhat dot com

The tests pretty-bits.exp and pretty-char.exp are failing on --runtime=dyninst.

I tracked this down to an EINVAL from pread() in our __copy_from_user().  Since
these tests are reading from the module's own static locals, the pointer used
as a pread offset can be fairly large, e.g. 0xb771e10c.  Notice the most
significant bit is set, and off_t is a signed type, so this is effectively
negative.  It appears that pread() will not let the offset wrap around, so it's
EINVAL.

Preliminary testing with FILE_OFFSET_BITS 64 looks better.  Conceivably, this
could still fail if a 64-bit machine had userspace addresses > INT64_MAX.  But
at least on x86_64, TASK_SIZE_MAX is just 2^47.

-- 
You are receiving this mail because:
You are the assignee for the bug.



More information about the Systemtap mailing list