-
Notifications
You must be signed in to change notification settings - Fork 264
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
shadow memory layout failure on Windows Server 2016 #2328
Comments
It looks like the address space walk just stops when it hits the top of the 32-bit range:
That causes the high library segment to not be added, which causes So it does not seem to be a shadow mapping scheme problem. |
With custom diagnostics, here is the problematic sequence:
So AllocationBase is 7ffe0000 (0-1,1-c), then 7ffec000 (c-d), but then It seems like a kernel bug? Or at least a wart, with that weird AllocationBase sequence.
|
Uses the empirically-determined syscall numbers even for OS versions we have in our static table, for win10-1511+. We have seen variants that our current version logic is not aware of, and we're using the from-wrapper numbers on all very-recent versions anyway. Issue: #4587, DynamoRIO/drmemory#2328 Fixes #4587
Removes what was thought of as a sanity check for the allocation base changing in DR's internal query loop, but it turns out there are cases of anomalous bases for which failing the query has disastrous consequences. Just ignoring the anomaly and moving on is the solution. Issue: #4588, DynamoRIO/drmemory#2328 Fixes #4588
Uses the empirically-determined syscall numbers even for OS versions we have in our static table, for win10-1511+. We have seen variants that our current version logic is not aware of, and we're using the from-wrapper numbers on all very-recent versions anyway. Issue: #4587, DynamoRIO/drmemory#2328 Fixes #4587
Removes what was thought of as a sanity check for the allocation base changing in DR's internal query loop, but it turns out there are cases of anomalous bases for which failing the query has disastrous consequences. Just ignoring the anomaly and moving on is the solution. Tested on the Github Actions Windows Server 16 images. Issue: #4588, DynamoRIO/drmemory#2328 Fixes #4588
The DynamoRIO/dynamorio#4589 link was meant for #2329. |
Updates DR to 312d24d3 to pull in two key fixes for Dr. Memory on Github Actions Windows Server 2016: + DynamoRIO/dynamorio#4588: Handle anomalous alloc bases in Windows query loop (DynamoRIO/dynamorio#4590) + DynamoRIO/dynamorio#4587: Use from-wrapper syscall numbers for all win10 (DynamoRIO/dynamorio#4589) Fixes #2328 Fixes #2329
Updates DR to 312d24d3 to pull in two key fixes for Dr. Memory on Github Actions Windows Server 2016: + DynamoRIO/dynamorio#4588: Handle anomalous alloc bases in Windows query loop (DynamoRIO/dynamorio#4590) + DynamoRIO/dynamorio#4587: Use from-wrapper syscall numbers for all win10 (DynamoRIO/dynamorio#4589) Fixes #2328 Fixes #2329
Sets up 3 jobs on Windows Server 2016 on Github Actions: + 32-bit debug build and tests + 64-bit debug build and tests + 32-bit and 64-bit release build plus drheapstat debug build, no tests Adds parameters to runsuite.cmake for the control split into these 3 jobs. Each job is roughly under 15 minutes. Each job downloads and installs ninja, doxygen, and WiX and uses VS2017. Adapts runsuite_wrapper.pl to use native Windows perl rather than Cygwin perl. No fork is available, so we tee the output to a file and read the file back in. Fixes a missed final line in the suite results processing. Adds default suppressions for invalid heap arguments (#2339) and leaks (#2340) in the VS2017 CRT. Generalizes test output for cs2bug and the suppress* tests in an attempt to get them to pass. Augments umbra_address_space_init() with a better error message to avoid cases like #2328 in the future. Shrinks the timeout to 60s for the failing umbra_client_faulty_redzone to eliminate several minutes of testing time just waiting for that test to time out; #2341 covers fixing it. Augments the test ignore list in order to get the jobs green. Issue: #2328, #2334, #2339, #2340, #2341
Uses the empirically-determined syscall numbers even for OS versions we have in our static table, for win10-1511+. We have seen variants that our current version logic is not aware of, and we're using the from-wrapper numbers on all very-recent versions anyway. Issue: #4587, DynamoRIO/drmemory#2328 Fixes #4587
Removes what was thought of as a sanity check for the allocation base changing in DR's internal query loop, but it turns out there are cases of anomalous bases for which failing the query has disastrous consequences. Just ignoring the anomaly and moving on is the solution. Tested on the Github Actions Windows Server 16 images. Issue: #4588, DynamoRIO/drmemory#2328 Fixes #4588
I hit this earlier this year trying to move Appveyor to VS2017 on Server 2016 in PR #2265 for #2250. Despite Server 2016 being pretty much the same as Win10 1607, we never hit this issue on Win10 1607.
Pasting the notes from #2250 here in a new dedicated issue because I am hitting what I think is the same thing trying Github Actions on Server 2016. Here's Appveyor:
Appveyor notes
Addrs vary slightly but all end in 0x07aa.
It's a shadow memory issue.
Current shadow scheme:
app PEB is 0x000000fd'f0ac9000-0x000000fd'f0ac9388 => in 1st region: not
that.
It's the 0x00007ff6578807aa which is weird: seems like a normal lib.
Need more info: need all segments.
Github Actions
The text was updated successfully, but these errors were encountered: