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 dyninst/15624] New: stapdyn deref failure with high pointers on i686


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.


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