From owner-svn-src-all@FreeBSD.ORG Tue Sep 28 22:29:34 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from [127.0.0.1] (freefall.freebsd.org [IPv6:2001:4f8:fff6::28]) by hub.freebsd.org (Postfix) with ESMTP id 8627E106564A; Tue, 28 Sep 2010 22:29:22 +0000 (UTC) (envelope-from jkim@FreeBSD.org) From: Jung-uk Kim To: John Baldwin Date: Tue, 28 Sep 2010 18:29:06 -0400 User-Agent: KMail/1.6.2 References: <201009280457.o8S4vuS9060037@svn.freebsd.org> <201009281202.22555.jkim@FreeBSD.org> <201009281220.12278.jkim@FreeBSD.org> In-Reply-To: <201009281220.12278.jkim@FreeBSD.org> MIME-Version: 1.0 Content-Disposition: inline Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Message-Id: <201009281829.13253.jkim@FreeBSD.org> Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org, David Xu Subject: Re: svn commit: r213241 - in head: include lib/libthr/thread X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 28 Sep 2010 22:29:34 -0000 On Tuesday 28 September 2010 12:20 pm, Jung-uk Kim wrote: > On Tuesday 28 September 2010 12:02 pm, Jung-uk Kim wrote: > > On Tuesday 28 September 2010 09:31 am, John Baldwin wrote: > > > On Tuesday, September 28, 2010 12:57:56 am David Xu wrote: > > > > Author: davidxu > > > > Date: Tue Sep 28 04:57:56 2010 > > > > New Revision: 213241 > > > > URL: http://svn.freebsd.org/changeset/base/213241 > > > > > > > > Log: > > > > In current code, statically initialized and destroyed > > > > object have same null value, the code can not distinguish > > > > between them, to fix the problem, now a destroyed object is > > > > assigned to a non-null value, and it will be rejected by some > > > > pthread functions. PTHREAD_ADAPTIVE_MUTEX_INITIALIZER_NP is > > > > changed to number 1, so that adaptive mutex can be statically > > > > initialized correctly. > > > > > > Does this fix PR threads/150889 then? > > > > It seems it does. > > Unfortunately, it seems to have a regression: > > %cat test.c > #include > #include > > static pthread_cond_t static_cond = PTHREAD_COND_INITIALIZER; > static pthread_mutex_t static_mutex = PTHREAD_MUTEX_INITIALIZER; > > int > main(void) > { > > // pthread_mutex_lock(&static_mutex); > printf("%d\n", pthread_cond_wait(&static_cond, &static_mutex)); > pthread_mutex_unlock(&static_mutex); > > return (0); > } > %cc -o test test.c -pthread > %./test > Segmentation fault (core dumped) > > pthread_cond_wait(3) had to return EPERM here. :-( I realized it is a libthr "feature" to catch real application bugs and to increase performance by not checking rare conditions, I guess. :-/ Sorry for the noise, Jung-uk Kim