Mailinglist Archive: opensuse-bugs (15877 mails)

< Previous Next >
[Bug 296803] New: valgrind on x86_64: vex amd64->IR: unhandled instruction bytes: 0x66 0x66 0x66 0x66
  • From: bugzilla_noreply@xxxxxxxxxx
  • Date: Thu, 2 Aug 2007 04:43:57 -0600 (MDT)
  • Message-id: <bug-296803-21960@xxxxxxxxxxxxxxxxxxxxxxxxx/>
https://bugzilla.novell.com/show_bug.cgi?id=296803

           Summary: valgrind on x86_64: vex amd64->IR: unhandled instruction
                    bytes: 0x66 0x66 0x66 0x66
           Product: openSUSE 10.3
           Version: Alpha 6
          Platform: x86-64
        OS/Version: Other
            Status: NEW
          Severity: Major
          Priority: P5 - None
         Component: Development
        AssignedTo: dmueller@xxxxxxxxxx
        ReportedBy: bk@xxxxxxxxxx
         QAContact: qa@xxxxxxx
          Found By: Development


valgrind currently dies on all dynamically linked programs which I tried on
x86_64 very early when ld-2.6.so loads the shared libraries which the program
needs:

valgrind -q pwd
vex amd64->IR: unhandled instruction bytes: 0x66 0x66 0x66 0x66
==18669== valgrind: Unrecognised instruction at address 0x4015071.
==18669== Your program just tried to execute an instruction that Valgrind
==18669== did not recognise.  There are two possible reasons for this.
==18669== 1. Your program has a bug and erroneously jumped to a non-code
==18669==    location.  If you are running Memcheck and you just saw a
==18669==    warning about a bad jump, it's probably your program's fault.
==18669== 2. The instruction is legitimate but Valgrind doesn't handle it,
==18669==    i.e. it's Valgrind's fault.  If you think this is the case or
==18669==    you are not sure, please let us know and we'll try to fix it.
==18669== Either way, Valgrind will now raise a SIGILL signal which will
==18669== probably kill your program.
==18669== 
==18669== Process terminating with default action of signal 4 (SIGILL): dumping
core
==18669==  Illegal opcode at address 0x4015071
==18669==    at 0x4015071: memcpy (in /lib64/ld-2.6.so)
==18669==    by 0x4004373: dl_main (rtld.c:1618)
==18669==    by 0x40132DF: _dl_sysdep_start (dl-sysdep.c:239)
==18669==    by 0x4001FDF: _dl_start (rtld.c:325)
==18669==    by 0x4000A67: (within /lib64/ld-2.6.so)
Illegal instruction

Output is the same for all dynamically linked programs which I tried, except
for:

valgrind -q /lib64/ld-2.6.so --list /bin/bash
vex amd64->IR: unhandled instruction bytes: 0x66 0x66 0x66 0x66
==18683== valgrind: Unrecognised instruction at address 0x15071.
==18683== Your program just tried to execute an instruction that Valgrind
==18683== did not recognise.  There are two possible reasons for this.
==18683== 1. Your program has a bug and erroneously jumped to a non-code
==18683==    location.  If you are running Memcheck and you just saw a
==18683==    warning about a bad jump, it's probably your program's fault.
==18683== 2. The instruction is legitimate but Valgrind doesn't handle it,
==18683==    i.e. it's Valgrind's fault.  If you think this is the case or
==18683==    you are not sure, please let us know and we'll try to fix it.
==18683== Either way, Valgrind will now raise a SIGILL signal which will
==18683== probably kill your program.
==18683== 
==18683== Process terminating with default action of signal 4 (SIGILL): dumping
core
==18683==  Illegal opcode at address 0x15071
==18683==    at 0x15071: memcpy (in /lib64/ld-2.6.so)
==18683==    by 0x7B8E: _dl_map_object (dl-load.c:2167)
==18683==    by 0xCFA: map_doit (rtld.c:621)
==18683==    by 0xD1E5: _dl_catch_error (dl-error.c:178)
==18683==    by 0xC7E: do_preload (rtld.c:805)
==18683==    by 0x43DE: dl_main (rtld.c:1628)
==18683==    by 0x132DF: _dl_sysdep_start (dl-sysdep.c:239)
==18683==    by 0x1FDF: _dl_start (rtld.c:325)
==18683==    by 0xA67: (within /lib64/ld-2.6.so)
vex amd64->IR: unhandled instruction bytes: 0x60 0xA 0x0 0x0
==18683== 
==18683== Process terminating with default action of signal 11 (SIGSEGV)
==18683==  Bad permissions for mapped region at address 0x6C
==18683==    at 0x33E: (within /lib64/ld-2.6.so)
==18683==    by 0x7B8E: _dl_map_object (dl-load.c:2167)
==18683==    by 0xCFA: map_doit (rtld.c:621)
==18683==    by 0xD1E5: _dl_catch_error (dl-error.c:178)
==18683==    by 0xC7E: do_preload (rtld.c:805)
==18683==    by 0x43DE: dl_main (rtld.c:1628)
==18683==    by 0x132DF: _dl_sysdep_start (dl-sysdep.c:239)
==18683==    by 0x1FDF: _dl_start (rtld.c:325)
==18683==    by 0xA67: (within /lib64/ld-2.6.so)
Segmentation fault

Which at first gets the same unrecognized instructoin bytes but continues
and later dies on: 0x60 0xA 0x0 0x0 - But maybe that's just a follow-up error
and maybe does not occur when the first is fixed.

Valgrind SVN trunk gives a different error much earlyer (is currently broken)

Dirk Mueller told me that this was triggered by the new binutils which uses
a new way of writing NOPs which is not yet known to valgrind.


-- 
Configure bugmail: https://bugzilla.novell.com/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.

< Previous Next >