The first Windows pattern in user mode (Volume 1, page 255) now has Mac OS X equivalent. In the example below there are 3 threads and two of them experienced Data NULL Pointer (page 206) access violation exception:
(gdb) thread apply all bt full Thread 3 (core thread 2): #0 0x00000001062ffe4e in thread_two (arg=0x0) at main.c:24 p = (int *) 0×0 #1 0×00007fff8abf58bf in _pthread_start () No symbol table info available. #2 0×00007fff8abf8b75 in thread_start () No symbol table info available.
Thread 2 (core thread 1): #0 0x00000001062ffe1e in thread_one (arg=0x0) at main.c:16 p = (int *) 0×0 #1 0×00007fff8abf58bf in _pthread_start () No symbol table info available. #2 0×00007fff8abf8b75 in thread_start () No symbol table info available.
Thread 1 (core thread 0): #0 0x00007fff854e0e42 in __semwait_signal () No symbol table info available. #1 0x00007fff8ababdea in nanosleep () No symbol table info available. #2 0x00007fff8ababc2c in sleep () No symbol table info available. #3 0x00000001062ffec3 in main (argc=1, argv=0x7fff65efeab8) at main.c:36 threadID_one = (pthread_t) 0×1063b4000 threadID_two = (pthread_t) 0×106581000
(gdb) thread 2 [Switching to thread 2 (core thread 1)] 0x00000001062ffe1e in thread_one (arg=0x0) at main.c:16 16 *p = 1; (gdb) p/x p $1 = 0×0
(gdb) thread 3 [Switching to thread 3 (core thread 2)] 0x00000001062ffe4e in thread_two (arg=0x0) at main.c:24 24 *p = 2; (gdb) p/x p $2 = 0×0