DF-5674 / run.2.log
# run.2.log — attribution runs (SIGSEGV handler + dladdr) and gdb attempt root@dfbsd:/tmp # cc -g -O -o race_g race_keysym.c /tmp/proporig/libprop_orig.so -lpthread -Wl,-rpath,/tmp/proporig root@dfbsd:/tmp # gdb -batch -ex "set pagination off" -ex run -ex "thread apply all bt" ./race_g Program received signal SIGSEGV, Segmentation fault. Thread 1 (process 1022): #0 0x00000008006668bc in _umtx_sleep_err () from /usr/lib/libpthread.so.0 #1 0x00000008006667fa in _thr_umtx_wait () from /usr/lib/libpthread.so.0 #2 0x000000080066304b in ?? () from /usr/lib/libpthread.so.0 #3 0x00000008006632d3 in pthread_join () from /usr/lib/libpthread.so.0 #4 0x0000000000400f37 in main () at race_keysym.c:114 (gdb on this guest cannot enumerate the non-primary threads; the crashing thread frames are recovered instead by the in-process SIGSEGV handler below, which names the faulting symbol via dladdr(3).) root@dfbsd:/tmp # cc -g -O -o race_attr race_attr.c /tmp/proporig/libprop_orig.so -lpthread -Wl,-rpath,/tmp/proporig race_attr.c: In function 'segv': race_attr.c:34:2: warning: implicit declaration of function '_exit' [-Wimplicit-function-declaration] _exit(139); ^~~~~ race_attr.c:34:2: warning: incompatible implicit declaration of built-in function '_exit' root@dfbsd:/tmp # for i in 1 2 3 4 5; do ./race_attr; echo "--- run$i exit=$?"; done SIGSEGV in _prop_rb_tree_remove_node (/tmp/proporig/libprop_orig.so) addr=0x0 rip=0x800458f04 SIGSEGV in prop_object_iterator_release (/tmp/proporig/libprop_orig.so) addr=0x10 rip=0x800458a53 SIGSEGV in prop_object_iterator_release (/tmp/proporig/libprop_orig.so) addr=0x0 rip=0x8004589b2 SIGSEGV in _prop_rb_tree_remove_node (/tmp/proporig/libprop_orig.so) addr=0x8 rip=0x800458eaf SIGSEGV in _prop_rb_tree_remove_node (/tmp/proporig/libprop_orig.so) addr=0x0 rip=0x800458f04 --- run1 exit=139 --- run2 exit=139 --- run3 exit=139 --- run4 exit=139 --- run5 exit=139 # 5/5 crashes inside the global keysym rb-tree mutation paths.