This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
bndmov MPX instructions in dynamic linker breaks valgrind
- From: Markus Trippelsdorf <markus at trippelsdorf dot de>
- To: libc-alpha at sourceware dot org
- Date: Sat, 2 Aug 2014 19:51:03 +0200
- Subject: bndmov MPX instructions in dynamic linker breaks valgrind
- Authentication-results: sourceware.org; auth=none
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