From owner-freebsd-threads@FreeBSD.ORG Sun May 2 20:39:01 2004 Return-Path: Delivered-To: freebsd-threads@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id D1BF016A4CE for ; Sun, 2 May 2004 20:39:01 -0700 (PDT) Received: from mail.pcnet.com (mail.pcnet.com [204.213.232.4]) by mx1.FreeBSD.org (Postfix) with ESMTP id 6A10643D2D for ; Sun, 2 May 2004 20:39:01 -0700 (PDT) (envelope-from eischen@vigrid.com) Received: from mail.pcnet.com (mail.pcnet.com [204.213.232.4]) by mail.pcnet.com (8.12.10/8.12.1) with ESMTP id i433cpS8007014; Sun, 2 May 2004 23:38:51 -0400 (EDT) Date: Sun, 2 May 2004 23:38:51 -0400 (EDT) From: Daniel Eischen X-Sender: eischen@pcnet5.pcnet.com To: =?iso-8859-1?q?Dag-Erling_Sm=F8rgrav?= In-Reply-To: Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=X-UNKNOWN Content-Transfer-Encoding: QUOTED-PRINTABLE cc: mbretter@a-quadrat.at cc: julian@elischer.org cc: Archie Cobbs cc: freebsd-threads@freebsd.org Subject: Re: libthr, libpthread problems X-BeenThere: freebsd-threads@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: Threading on FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 03 May 2004 03:39:01 -0000 On Mon, 3 May 2004, [iso-8859-1] Dag-Erling Sm=F8rgrav wrote: > Archie Cobbs writes: > > Dan Eischen wrote: > > > Sounds like a bug in the application (recurse count shouldn't > > > be less than zero). > > Nope.. here's a simpler test case that demonstrates the problem: >=20 > Perfectly reproducable, definitely a libthr bug: Yes, I replied yesterday with a patch to libthr to fix the problem, but the @threads address was screwed up in the message header so it never made the list. Here it is again. Index: thread/thr_mutex.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /opt/FreeBSD/cvs/src/lib/libthr/thread/thr_mutex.c,v retrieving revision 1.25 diff -u -r1.25 thr_mutex.c --- thread/thr_mutex.c=0929 Mar 2004 09:35:07 -0000=091.25 +++ thread/thr_mutex.c=091 May 2004 22:18:34 -0000 @@ -414,6 +414,8 @@ =09=09/* Nothing */ =09=09break; =09} +=09if ((*mutex)->m_type =3D=3D PTHREAD_MUTEX_RECURSIVE) +=09=09(*mutex)->m_data.m_count++; =09_thread_critical_exit(curthread); out: =09_SPINUNLOCK(&(*mutex)->lock); --=20 Dan Eischen