--On February 12, 2008 6:12:08 PM +0000 quanah@zimbra.com wrote:
(and it passed 10 times for me successfully).
At Hallvard's request, I patched accesslog thusly:
diff -u accesslog.c.orig accesslog.c --- accesslog.c.orig 2008-02-12 10:18:16.000000000 -0800 +++ accesslog.c 2008-02-12 10:21:46.000000000 -0800 @@ -914,6 +914,7 @@ ldap_pvt_thread_mutex_lock( &li->li_log_mutex ); old = li->li_old; li->li_old = NULL; + assert(li->li_unlock == (int) ldap_pvt_thread_self()); li->li_unlock = 0; ldap_pvt_thread_mutex_unlock( &li->li_op_mutex ); } @@ -1262,7 +1263,8 @@ * overlays like refint to keep working. */ ldap_pvt_thread_mutex_lock( &li->li_op_mutex ); - li->li_unlock = 1; + /* li->li_unlock = 1; */ + li->li_unlock = (int) ldap_pvt_thread_self(); if ( li->li_oldf && ( op->o_tag == LDAP_REQ_DELETE || op->o_tag == LDAP_REQ_MODIFY )) { int rc;
Multiple runs of the test continued to be successful.
--Quanah
--
Quanah Gibson-Mount Principal Software Engineer Zimbra, Inc -------------------- Zimbra :: the leader in open source messaging and collaboration