DynamoRIO / DynamoRIO/drmemory
umbra x64 wild address memory handling problems
- 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
Assessment
This issue has not been assessed yet.