| Summary: | handleAddrOverrides() is truncating the segment base address when ASO prefix is used | ||
|---|---|---|---|
| Product: | [Developer tools] valgrind | Reporter: | Michael Daniels <mdaniels> |
| Component: | vex | Assignee: | Julian Seward <jseward> |
| Status: | RESOLVED FIXED | ||
| Severity: | normal | ||
| Priority: | NOR | ||
| Version First Reported In: | unspecified | ||
| Target Milestone: | --- | ||
| Platform: | Other | ||
| OS: | Other | ||
| Latest Commit: | Version Fixed/Implemented In: | ||
| Sentry Crash Report: | |||
| Attachments: | Proposed patch | ||
|
Description
Michael Daniels
2016-10-22 18:35:07 UTC
Created attachment 101707 [details]
Proposed patch
Sounds plausible, and it's nice that it's easy to fix. But I'm a bit concerned about the untestability of this. Is there no easy way to test this? The testing that I had done, which I realize I was not made clear in the description, was specific to our OS (QNX Neutrino). Our kernel is putting the per-cpu data above the 4GB boundary and sets the fs base address to that value. Since the fs base address is always over 4GB, I can reproduce the behaviour quite easily locally. I thought of different ways this might be testable, but to my knowledge fs is not writable in user-mode / valgrind and at least for Linux it looks like it's 0. So I am not aware of a reliable / portable way to force fs + 32bit addr over 4GB to validate the truncation. I am open to suggestions if anyone else has ideas. Committed, vex r3364. Thank you for the patch. |