-
Notifications
You must be signed in to change notification settings - Fork 574
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
[drmemtrace] AMD-32 vdso memtrace contains PC discontinuity at OP_syscall #7340
Comments
Adds the tool.drcacheoff.windows-invar test to the failure-ignore list for x86-32. This test was observed to consistently fail on x86-32 AMD machines in Github Actions CI runners. Interestingly, this manifested only when we tried running it on Ubuntu22, even though the AMD-specific failures were already known (#6417). We do have a denylist for tests failing on AMD-32 in i#6417, which causes tests to not run at all. IMO, it is better to run the test but ignore the failure, than to not run the test at all, unless there are timeout issues (which is why we created the denylist), and this test does not have timeout issues. We plan to work on the AMD-32 failures at a later date and are focusing on completing the Ubuntu22 migration currently. Issue: #6417, #7270, #7340
So #5037 (comment) noted the hook is needed, but then it was never added nor an issue left open for it? |
#5037 already added that hook: https://github.com/DynamoRIO/dynamorio/blame/695affca7ab8c515e623198496d69f851d02834c/core/arch/arch.c#L3301 (Clarified in the issue description) |
So this issue is only about drmemtrace's invariant checker? The title does not imply that: I found it confusing as it seems to be about a problem in core DR. |
The labels don't point at Component-DrMemtrace either. |
This doesn't apply to core DR surely, since syscall hooking for AMD-32 is already done; will add the Component-DrMemtrace tag. Perhaps we shouldn't limit this issue to just the drmemtrace invariant checker, as we may want to ensure there's some way to let simulators/analyzers know that the vdso syscall is different. |
As also noted in #4407, 32-bit apps on AMD have a different implementation of the
__kernel_vsyscall
in vdso.Note that it uses
syscall
instead ofsysenter
. PR #5037 found that thissyscall
actually acts like thesysenter
, notably that it does not return to the subsequent pc, and hooked it like we do forsysenter
.The drmemtrace invariant_checker indeed relaxes the PC discontinuity check for TRACE_TYPE_INSTR_SYSENTER.
dynamorio/clients/drcachesim/tools/invariant_checker.cpp
Line 1468 in a04a39d
Looks like we need to do the same for the vdso syscall on AMD-32 where the tool.drcacheoff.windows-invar test currently fails. May need us to look into the modules list to figure out that the regular-looking
syscall
is this special one from__kernel_vsyscall
.#6417 notes various x86-32 tests that fail on AMD. Interestingly we did not see any issues with tool.drcacheoff.windows-invar until we tried migrating our GA CI to Ubuntu22 in #7270.
dynamorio/suite/tests/CMakeLists.txt
Line 6664 in a04a39d
The text was updated successfully, but these errors were encountered: