I'm running fc5 test 1 on an athlon machine, and "valgrind nautilus" gives me: vex: priv/host-x86/hdefs.c:2315 (emit_X86Instr): Assertion `0' failed. vex storage: P 512, T total 55312504 (1743494), T curr 39884 (1284) valgrind: the 'impossible' happened: LibVEX called failure_exit(). ==9755== at 0xB0016892: vgPlain_core_panic_at (m_libcassert.c:181) ==9755== by 0xB0016891: panic (m_libcassert.c:177) ==9755== by 0xB00168AF: vgPlain_core_panic_at (m_libcassert.c:182) ==9755== by 0xB00168C0: vgPlain_core_panic (m_libcassert.c:187) ==9755== by 0xB00236EA: failure_exit (m_translate.c:360) ==9755== by 0xB0056D96: vex_assert_fail (vex_util.c:163) ==9755== by 0xB005B20D: emit_X86Instr (hdefs.c:2315) ==9755== by 0xB00569DC: LibVEX_Translate (vex_main.c:574) ==9755== by 0xB0023C59: vgPlain_translate (m_translate.c:585) ==9755== by 0xB00389B8: handle_tt_miss (scheduler.c:566) ==9755== by 0xB0038CE0: vgPlain_scheduler (scheduler.c:680) ==9755== by 0xB004EE89: vgModuleLocal_thread_wrapper (syswrap-linux.c:80) ==9755== by 0xB004B416: run_a_thread_NORETURN (syswrap-x86-linux.c:150) sched status: running_tid=1 Thread 1: status = VgTs_Runnable ==9755== at 0x1CA1A6AB: OPENSSL_ia32_cpuid (in /lib/libcrypto.so.0.9.8a) ==9755== by 0x1CA16954: (within /lib/libcrypto.so.0.9.8a) ==9755== by 0x1B8F17DA: call_init (in /lib/ld-2.3.90.so) ==9755== by 0x1B8F18D9: _dl_init (in /lib/ld-2.3.90.so) ==9755== by 0x1B8E484E: (within /lib/ld-2.3.90.so) Doesn't valgrind emulate the cpuid instruction?
valgrind emulates CPUID, though just for a few %eax values. Anyway, it should handle all functions libssl uses. I haven't been able to reproduce it, can you reproduce it with valgrind-3.1.0-1?