https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66848
--- Comment #2 from Jack Howarth <howarth.at.gcc at gmail dot com> --- The seg fault in the thread_leak_test back traces as... # lldb ./thread_leak_test (lldb) target create "./thread_leak_test" Current executable set to './thread_leak_test' (x86_64). (lldb) r Process 35899 launched: './thread_leak_test' (x86_64) Process 35899 stopped * thread #2: tid = 0x20cc95, 0x000000010000c48b libgcjgc.1.dylib`GC_mark_from(mark_stack_top=0x00000001000b1430, mark_stack=0x00000001000b1000, mark_stack_limit=0x00000001000c1000) + 283 at mark.c:759, stop reason = EXC_BAD_ACCESS (code=1, address=0x7fff7f95a158) frame #0: 0x000000010000c48b libgcjgc.1.dylib`GC_mark_from(mark_stack_top=0x00000001000b1430, mark_stack=0x00000001000b1000, mark_stack_limit=0x00000001000c1000) + 283 at mark.c:759 756 for(;;) { 757 PREFETCH((ptr_t)limit - PREF_DIST*CACHE_LINE_SIZE); 758 GC_ASSERT(limit >= current_p); -> 759 deferred = *limit; 760 FIXUP_POINTER(deferred); 761 limit = (word *)((char *)limit - ALIGNMENT); 762 if ((ptr_t)deferred >= least_ha && (ptr_t)deferred < greatest_ha) { (lldb) bt * thread #2: tid = 0x20cc95, 0x000000010000c48b libgcjgc.1.dylib`GC_mark_from(mark_stack_top=0x00000001000b1430, mark_stack=0x00000001000b1000, mark_stack_limit=0x00000001000c1000) + 283 at mark.c:759, stop reason = EXC_BAD_ACCESS (code=1, address=0x7fff7f95a158) * frame #0: 0x000000010000c48b libgcjgc.1.dylib`GC_mark_from(mark_stack_top=0x00000001000b1430, mark_stack=0x00000001000b1000, mark_stack_limit=0x00000001000c1000) + 283 at mark.c:759 frame #1: 0x000000010000db66 libgcjgc.1.dylib`GC_mark_some(cold_gc_frame=0x0000700000080d6c) + 518 at mark.c:378 frame #2: 0x00000001000054d8 libgcjgc.1.dylib`GC_stopped_mark(stop_func=0x00000001000051c0) + 120 at alloc.c:531 frame #3: 0x0000000100005d31 libgcjgc.1.dylib`GC_try_to_collect_inner(stop_func=0x00000001000051c0) + 145 at alloc.c:378 frame #4: 0x0000000100005ffc libgcjgc.1.dylib`GC_try_to_collect(stop_func=0x00000001000051c0) + 92 at alloc.c:781 frame #5: 0x0000000100006070 libgcjgc.1.dylib`GC_gcollect + 16 at alloc.c:794 frame #6: 0x0000000100000d18 thread_leak_test`test + 72 frame #7: 0x00000001000145c4 libgcjgc.1.dylib`GC_start_routine(arg=<unavailable>) + 244 at pthread_support.c:1301 frame #8: 0x00007fff9e60fc8f libsystem_pthread.dylib`_pthread_body + 131 frame #9: 0x00007fff9e60fc0c libsystem_pthread.dylib`_pthread_start + 168 frame #10: 0x00007fff9e60d3f5 libsystem_pthread.dylib`thread_start + 13 (lldb)