[Date Prev][Date Next] [Chronological] [Thread] [Top]

RE: slapd lockup (ITS#210)


Here my quick (and probably naive) analysis...

>      t@1  a l@15 ?()   sleep on 0xef526298     in _lwp_sema_wait()=0A=
Main thread, joining with daemon thread.

> >    t@2  b l@2  ?()   running                 in __signotifywait()=0A=
LWP internal thread?  catching signals

>      t@3  a l@27 ?()   sleep on 0xef526dd0     in _lwp_sema_wait()=0A=
Operation thread, waiting to be reaped?  This thread should
be detached and hence will never be joined.  It should be "reaped"
automatically by lwp.

>      t@4  a l@34 slapd_daemon()        running                 in =
Daemon thread, running

Based upon this, I suspect that LWP is not automatically "reaping"
detached threads and, as such, the server will eventually run out of
threads and fail in odd ways. 

Our detach mechanism is fairly straight forward and believed to be
correct.  Maybe the Solaris pthread implementation doesn't support
detached threads.  Solaris experts?