From owner-freebsd-threads@FreeBSD.ORG Fri May 20 06:40:08 2005 Return-Path: Delivered-To: freebsd-threads@hub.freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 04D4116A4CE for ; Fri, 20 May 2005 06:40:08 +0000 (GMT) Received: from freefall.freebsd.org (freefall.freebsd.org [216.136.204.21]) by mx1.FreeBSD.org (Postfix) with ESMTP id CF39B43D6D for ; Fri, 20 May 2005 06:40:07 +0000 (GMT) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (gnats@localhost [127.0.0.1]) by freefall.freebsd.org (8.13.3/8.13.3) with ESMTP id j4K6e7gM094401 for ; Fri, 20 May 2005 06:40:07 GMT (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.13.3/8.13.1/Submit) id j4K6e7oc094400; Fri, 20 May 2005 06:40:07 GMT (envelope-from gnats) Date: Fri, 20 May 2005 06:40:07 GMT Message-Id: <200505200640.j4K6e7oc094400@freefall.freebsd.org> To: freebsd-threads@FreeBSD.org From: Jens A Nilsson Subject: Re: threads/81258: Thread specific data is sometimes assigned to multiple keys and/or threads X-BeenThere: freebsd-threads@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list Reply-To: Jens A Nilsson List-Id: Threading on FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 20 May 2005 06:40:08 -0000 The following reply was made to PR threads/81258; it has been noted by GNATS. From: Jens A Nilsson To: Daniel Eischen Cc: Jens Nilsson , freebsd-gnats-submit@freebsd.org, freebsd-threads@freebsd.org Subject: Re: threads/81258: Thread specific data is sometimes assigned to multiple keys and/or threads Date: Fri, 20 May 2005 06:10:51 +0200 On Thu, May 19, 2005 at 08:52:23AM -0400, Daniel Eischen wrote: > On Thu, 19 May 2005, Jens Nilsson wrote: > > Thread specific data is sometimes assinged to multiple keys > > and/or threads. In the attached test program two threads getting > > the same tsd for the same key seems to be the most usual. > > > > >How-To-Repeat: > > Run the attached test program a couple of times. One of the > > threads will wait for input, the bug is most likely to show up if > > enter is pressed in about half a second after the thread asked > > for data. > > > > I ran into the bug some time ago while developing a bit more > > complex application that involved a couple of threads all of them > > with TSD and some doing RPC-calls. In that application I had the > > same problem with any of the thread libs libpthread, libthr, and > > libc_r. This test program only seems to be able to repeat the > > problem with libpthread. > > Thread-specific data is destroyed when the thread exits. Your > TSD is allocated using malloc() and destroyed using free(). Your > test program does nothing to ensure that all threads have started > running and have all created/initialized their TSD before the > first thread exits. malloc() is probably reusing a prior > allocation that has been free()'d. > > Thread exiting != Thread being joined. I see, sorry to have bothered you. -- Regards Jens