kern/131597: [kernel] c++ exceptions very slow on FreeBSD 7.1/amd64

John Baldwin jhb at freebsd.org
Thu Apr 22 20:10:03 UTC 2010


The following reply was made to PR kern/131597; it has been noted by GNATS.

From: John Baldwin <jhb at freebsd.org>
To: bug-followup at freebsd.org,
 guillaume at morinfr.org
Cc: kib at freebsd.org
Subject: Re: kern/131597: [kernel] c++ exceptions very slow on FreeBSD 7.1/amd64
Date: Thu, 22 Apr 2010 16:09:34 -0400

 I tracked the sigprocmask() system calls down to the operations to acquire a 
 write lock in the runtime linker.  The lock was added to fix an earlier bug 
 with throwing exceptions in multithreaded C++ apps.  The relevant commit that 
 added the lock is this:
 
    http://svn.freebsd.org/viewvc/base?view=revision&revision=178807
 
 Are exceptions permitted during a signal handler?  If not, then in theory we 
 would not need to invoke sigprocmask() for this particular lock perhaps?  I'm 
 not sure how easy that would be to achieve given the hooks to allow the thread 
 library to overload the locking routines.  Also, this doesn't explain the lack 
 of sigprocmask() calls under i386.  FreeBSD/i386 should be using the same 
 locking code and thus invoking sigprocmask() for each exception as well.
 
 -- 
 John Baldwin


More information about the freebsd-bugs mailing list