From: Quanah Gibson-Mount Date: Fri, 31 Oct 2008 23:54:18 +0000 (+0000) Subject: ITS#5698 X-Git-Tag: OPENLDAP_REL_ENG_2_4_13~142 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=1da71e6decb840a7f5dc68a378ba4c15b442e993;p=openldap ITS#5698 --- diff --git a/CHANGES b/CHANGES index c7651e1edf..bec65ffda2 100644 --- a/CHANGES +++ b/CHANGES @@ -1,6 +1,7 @@ OpenLDAP 2.4 Change Log OpenLDAP 2.4.13 Engineering + Fixed slapd-bdb/hdb invalid db crash (ITS#5698) OpenLDAP 2.4.12 Release (2008/10/12) Fixed libldap ldap_utf8_strchar arguments (ITS#5720) diff --git a/servers/slapd/back-bdb/init.c b/servers/slapd/back-bdb/init.c index 14bd1b1bfc..393b6a52f4 100644 --- a/servers/slapd/back-bdb/init.c +++ b/servers/slapd/back-bdb/init.c @@ -640,6 +640,17 @@ bdb_db_destroy( BackendDB *be, ConfigReply *cr ) { struct bdb_info *bdb = (struct bdb_info *) be->be_private; + /* stop and remove checkpoint task */ + if ( bdb->bi_txn_cp_task ) { + struct re_s *re = bdb->bi_txn_cp_task; + bdb->bi_txn_cp_task = NULL; + ldap_pvt_thread_mutex_lock( &slapd_rq.rq_mutex ); + if ( ldap_pvt_runqueue_isrunning( &slapd_rq, re ) ) + ldap_pvt_runqueue_stoptask( &slapd_rq, re ); + ldap_pvt_runqueue_remove( &slapd_rq, re ); + ldap_pvt_thread_mutex_unlock( &slapd_rq.rq_mutex ); + } + /* monitor handling */ (void)bdb_monitor_db_destroy( be );