From 2fe33e6040c5fdc998e369b33a6b2de8a8b01f15 Mon Sep 17 00:00:00 2001 From: Martin Bligh Date: Wed, 24 Jun 2015 15:46:39 -0400 Subject: SERVER-18699 dump /proc/self/maps on a sigbus to make it easier to diagnose --- src/mongo/util/signal_handlers_synchronous.cpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'src/mongo/util') diff --git a/src/mongo/util/signal_handlers_synchronous.cpp b/src/mongo/util/signal_handlers_synchronous.cpp index 65531c51fcc..ac2d2bc7140 100644 --- a/src/mongo/util/signal_handlers_synchronous.cpp +++ b/src/mongo/util/signal_handlers_synchronous.cpp @@ -37,6 +37,7 @@ #include #include #include +#include #include #include #include @@ -265,6 +266,18 @@ void abruptQuitWithAddrSignal(int signalNum, siginfo_t* siginfo, void*) { printSignalAndBacktrace(signalNum); breakpoint(); + +#if defined(__linux__) + // Dump /proc/self/maps if possible to see where the bad address relates to our layout. + // We do this last just in case it goes wrong. + mallocFreeOStream << "/proc/self/maps:\n"; + std::ifstream is("/proc/self/maps"); + std::string str; + while(getline(is, str)) { + mallocFreeOStream << str; + writeMallocFreeStreamToLog(); + } +#endif quickExit(EXIT_ABRUPT); } -- cgit v1.2.1