From 8e993e6e43ecd6e2b444961d1e6c945081b64207 Mon Sep 17 00:00:00 2001 From: Kefu Chai Date: Wed, 16 Nov 2016 11:19:04 +0800 Subject: [PATCH] global/signal_handler: reset injected segv after test ~CephContext() => ~TypedSingletonWrapper() => ~MempoolObs => unregister_command() => ldout() << "unregister_command" => Log::submit_entry() => *(volatile int *)(0) = 0xdead; Signed-off-by: Kefu Chai (cherry picked from commit d932c8f2f23263924103a900714db82ee87f6eef) Conflicts: src/log/Log.cc - jewel has "namespace log" instead of "namespace logging" (trivial resolution) --- src/log/Log.cc | 5 +++++ src/log/Log.h | 1 + src/test/signals.cc | 1 + 3 files changed, 7 insertions(+) diff --git a/src/log/Log.cc b/src/log/Log.cc index 1d74b0060f323..3119b013d5be7 100644 --- a/src/log/Log.cc +++ b/src/log/Log.cc @@ -474,5 +474,10 @@ void Log::inject_segv() m_inject_segv = true; } +void Log::reset_segv() +{ + m_inject_segv = false; +} + } // ceph::log:: } // ceph:: diff --git a/src/log/Log.h b/src/log/Log.h index 687cb9b7b1981..376ef40c22d97 100644 --- a/src/log/Log.h +++ b/src/log/Log.h @@ -96,6 +96,7 @@ public: /// induce a segv on the next log event void inject_segv(); + void reset_segv(); }; } diff --git a/src/test/signals.cc b/src/test/signals.cc index 2cae0fab8f9b2..24d72168f6a79 100644 --- a/src/test/signals.cc +++ b/src/test/signals.cc @@ -118,6 +118,7 @@ TEST(SignalHandler, LogInternal) { g_ceph_context->_log->inject_segv(); ASSERT_DEATH(derr << "foo" << dendl, ".*"); + g_ceph_context->_log->reset_segv(); } -- 2.39.5