Thread #x is the program's root thread Thread #x unlocked a not-locked lock at 0x........ at 0x........: pthread_mutex_unlock (hg_intercepts.c:...) by 0x........: nearly_main (tc09_bad_unlock.c:27) by 0x........: main (tc09_bad_unlock.c:49) Lock at 0x........ was first observed at 0x........: pthread_mutex_init (hg_intercepts.c:...) by 0x........: nearly_main (tc09_bad_unlock.c:23) by 0x........: main (tc09_bad_unlock.c:49) Thread #x was created ... by 0x........: pthread_create@* (hg_intercepts.c:...) by 0x........: nearly_main (tc09_bad_unlock.c:35) by 0x........: main (tc09_bad_unlock.c:49) Thread #x unlocked lock at 0x........ currently held by thread #x at 0x........: pthread_mutex_unlock (hg_intercepts.c:...) by 0x........: child_fn (tc09_bad_unlock.c:11) by 0x........: mythread_wrapper (hg_intercepts.c:...) ... Lock at 0x........ was first observed at 0x........: pthread_mutex_init (hg_intercepts.c:...) by 0x........: nearly_main (tc09_bad_unlock.c:31) by 0x........: main (tc09_bad_unlock.c:49) Thread #x unlocked an invalid lock at 0x........ at 0x........: pthread_mutex_unlock (hg_intercepts.c:...) by 0x........: nearly_main (tc09_bad_unlock.c:41) by 0x........: main (tc09_bad_unlock.c:49) Thread #x's call to pthread_mutex_unlock failed with error code 22 (EINVAL: Invalid argument) at 0x........: pthread_mutex_unlock (hg_intercepts.c:...) by 0x........: nearly_main (tc09_bad_unlock.c:41) by 0x........: main (tc09_bad_unlock.c:49) --------------------- Thread #x unlocked a not-locked lock at 0x........ at 0x........: pthread_mutex_unlock (hg_intercepts.c:...) by 0x........: nearly_main (tc09_bad_unlock.c:27) by 0x........: main (tc09_bad_unlock.c:50) Lock at 0x........ was first observed at 0x........: pthread_mutex_init (hg_intercepts.c:...) by 0x........: nearly_main (tc09_bad_unlock.c:23) by 0x........: main (tc09_bad_unlock.c:49) Thread #x: Attempt to re-lock a non-recursive lock I already hold at 0x........: pthread_mutex_lock (hg_intercepts.c:...) by 0x........: nearly_main (tc09_bad_unlock.c:32) by 0x........: main (tc09_bad_unlock.c:50) Thread #x: Bug in libpthread: recursive write lock granted on mutex/wrlock which does not support recursion at 0x........: pthread_mutex_lock (hg_intercepts.c:...) by 0x........: nearly_main (tc09_bad_unlock.c:32) by 0x........: main (tc09_bad_unlock.c:50) Thread #x was created ... by 0x........: pthread_create@* (hg_intercepts.c:...) by 0x........: nearly_main (tc09_bad_unlock.c:35) by 0x........: main (tc09_bad_unlock.c:50) Thread #x unlocked lock at 0x........ currently held by thread #x at 0x........: pthread_mutex_unlock (hg_intercepts.c:...) by 0x........: child_fn (tc09_bad_unlock.c:11) by 0x........: mythread_wrapper (hg_intercepts.c:...) ... Lock at 0x........ was first observed at 0x........: pthread_mutex_init (hg_intercepts.c:...) by 0x........: nearly_main (tc09_bad_unlock.c:31) by 0x........: main (tc09_bad_unlock.c:49) Thread #x unlocked an invalid lock at 0x........ at 0x........: pthread_mutex_unlock (hg_intercepts.c:...) by 0x........: nearly_main (tc09_bad_unlock.c:41) by 0x........: main (tc09_bad_unlock.c:50) Thread #x's call to pthread_mutex_unlock failed with error code 22 (EINVAL: Invalid argument) at 0x........: pthread_mutex_unlock (hg_intercepts.c:...) by 0x........: nearly_main (tc09_bad_unlock.c:41) by 0x........: main (tc09_bad_unlock.c:50) Thread #x: Exiting thread still holds 1 lock ... ERROR SUMMARY: 11 errors from 11 contexts (suppressed: 0 from 0)