This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

bndmov MPX instructions in dynamic linker breaks valgrind


With current trunk I get:

markus@x4 ~ % valgrind dmesg
==32767== Memcheck, a memory error detector
==32767== Copyright (C) 2002-2013, and GNU GPL'd, by Julian Seward et al.
==32767== Using Valgrind-3.9.0 and LibVEX; rerun with -h for copyright info
==32767== Command: dmesg
==32767== 
vex amd64->IR: unhandled instruction bytes: 0x66 0xF 0x1B 0x4 0x24 0x66 0xF 0x1B
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=1 PFX.F2=0 PFX.F3=0
==32767== valgrind: Unrecognised instruction at address 0x4015177.
==32767==    at 0x4015177: _dl_runtime_resolve (in /lib64/ld-2.19.90.so)
==32767==    by 0x4F9CDFB: __pthread_initialize_minimal (in /lib64/libpthread-2.19.90.so)
==32767==    by 0x4F9C538: ??? (in /lib64/libpthread-2.19.90.so)
==32767==    by 0x3FFFFFF: ???
==32767==    by 0x400F284: call_init.part.0 (in /lib64/ld-2.19.90.so)
==32767==    by 0x400F47E: _dl_init (in /lib64/ld-2.19.90.so)
==32767==    by 0x4000CB9: ??? (in /lib64/ld-2.19.90.so)
==32767== Your program just tried to execute an instruction that Valgrind
==32767== did not recognise.  There are two possible reasons for this.
==32767== 1. Your program has a bug and erroneously jumped to a non-code
==32767==    location.  If you are running Memcheck and you just saw a
==32767==    warning about a bad jump, it's probably your program's fault.
==32767== 2. The instruction is legitimate but Valgrind doesn't handle it,
==32767==    i.e. it's Valgrind's fault.  If you think this is the case or
==32767==    you are not sure, please let us know and we'll try to fix it.
==32767== Either way, Valgrind will now raise a SIGILL signal which will
==32767== probably kill your program.

markus@x4 ~ % objdump -d /lib64/ld-2.19.90.so | grep 15177
   15177:       66 0f 1b 04 24          bndmov %bnd0,(%rsp)

This is already fixed in valgrind trunk see:
https://bugs.kde.org/show_bug.cgi?id=333666

But all released versions of valgrind would stop working when glibc-2.20
gets released.

-- 
Markus


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]