DynamoRIO / DynamoRIO/dynamorio

get_dynamo_library_bounds sometimes does not correctly find bounds

Open
#3,387 4 comments 0 reactions 0 assignees View on GitHub
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

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.