[Gc] powerpc64 problems
twisti at complang.tuwien.ac.at
Tue Nov 22 13:15:17 PST 2005
On Tue, 2005-11-22 at 12:39 -0800, Boehm, Hans wrote:
> It looks like we're either seeing a deadlock, or another thread is hung.
> Could you check whether in this mode, it is consuming significant
> amounts of CPU time?
It's using 0% of cpu time.
> Could you also post stack backtraces for all the threads? It would be
> good to know who is holding the allocation lock, and what that thread is
> doing. The stack trace you posted only indicates that some thread is
> waiting for the allocation lock.
Hmm, strange enough but there is only one thread:
(gdb) info threads
* 1 Thread 549757910752 (LWP 7065) 0x0000008000043cc0
() from /lib/tls/libpthread.so.0
> It may be that the GC_test_and_set implementation is broken on
> PowerPC64. You might try building with USE_PTHREAD_LOCKS, and see if
> that works. (This may be better with NPTL threads anyway.)
Interesting you're mentioning this function as this one crashes when
linked statically into CACAO (i should have mentioned this in my first
Program received signal SIGBUS, Bus error.
[Switching to Thread 549758075648 (LWP 18022)]
0x00000000100322f8 in GC_test_and_set (addr=0x1006b314) at
163 __asm__ __volatile__(
#0 0x00000000100322f8 in GC_test_and_set (addr=0x1006b314) at
#1 0x0000000010033460 in GC_expand_hp (bytes=102400) at alloc.c:996
#2 0x0000000010005ddc in gc_init (heapmaxsize=2097152,
heapstartsize=102400) at boehm.c:110
#3 0x00000000100035d4 in main (argc=6, argv=0x1ffffa5b448) at
Dump of assembler code for function GC_test_and_set:
0x00000000100322d8 <GC_test_and_set+0>: std r31,-8(r1)
0x00000000100322dc <GC_test_and_set+4>: stdu r1,-80(r1)
0x00000000100322e0 <GC_test_and_set+8>: mr r31,r1
0x00000000100322e4 <GC_test_and_set+12>: std r3,128(r31)
0x00000000100322e8 <GC_test_and_set+16>: li r0,1
0x00000000100322ec <GC_test_and_set+20>: std r0,56(r31)
0x00000000100322f0 <GC_test_and_set+24>: ld r0,56(r31)
0x00000000100322f4 <GC_test_and_set+28>: ld r9,128(r31)
0x00000000100322f8 <GC_test_and_set+32>: ldarx r11,0,r9
When defining USE_PTHREAD_LOCKS the gctest works. Why do you think this
will be better with NPTL threads?
More information about the Gc