Skip site navigation (1)Skip section navigation (2)
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>