|
From: Mike W. <mik...@ve...> - 2007-05-24 21:51:25
|
Hi, I've seen similar problems in the mailing list archives, but no solutions (if any). I'm running Valgrind on a PPC MPC 8541that has the Book E instruction set (Linux 2.6.14), and Valgrind is exiting on a SIGILL when I try to profile my application. Any help is much appreciated. The illegal instruction appears to be: 1003be34: fc 00 08 1e fctiwz f0,f1 (Floating-point Convert to Integer Round to Zero) The trace: Linux version 2.6.14.3Viper () (gcc version 3.3.2) #1 PREEMPT Wed May 23 09:36:57 CST 2007 --1402-- Arch and hwcaps: PPC32, ppc32-int-flt-FX-GX --1402-- Page sizes: currently 4096, max supported 65536 [...] ==1402== ==1402== Process terminating with default action of signal 4 (SIGILL): dumping core ==1402== Illegal opcode at address 0x4265A690 ==1402== at 0x1003BE34: BS_Scheduler::BS_Scheduler(BS_Manager*, SecurityManager*, FragmentManager*, int, DebugOut*) (stdlib.h:377) ==1402== by 0x10005E2C: BS_Manager::BS_Manager(char const*, char const*, char const*, char const*, char const*, int) (BS_Manager.cc:168) ==1402== by 0x100055FC: main (bs_wingman.cc:42) ==1402== ==1402== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 7 from 2) --1402-- --1402-- supp: 2 Ubuntu-stripped-ld.so --1402-- supp: 5 Ugly strchr error in /lib/ld-2.3.2.so ==1402== malloc/free: in use at exit: 16,009 bytes in 25 blocks. ==1402== malloc/free: 111 allocs, 86 frees, 29,149 bytes allocated. --1402-- memcheck: sanity checks: 6 cheap, 1 expensive --1402-- memcheck: auxmaps: 0 auxmap entries (0k, 0M) in use --1402-- memcheck: auxmaps: 0 searches, 0 comparisons --1402-- memcheck: SMs: n_issued = 37 (592k, 0M) --1402-- memcheck: SMs: n_deissued = 0 (0k, 0M) --1402-- memcheck: SMs: max_noaccess = 65535 (1048560k, 1023M) --1402-- memcheck: SMs: max_undefined = 0 (0k, 0M) --1402-- memcheck: SMs: max_defined = 85 (1360k, 1M) --1402-- memcheck: SMs: max_non_DSM = 37 (592k, 0M) --1402-- memcheck: max sec V bit nodes: 0 (0k, 0M) --1402-- memcheck: set_sec_vbits8 calls: 0 (new: 0, updates: 0) --1402-- memcheck: max shadow mem size: 896k, 0M --1402-- translate: fast SP updates identified: 1,892 ( 79.8%) --1402-- translate: generic_known SP updates identified: 423 ( 17.8%) --1402-- translate: generic_unknown SP updates identified: 54 ( 2.2%) --1402-- tt/tc: 27,388 tt lookups requiring 28,142 probes --1402-- tt/tc: 27,388 fast-cache updates, 193 flushes --1402-- transtab: new 5,028 (182,676 -> 2,435,812; ratio 133:10) [0 scs] --1402-- transtab: dumped 0 (0 -> ??) --1402-- transtab: discarded 238 (11,416 -> ??) --1402-- scheduler: 622,525 jumps (bb entries). --1402-- scheduler: 6/24,341 major/minor sched events. --1402-- sanity: 7 cheap, 1 expensive checks. --1402-- exectx: 30,011 lists, 67 contexts (avg 0 per list) --1402-- exectx: 204 searches, 137 full compares (671 per 1000) --1402-- exectx: 0 cmp2, 14 cmp4, 0 cmpAll |
|
From: Julian S. <js...@ac...> - 2007-05-25 06:59:11
|
> The illegal instruction appears to be: > > 1003be34: fc 00 08 1e fctiwz f0,f1 > =3D=3D1402=3D=3D Illegal opcode at address 0x4265A690 > =3D=3D1402=3D=3D at 0x1003BE34: BS_Scheduler::BS_Scheduler(BS_Manager*, fctiwz is definitely implemented - you can't do much FP computation on a PowerPC without it. Are you sure you have the right instruction? =46rom the stack trace you sent I'd guess the instruction is at=20 0x4265A690. Unfortunately that means it's in a shared library and=20 will be harder to track down with objdump. J |