Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 28 Jun 2013 16:00:02 GMT
From:      John Baldwin <jhb@freebsd.org>
To:        freebsd-bugs@FreeBSD.org
Subject:   Re: kern/131597: [kernel] c++ exceptions very slow on FreeBSD 7.1/amd64
Message-ID:  <201306281600.r5SG02G9041268@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help
The following reply was made to PR kern/131597; it has been noted by GNATS.

From: John Baldwin <jhb@freebsd.org>
To: bug-followup@freebsd.org,
 guillaume@morinfr.org
Cc: kib@freebsd.org,
 theraven@freebsd.org
Subject: Re: kern/131597: [kernel] c++ exceptions very slow on FreeBSD 7.1/amd64
Date: Fri, 28 Jun 2013 08:47:55 -0400

 Looking at this again, the patch committed in 178807 is just wrong and should 
 be reverted.  There is no state in rtld that needs to be protected via a write 
 lock.  GCC is too lazy to use their own locking to protect shared state 
 between threads and wants the runtime linker to enforce this.  Their 
 justification that glibc doesn't allow concurrent execution of this isn't a 
 valid excuse.  For an API like this that just walks a list and invokes a 
 callback, if the callback manipulates shared state owned by the caller, the 
 caller should be responsible for sychronizing access to it, not rtld!
 
 Instead I think we should apply the patch in the original GCC bug to our in-
 tree GCC and to our GCC ports.  This should remove the sigprocmask calls and
 not penalize other users of dl_iterate_phdr() for GCC's poor behavior.
 
 -- 
 John Baldwin



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201306281600.r5SG02G9041268>