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)

Reply via email to