DynamoRIO / dynamorio

Dynamic Instrumentation Tool Platform
Other
2.63k stars 557 forks source link

i#6721: Read ahead in as-traced drmemtrace mode #6722

Closed derekbruening closed 6 months ago

derekbruening commented 6 months ago

Removes the exception for avoiding reading ahead to get the version and filetype for as-traced drmemtrace mode, as we need those values for the record_filter.

Adds explicit error checking and error return up front to the record_filter for missing version info.

Adjusts the scheduler unit test's record ordinal to account for the new read-ahead.

Adds a test with a checked-in trace of hello,world (truncated to make it smaller) that ran on 4 different cores. The test only reproduces the problem if the read-ahead in open_reader() to find the tid is removed, which I did temporarily; I kept the test as it is also a good additional general test of other corner cases. To create a test that always reproduces in our suite we would need to combine a synthetic reader with use of the scheduler in as-traced mode, which none of our unit tests are set up for.

The fix was further tested on large inputs in an internal setup which always passes a synthetic reader, where the problem reproduces every time without the fix.

Fixes #6721