DynamoRIO / DynamoRIO/drmemory

umbra x64 wild address memory handling problems

Open
#1,641 1 comment 0 reactions 0 assignees View on GitHub
Migrated OpSys-x64 Priority-High
Dominant language
C
Stars
2.7k
Forks
290
PR merge metrics
No merged PRs in 30d

Description

_From [bruen...@google.com](https://code.google.com/u/109494838902877177630/) on September 26, 2014 16:25:42_

Summary of problems:

64-bit Umbra does not support shadowing address space that does not
contain app memory (beyond that it only supports shadowing hardcoded
address space segments: but that's issue #1640). This is a big departure from
32-bit Umbra, and it's not documented well, nor is Dr. Memory updated to
handle this.

Specific problems:
- umbra_{read,write}_shadow_memory() will fail with DRMF_ERROR_NOMEM which
does not seem like a good error code
- umbra_get_shadow_memory() returns UMBRA_SHADOW_MEMORY_TYPE_NOT_SHADOW,
but Dr. Memory does not check for this and crashes trying to get the
shadow value
- generated instrumentation will fault on invalid app addresses, but
Umbra will just propagate to the app, and Dr. Memory does not
think it owns it either => we have an app crash but on our own instru

Proposed solutions:
- document UMBRA_SHADOW_MEMORY_TYPE_NOT_SHADOW better
- add DRMF_ERROR_INVALID_ADDRESS to read/write/shadow-create routines
- for the instru fault: can DrMem identify its instru w/o an easy way to
understand the address it's accessing?

_Original issue: http://code.google.com/p/drmemory/issues/detail?id=1641_

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.