Bug 866941
Summary: | Regression vex amd64->IR: unhandled instruction bytes: 0xF0 0xF 0xC0 0x10 0x84 0xD2 0xF 0x95 (lock xaddb) | |||
---|---|---|---|---|
Product: | Red Hat Enterprise Linux 6 | Reporter: | Mark Wielaard <mjw> | |
Component: | valgrind | Assignee: | Mark Wielaard <mjw> | |
Status: | CLOSED ERRATA | QA Contact: | qe-baseos-tools-bugs | |
Severity: | unspecified | Docs Contact: | ||
Priority: | unspecified | |||
Version: | 6.4 | CC: | fche, jakub, mfranc, mnewsome | |
Target Milestone: | rc | Keywords: | Regression | |
Target Release: | --- | |||
Hardware: | x86_64 | |||
OS: | Unspecified | |||
Whiteboard: | ||||
Fixed In Version: | valgrind-3.8.1-3.2.el6 | Doc Type: | Bug Fix | |
Doc Text: |
Probably no documentation necessary. This was a regression in valgrind 3.8.0 which was never released before in RHEL6. The previous version in RHEL6 was based on 3.6.0.
x86_64 programs using some variants of the xaddb instruction would not run under valgrind. This was a regression introduced in valgrind 3.8.0. Such programs would run normally under valgrind before. With this fix they again run under valgrind without errors.
|
Story Points: | --- | |
Clone Of: | 866793 | |||
: | 866943 (view as bug list) | Environment: | ||
Last Closed: | 2013-02-21 08:52:08 UTC | Type: | Bug | |
Regression: | --- | Mount Type: | --- | |
Documentation: | --- | CRM: | ||
Verified Versions: | Category: | --- | ||
oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | ||
Cloudforms Team: | --- | Target Upstream Version: | ||
Embargoed: | ||||
Bug Depends On: | 866793 | |||
Bug Blocks: | 866943 |
Description
Mark Wielaard
2012-10-16 11:22:23 UTC
This is a x86_64 issue only. The simplest (bogus) binary to show this issue is: int main (int argc, char **argv) { asm("xaddb %dl,(%rax)"); return 0; } $ gcc -g -o test test.c $ valgrind --tool=none ./test [...] ==9187== Command: /tmp/test ==9187== vex amd64->IR: unhandled instruction bytes: 0xF 0xC0 0x10 0xB8 0x0 0x0 0x0 0x0 vex amd64->IR: REX=0 REX.W=0 REX.R=0 REX.X=0 REX.B=0 vex amd64->IR: VEX=0 VEX.L=0 VEX.nVVVV=0x0 ESC=0F vex amd64->IR: PFX.66=0 PFX.F2=0 PFX.F3=0 ==9187== valgrind: Unrecognised instruction at address 0x4004a7. From the clone of this bug https://bugzilla.redhat.com/show_bug.cgi?id=866943 --- Comment #5 from Jakub Jelinek <jakub> --- And even better: int main () { char a = 8; char b = 9; asm volatile ("lock xaddb %%dl, (%%rax)" : "=m" (b), "+d" (a) : "a" (&b) : "memory"); return 0; } because xaddb returns in %%dl the value read from memory before the atomic modification. Since the problem described in this bug report should be resolved in a recent advisory, it has been closed with a resolution of ERRATA. For information on the advisory, and where to find the updated files, follow the link below. If the solution does not work for you, open a new bug report. http://rhn.redhat.com/errata/RHBA-2013-0347.html |