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

Reply via email to