Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

drcachesim.invariants test failed with assert on x86 #4575

Closed
derekbruening opened this issue Dec 1, 2020 · 1 comment · Fixed by #4974
Closed

drcachesim.invariants test failed with assert on x86 #4575

derekbruening opened this issue Dec 1, 2020 · 1 comment · Fixed by #4974

Comments

@derekbruening
Copy link
Contributor

32-bit tool.drcachesim.invariants failed once:
https://github.com/DynamoRIO/dynamorio/runs/1481340663

2020-12-01T17:03:51.5887842Z 271: Running cmd |/home/runner/work/dynamorio/dynamorio/build_debug-internal-32/bin32/drrun;-s;90;-quiet;-debug;-killpg;-stderr_mask;0xC;-dumpcore_mask;0;-code_api;-t;drcachesim;-offline;-subdir_prefix;tool.drcacheoff.multiproc;--;/home/runner/work/dynamorio/dynamorio/build_debug-internal-32/suite/tests/bin/tool.multiproc;/home/runner/work/dynamorio/dynamorio/build_debug-internal-32/suite/tests/bin/tool.multiproc|
2020-12-01T17:03:51.5892742Z 269: drcachesim: /home/runner/work/dynamorio/dynamorio/clients/drcachesim/tests/trace_invariants.cpp:157: virtual bool trace_invariants_t::process_memref(const memref_t&): Assertion `memref.instr.tid != pre_signal_instr_.instr.tid || memref.instr.addr == pre_signal_instr_.instr.addr || memref.instr.addr == pre_signal_instr_.instr.addr + pre_signal_instr_.instr.size || memref.instr.addr == app_handler_pc_ || memref.instr.type == TRACE_TYPE_INSTR_DIRECT_JUMP || type_is_instr_branch(pre_signal_instr_.instr.type) || pre_signal_instr_.instr.type == TRACE_TYPE_INSTR_SYSENTER' failed.
@derekbruening
Copy link
Contributor Author

The trace_invariants state is not kept per-thread, so it is possible this arose b/c of thread interleaving. I'm addressing that as part of better testing for #4274.

derekbruening added a commit that referenced this issue Jun 28, 2021
Improves the robustness of the trace_invariants test by shifting the
various tracked state to be per-thread and per-nested-signal, avoiding
incorrect results from thread interleavings or nested signals.
This presumably explains past flakiness like #4575.

Fixes #4575
derekbruening added a commit that referenced this issue Jun 30, 2021
Improves the robustness of the trace_invariants test by shifting the
various tracked state to be per-thread and per-nested-signal, avoiding
incorrect results from thread interleavings or nested signals.
This presumably explains past flakiness like #4575.

Fixes #4575
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant