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

(ITS#4368) locked mutex destroyed on shutdown



Full_Name: Donn Cave
Version: OPENLDAP_REL_ENG_2_3
OS: NetBSD 3.0
URL: 
Submission from: (NULL) (128.95.135.150)


At line 400 in libldap_r/tpool.c, in ldap_pvt_thread_pool_destroy, the thread
pool mutex gets destroyed, while the caller still holds a lock to this mutex
(evidently acquired at line 376 in the same function.)  The NetBSD 3.0 pthread
implementation aborts here with a complaint, causing a core dump.  Not sure the
core dump is really called for, but the specification says the result is
undefined (cf. http://www.opengroup.org/onlinepubs/009695399/functions/pthread_mutex_destroy.html
.)

I called ldap_pvt_thread_mutex_unlock(&pool->ltp_mutex) immediately before
(tpool.c:400), and that resolved the problem.  Another route might be to add a
pthread_mutex_unlock() to ldap_pvt_thread_mutex_destroy, thr_posix.c:316, if
this issue is peculiar to POSIX threads.  (Elsewhere it seems to me that destroy
implies unlock.)