2016-08-07 54 views
2

Wenn ich meine C-Programm kompilieren und ausführen es unter valgrind ich die folgenden Fehler haben:Valgrind unhandled Befehlsbytes: 0x8F 0xEA 0xF8 0x10 0xC9 0x3 0x1D 0x0

vex amd64->IR: unhandled instruction bytes: 0x8F 0xEA 0xF8 0x10 0xC9 0x3 0x1D 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=NONE 
vex amd64->IR: PFX.66=0 PFX.F2=0 PFX.F3=0 
==6097== valgrind: Unrecognised instruction at address 0x4011d34. 
==6097== at 0x4011D34: _dl_allocate_tls_storage (dl-tls.c:379) 
==6097== by 0x4000B9A: init_tls (rtld.c:622) 
==6097== by 0x40034BF: dl_main (rtld.c:1683) 
==6097== by 0x40169A8: _dl_sysdep_start (dl-sysdep.c:249) 
==6097== by 0x4004C30: _dl_start_final (rtld.c:307) 
==6097== by 0x4004C30: _dl_start (rtld.c:413) 
==6097== by 0x4000C47: ??? (in /lib64/ld-2.22.so) 
... 
==6097== For counts of detected and suppressed errors, rerun with: -v 
==6097== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0) 
Segmentation fault 

Mein System Info:

Linux 4.1.15-gentoo-r1 # 3 SMP x86_64 AMD Opteron (tm) Prozessor 6320 AuthenticAMD GNU/Linux

ich verstehe, dass es ist etwas, das sich auf den Unterricht bezieht. Ich folgte diesem Link Bug 563796 - dev-util/valgrind: doesn't support TBM instructions und hinzugefügt zu meinem Makefile CFLAGS-march=native -mno-tbm oder sogar -msse2 oder -msse3 aber immer noch habe ich den gleichen Fehler.

Ich denke, es gibt keinen Speicherverlust, da ich mit anderen System kompiliert es läuft einfach gut. Gibt es eine Möglichkeit, den Fehler loszuwerden und Valgrind zum Laufen zu bringen?

Antwort

1

Trotz der Tatsache, dass Sie -march=native -mno-tbm verwenden Ihre Anwendung zu kompilieren, sind Sie auf die gleiche Ausgabe anfällig noch, weil alle das System ohne -mno-tbm kompiliert wird, einschließlich glibc Code, das ist, was in Ihrem Fall das Problem verursacht.

Sie benötigen die -march=native -mno-tbm-CFLAGS unter Ihrem /etc/portage/make.conf und entstehen glibc und alle anderen Bibliotheken hinzuzufügen, die Ihre Verwendung werden können.

Vorzugsweise sollten Sie Ihr gesamtes Gentoo-System neu kompilieren.

+0

Ich kann /etc/portage/make.conf nicht ändern, da es schreibgeschützt ist, also sollte ich versuchen, das Gentoo-System neu zu kompilieren. Gibt es einen Vorschlag für die Installation von Valgrind auf Mac Yosemite 10.10.5? Ich versuchte fast alles über diesen Link http://stackoverflow.com/questions/26564125/yosemite-and-valgrind/30366798#30366798 aber endete mit Fehler machen, siehe diesen Link http://stackoverflow.com/questions/38810061/ Valgrind-in-Osx-Yosemite –

+1

@maryamalijani Nie versucht, Valgrind auf Mac OSX zu installieren. Wahrscheinlich solltest du das als eine separate Frage betrachten. – pah