threads/144558: Repeated calls to __rpc_createerr allocates multiple thread-specific data slots

John Baldwin jhb at freebsd.org
Tue Mar 9 15:11:02 UTC 2010


On Monday 08 March 2010 12:51:39 pm Sam Robb wrote:
> 
> >Number:         144558
> >Category:       threads
> >Synopsis:       Repeated calls to __rpc_createerr allocates multiple 
thread-specific data slots
> >Confidential:   no
> >Severity:       serious
> >Priority:       medium
> >Responsible:    freebsd-threads
> >State:          open
> >Quarter:        
> >Keywords:       
> >Date-Required:
> >Class:          sw-bug
> >Submitter-Id:   current-users
> >Arrival-Date:   Mon Mar 08 18:00:16 UTC 2010
> >Closed-Date:
> >Last-Modified:
> >Originator:     Sam Robb
> >Release:        7.1
> >Organization:
> Avere Systems
> >Environment:
> FreeBSD build1.arriad.com 7.1-RELEASE FreeBSD 7.1-RELEASE #0: Thu Jan  1 
08:58:24 UTC 2009     
root at driscoll.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC  amd64
> >Description:
> On the first call to __rpc_createerr() in a thread, the function attempts to 
allocate a thread-specific slot to hold the rpc error data.  Subsequent calls 
from the same thread continue to allocate new thread-specific slots without 
freeing the first, so that repeated calls eventually result in all available 
thread-specific data slots being allocated.

Can you try this patch instead?  It changes the RPC code in libc to use 
pthread_once() to execute init functions that create various pthread keys used 
for per-thread data.

http://www.FreeBSD.org/~jhb/patches/rpc_once.patch

-- 
John Baldwin


More information about the freebsd-threads mailing list