Skip to content
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

Windows memory query to find the size fails on weird AllocationBase behavior on GA Server16 #4588

Closed
derekbruening opened this issue Dec 6, 2020 · 0 comments · Fixed by #4590

Comments

@derekbruening
Copy link
Contributor

This was hit in Dr. Memory DynamoRIO/drmemory#2328

The details are here:
DynamoRIO/drmemory#2328 (comment)

Basically we have a case where the AllocationBase goes up and then drops back to an original value, and the query loop inside query_memory_internal() (which implements dr_query_memory()) fails when the AllocationBase doesn't match. This causes multiple address space walks in Dr. Memory to fail early, causing Umbra init to mess up, and leak scanning to assert.

@derekbruening derekbruening self-assigned this Dec 6, 2020
derekbruening added a commit that referenced this issue Dec 6, 2020
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
derekbruening added a commit that referenced this issue Dec 6, 2020
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
derekbruening added a commit to DynamoRIO/drmemory that referenced this issue Dec 6, 2020
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
derekbruening added a commit to DynamoRIO/drmemory that referenced this issue Dec 6, 2020
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
derekbruening added a commit that referenced this issue Dec 14, 2020
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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant