-
Notifications
You must be signed in to change notification settings - Fork 570
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
tool.drcacheoff.simple fails on some x86-32-ubuntu22 VMs #6416
Comments
@brettcoon reproduced on an AMD machine and got the log:
My response: Oh it's the vsyscall, which DR has to hook on 32-bit AMD That jmp is the trampoline Xref #6417 where the kill(SIGSEGV) failures in all the signal and other tests are also from the AMD 32-bit vsyscall trampoline. That jmp encoding is from the stored vdso bytes, which preserved the hook (the actual tracing did not see the trampoline b/c DR hides it). The question is: if we throw away the special vdso storage in the modules log and replace it with per-block encodings (treat as JIT), we'll get the DR-provided view that doesn't see the trampoline, right? I remember thinking we might want to do that anyway; there is probably a TODO or an issue mentioning it. Xref #2062. |
OK I imlemented the encodings for vdso and removed the raw bytes.
And the module file entry for vdso has no more binary data:
|
Removes the vdso raw bytes we were storing in the module file for offline drmemtraces. Switches to using per-block encodings instead. This avoids problems with hooked vsysenter on 32-bit AMD. Tested on tool.drcacheoff.simple on 32-bit AMD on a machine where that test failed every time before this fix. Removes the unused offline_instru_t::get_modoffs() rather than updating it for the vdso change. Fixes #6416
Removes the vdso raw bytes we were storing in the module file for offline drmemtraces. Switches to using per-block encodings instead. This avoids problems with hooked vsysenter on 32-bit AMD. Tested on tool.drcacheoff.simple on 32-bit AMD on a machine where that test failed every time before this fix. Removes the unused offline_instru_t::get_modoffs() rather than updating it for the vdso change. Issue: #6416, #2062 Fixes #6416
The tool.drcacheoff.simple test is flaky on the x86-32-ubuntu22 workflow. I was able to reproduce it in a Ubuntu-22-04 VM but not always. I encountered this first on #6408, none of other recent PRs seem to have this failure but I was able to reproduce this on the master branch on a VM.
Details of the VM where I was able to reproduce it:
Even on the master branch it seems to fail:
The text was updated successfully, but these errors were encountered: