From mboxrd@z Thu Jan 1 00:00:00 1970 From: John Van Horne To: gdb@sources.redhat.com Cc: jvhorne@cosinecom.com Subject: platform difference with threads -- help Date: Mon, 06 Aug 2001 17:07:00 -0000 Message-id: <200108070007.RAA15529@guava-lx.eng.cosinecom.com> X-SW-Source: 2001-08/msg00033.html Hi, I've got two PowerPC Linux platforms -- one is a G4 Macintosh, the other is one of my employer's products. Both are running Linux kernel 2.4.2. A while ago I built the 6/27/2001 snapshot of GDB on the G4. Now I've got a simple test program: #include #include void *do_thread(void *arg) { while(1); return NULL; } void *do_bad_thread(void *arg) { int *x; x=1; printf("bad number: %d\n", *x); return NULL; } int main(int argc, char **argv) { int i; pthread_t ptid; for( i=0; i<4; i++ ) { pthread_create(&ptid, NULL, do_thread, NULL); } pthread_create(&ptid, NULL, do_bad_thread, NULL ); } When I run the program under GDB on the G4, it works just fine: [jvhorne@g4-1 ppcutils]$ uname -a Linux g4-1.os.eng.cosinecom.com 2.4.2 #9 Fri Mar 30 16:43:45 PST 2001 ppc unknown [jvhorne@g4-1 ppcutils]$ /usr/local/bin/gdb gdb_thread_test GNU gdb 20010627 Copyright 2001 Free Software Foundation, Inc. GDB is free software, covered by the GNU General Public License, and you are welcome to change it and/or distribute copies of it under certain conditions. Type "show copying" to see the conditions. There is absolutely no warranty for GDB. Type "show warranty" for details. This GDB was configured as "powerpc-unknown-linux-gnu"... (gdb) run Starting program: /dvlp/jvhorne/ppcutils/gdb_thread_test [New Thread 1024 (runnable)] [New Thread 2049 (runnable)] [New Thread 1026 (runnable)] [New Thread 2051 (runnable)] [New Thread 3076 (runnable)] [New Thread 4101 (runnable)] [New Thread 5126 (runnable)] Program received signal SIGSEGV, Segmentation fault. [Switching to Thread 5126 (runnable)] 0x100004e8 in do_bad_thread (arg=0x0) at gdb_thread_test.c:15 15 printf("bad number: %d\n", *x); (gdb) But when I run it on the product I get: sh-2.03$ uname -a Linux blade3_pe0.cosine 2.4.2 #45 Mon Aug 6 10:18:17 PDT 2001 ppc unknown sh-2.03$ ./gdb gdb_thread_test GNU gdb 20010627 Copyright 2001 Free Software Foundation, Inc. GDB is free software, covered by the GNU General Public License, and you are welcome to change it and/or distribute copies of it under certain conditions. Type "show copying" to see the conditions. There is absolutely no warranty for GDB. Type "show warranty" for details. This GDB was configured as "powerpc-unknown-linux-gnu"... (gdb) run Starting program: /home/sharc/gdb_thread_test Program received signal SIG32, Real-time event 32. 0x0fedf224 in __syscall_rt_sigsuspend () from /lib/libc.so.6 (gdb) I can continue passed this until: (gdb) c Continuing. Program received signal SIGSEGV, Segmentation fault. 0x0fedf224 in __syscall_rt_sigsuspend () from /lib/libc.so.6 (gdb) Can anyone help me figure out why the behavior is different on the two platforms? The kernel version is the same. The test program is the same, and the GDB is the same. I also have the same libraries on both platforms. BTW, when I try using GDB 4.18, it does not have this difference between the two platforms. Thanks for any help, -John John Van Horne CoSine Communications, Inc. jvhorne@cosinecom.com