diff options
author | Tad Marshall <tad@10gen.com> | 2012-12-16 12:05:06 -0500 |
---|---|---|
committer | Tad Marshall <tad@10gen.com> | 2012-12-16 16:45:02 -0500 |
commit | c5aa1730a511ecffcb7dab2f7b32b6ee607c933d (patch) | |
tree | 92e75ae230a2aa990a7ea94980481570300226fb /src/mongo/util/stacktrace.cpp | |
parent | 81a8d87fa7a1a614ca0e0c0c93c260052af541b9 (diff) | |
download | mongo-c5aa1730a511ecffcb7dab2f7b32b6ee607c933d.tar.gz |
SERVER-7956 Do not display dialog on CRT assertion, print stack trace
Use the C runtime "report hook" to handle reporting of C runtime assertions
ourselves instead of having the C runtime do it. Log the message and print
a stack trace to help with debugging.
Diffstat (limited to 'src/mongo/util/stacktrace.cpp')
-rw-r--r-- | src/mongo/util/stacktrace.cpp | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/src/mongo/util/stacktrace.cpp b/src/mongo/util/stacktrace.cpp index 1926cd48c3b..ab405c9a717 100644 --- a/src/mongo/util/stacktrace.cpp +++ b/src/mongo/util/stacktrace.cpp @@ -295,6 +295,16 @@ namespace mongo { log() << ss.str() << std::endl; } } + + // Print error message from C runtime followed by stack trace + int crtDebugCallback(int, char* originalMessage, int*) { + StringData message(originalMessage); + log() << "*** C runtime error: " + << message.substr(0, message.find('\n')) << std::endl; + printStackTrace(); + return 1; // 0 == not handled, non-0 == handled + } + } #else |