In the monitor shutdown process, the MSG thread exits after the logger is released,
causing the null pointer to be accessed. So move the logger release to the MSG thread after it exits
Fixes: http://tracker.ceph.com/issues/37780
Signed-off-by: ningtao <ningtao@sangfor.com.cn>
(cherry picked from commit
47da5a0caa7edec17ff4253e363571b78372506a)
remove_all_sessions();
+ log_client.shutdown();
+
+ // unlock before msgr shutdown...
+ lock.Unlock();
+
+ // shutdown messenger before removing logger from perfcounter collection,
+ // otherwise _ms_dispatch() will try to update deleted logger
+ messenger->shutdown();
+ mgr_messenger->shutdown();
+
if (logger) {
cct->get_perfcounters_collection()->remove(logger);
delete logger;
delete cluster_logger;
cluster_logger = NULL;
}
-
- log_client.shutdown();
-
- // unlock before msgr shutdown...
- lock.Unlock();
-
- messenger->shutdown(); // last thing! ceph_mon.cc will delete mon.
- mgr_messenger->shutdown();
}
void Monitor::wait_for_paxos_write()