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

Re: deadlock of slapd on Sun MP machine (ITS#704)



Try this patch...

http://www.openldap.org/devel/cvsweb.cgi/servers/slapd/connection.c.diff?r1=1.124&r2=1.125


At 09:36 PM 9/1/00 +0000, karsten.kuenne@desy.de wrote:
>Full_Name: Karsten Künne
>Version: 2.0.0
>OS: Solaris 7
>URL: ftp://ftp.openldap.org/incoming/
>Submission from: (NULL) (131.169.137.215)
>
>
>I tried to install OpenLDAP 2.0.0 on a Sun E220R (2x450 MHz UltraSPARC) but the
>"make test" was always hanging at random tests and at random points inside the
>tests.
>After instrumenting connections.c with a lot of "Debug" macros around all calls
>to
>ldap_pvt_thread_mutex_lock and ldap_pvt_thread_mutex_unlock I nailed it down.
>Here's
>what happens:
>
>first thread: - calls connection_read
>              - connection_read locks connections_mutex
>              - calls connection_get
>              - connection_get tries to get lock on c_mutex of the connection
>
>second thread: - calls connection_operation (operation is unbind)
>               - connection_operation locks c_mutex of connection
>               - connection_operation calls connection_closing
>               - connection_operation calls connection_resched
>               - connection_resched tries to get lock on connections_mutex
>
>          ======  DEADLOCK =====
>
>The first thread holds the connections_mutex and waits for the c_mutex, the
>second
>thread holds the c_mutex and waits for the connections_mutex. It'll probabely
>only
>happen on MP machines and also not always. For me it happened more or less
>randomly.
>I have no solution yet but I'll try to find a way out.