DynamoRIO / DynamoRIO/dynamorio
get_dynamo_library_bounds sometimes does not correctly find bounds
- Dominant language
- C
- Stars
- 3.2k
- Forks
- 629
- Avg merge
- 2d 15h
- Merged PRs (30d)
- 31
Description
Internally we have a heisenbug which is causing a hang on static detach via `dr_app_stop_and_cleanup_with_stats`. (Given a fixed compilation/configuration for a specific application the bug is always or never there, but we do not know exactly what compiler feature/runtime configuration is causing the bug to show up: the bug keeps showing up and disappearing depending on where we are sync'd in the source history.) This bug tracks its resolution in relation to DR core code.
I was able to show that when there is a detach hang, `get_dynamo_library_bounds` is not "correctly" discovering the full bounds of DR code; that is, in one instance the bounds were found to be [`0x13200000`, `0x1d600000`) whereas `dr_app_stop_and_cleanup_with_stats` had an address of `0x131eb110`.
It is unclear at this point if the bug is truly related to the code layout of the binary (e.g. the layout algorithms just so happen to place dr_app_stop_and_cleanup_with_stats far away from all other DR code) or if it's related to a bug in `get_dynamo_library_bounds` (e.g. not correctly handling some edge case in its scanning and heuristics).
xref PR#3359, which was also related to debugging this issue.
Contributor guide
Assessment
This issue has not been assessed yet.