I ran this again (still with 1.8.2) and got a core dump. There were 4 threads, and #2 was the one that failed.
static scm_t_guile_ticket scm_leave_guile () { scm_i_thread *t = suspend (); scm_i_pthread_mutex_unlock (&t->heap_mutex); return (scm_t_guile_ticket) t; } So this is trying to unlock heap_mutex. There are lots of comments in the course about how this is trouble. (gdb) bt #0 0xbba76c27 in _exit () from /usr/lib/libc.so.12 #1 0xbbaa2fd7 in pthread__errorfunc () from /usr/lib/libpthread.so.0 #2 0xbbaa0ddd in pthread_mutex_unlock () from /usr/lib/libpthread.so.0 #3 0xbbb98760 in scm_leave_guile () from /usr/home/gdt/NetBSD-current/pkgsrc/lang/guile/work/guile-1.8.2/libguile/.libs/libguile.so.17 #4 0xbbb99c52 in on_thread_exit () from /usr/home/gdt/NetBSD-current/pkgsrc/lang/guile/work/guile-1.8.2/libguile/.libs/libguile.so.17 #5 0xbba9fd9c in pthread__destroy_tsd () from /usr/lib/libpthread.so.0 #6 0xbbaa4465 in pthread_exit () from /usr/lib/libpthread.so.0 #7 0xbbaa47a8 in pthread_setcancelstate () from /usr/lib/libpthread.so.0 #8 0xbb9f7700 in swapcontext () from /usr/lib/libc.so.12 with 1.8.1, I get the same thing. Running threads.test guile: Error detected by libpthread: Unlocking unlocked mutex. Detected by file "/usr/home/gdt/NetBSD-current/src/lib/libpthread/pthread_mutex.c", line 357, function "pthread_mutex_unlock". See pthread(3) for information. [1] Abort trap (core dumped) ${dir}${tst} FAIL: check-guile (gdb) t 2 [Switching to thread 2 (process 221227)]#0 0xbb9d3e67 in kill () from /usr/lib/libc.so.12 (gdb) bt #0 0xbb9d3e67 in kill () from /usr/lib/libc.so.12 #1 0xbbaa2fcb in pthread__errorfunc () from /usr/lib/libpthread.so.0 #2 0xbbaa0ddd in pthread_mutex_unlock () from /usr/lib/libpthread.so.0 #3 0xbbb98488 in scm_leave_guile () from /usr/home/gdt/NetBSD-current/pkgsrc/lang/guile/work/guile-1.8.1/libguile/.libs/libguile.so.17 #4 0xbbb9997a in on_thread_exit () from /usr/home/gdt/NetBSD-current/pkgsrc/lang/guile/work/guile-1.8.1/libguile/.libs/libguile.so.17 #5 0xbba9fd9c in pthread__destroy_tsd () from /usr/lib/libpthread.so.0 #6 0xbbaa4465 in pthread_exit () from /usr/lib/libpthread.so.0 #7 0xbbaa47a8 in pthread_setcancelstate () from /usr/lib/libpthread.so.0 #8 0xbb9f7700 in swapcontext () from /usr/lib/libc.so.12 so it seems the same. 1.8.0 does not build easily (some of the pkgsrc patches don't apply, and it fails without them). _______________________________________________ Guile-devel mailing list Guile-devel@gnu.org http://lists.gnu.org/mailman/listinfo/guile-devel