This is the mail archive of the
libc-hacker@sourceware.cygnus.com
mailing list for the glibc project.
Re: read/thread/deadlock
Andreas Jaeger <aj@arthur.rhein-neckar.de> writes:
|> >>>>> marc writes:
|>
|> >> Description:
|> > perl compiled with thread support freezes in the testsuite on the t/io/read.t test. attaching
|> > to the process gives me the following backtrace:
|>
|> > #0 0x4005bdc1 in __syscall_rt_sigsuspend ()
|> > #1 0x4005ada8 in __sigsuspend (set=0xbffff568) at ../sysdeps/unix/sysv/linux/sigsuspend.c:44
|> > #2 0x40168479 in __pthread_lock (lock=0x8110eb8) at restart.h:32
|> > #3 0x4016643d in __pthread_mutex_lock (mutex=0x8110ea8) at mutex.c:84
|> > #4 0x40167ea7 in __flockfile (stream=0x8110e10) at lockfile.c:32
|> > #5 0x4008bae4 in _IO_seekoff (fp=0x8110e10, offset=0, dir=0, mode=3) at ioseekoff.c:41
|> > #6 0x4008c474 in fseek (fp=0x8110e10, offset=0, whence=0) at fseek.c:39
|> > #7 0x80ec3bf in Perl_do_seek ()
|>
|> > incidently, fseek locks the stream before calling ioseekfoff, which tries to
|> > do the same. after removing the lock, the testsuite stopped again at various other
|> > tests, similar diagnose.
|>
|> >> How-To-Repeat:
|> > compile perl with support for threads, make test.
|>
|> I just compiled perl 5.00502 with thread-support using egcs-1.1 and
|> using a glibc 2.1 from 980814 (later than 2.0.95), Linux 2.113 on
|> i486. make check did pass the whole perl testsuite (including
|> io/read).
|>
|> I do hope that the appended patch fixes your problem. The patch
|> should be in glibc 2.0.95.
The real bug was fixed here:
1998-07-23 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* sysdeps/pthread/bits/libc-lock.h: Make
__pthread_mutexattr_settype weak. Don't make
__pthread_mutexattr_setkind_np weak.
Index: sysdeps/pthread/bits/libc-lock.h
===================================================================
RCS file: /glibc/cvsfiles/libc/linuxthreads/sysdeps/pthread/bits/libc-lock.h,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -a -r1.4 -r1.5
--- libc-lock.h 1998/07/14 19:40:42 1.4
+++ libc-lock.h 1998/07/24 12:57:35 1.5
@@ -176,7 +176,7 @@
weak_extern (__pthread_mutex_unlock)
weak_extern (__pthread_mutexattr_init)
weak_extern (__pthread_mutexattr_destroy)
-weak_extern (__pthread_mutexattr_setkind_np)
+weak_extern (__pthread_mutexattr_settype)
weak_extern (__pthread_key_create)
weak_extern (__pthread_setspecific)
weak_extern (__pthread_getspecific)
@@ -195,7 +195,7 @@
# pragma weak __pthread_mutex_unlock
# pragma weak __pthread_mutexattr_init
# pragma weak __pthread_mutexattr_destroy
-# pragma weak __pthread_mutexattr_setkind_np
+# pragma weak __pthread_mutexattr_settype
# pragma weak __pthread_key_create
# pragma weak __pthread_setspecific
# pragma weak __pthread_getspecific
Andreas.
--
Andreas Schwab "And now for something
schwab@issan.informatik.uni-dortmund.de completely different"
schwab@gnu.org