Date: Wed, 4 Jun 2003 11:30:44 -0400 (EDT) From: Daniel Eischen <eischen@pcnet.com> To: Kern Sibbald <kern@sibbald.com> Cc: freebsd-threads@freebsd.org Subject: Re: FreeBSD pthread_equal "bug" Message-ID: <Pine.GSO.4.10.10306041126030.13583-100000@pcnet5.pcnet.com> In-Reply-To: <1054730325.13630.456.camel@rufus>
next in thread | previous in thread | raw e-mail | index | archive | help
On 4 Jun 2003, Kern Sibbald wrote: > Hello, > > I've run into what I consider a bug in the FreeBSD > implementation of pthreads and pthread_equal() in > particular. Basically, pthread_equal() will return > true even if it is not the same thread. This can occur > when one thread dies and another one starts. The second > thread then takes on the exact identity of the the > first thread, and pthread_equal() returns true for a > case where it is a different thread. You may argue > that the first thread is dead so its thread id is no > longer valid. True, but think about how Unix would > work if every process started up with the process > id of the last process to exit. Process id's can wrap around so it can eventually happen. This is a bug in the application; the implementation is allowed to reuse thread id's and there are enough interfaces for an application to tell when a thread terminates (pthread_join). Perhaps our use of thread id's could be changes so that they were cached at the end of the free thread list, but cacheing them at the front seems to highlight bad applications, so that's a bonus ;-) -- Dan Eischen
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.GSO.4.10.10306041126030.13583-100000>