From 1da71e6decb840a7f5dc68a378ba4c15b442e993 Mon Sep 17 00:00:00 2001 From: Quanah Gibson-Mount Date: Fri, 31 Oct 2008 23:54:18 +0000 Subject: [PATCH] ITS#5698 --- CHANGES | 1 + servers/slapd/back-bdb/init.c | 11 +++++++++++ 2 files changed, 12 insertions(+) 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 ); -- 2.39.5