summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTor Brede Vekterli <vekterli@vespa.ai>2024-04-09 14:20:01 +0000
committerTor Brede Vekterli <vekterli@vespa.ai>2024-04-09 14:20:01 +0000
commit0f19429b96e31a3bdff4658deef9f8910c53c1f5 (patch)
tree5a73521e7cd291d67d08b451e3d0cc921e6bcda6
parent65790df4dfb9e5c0ab3e1fd90fa117351bb624ef (diff)
Add Abseil failure signal handler to test runner to get stack dumps for crashes
-rw-r--r--storage/src/tests/persistence/filestorage/CMakeLists.txt1
-rw-r--r--storage/src/tests/persistence/filestorage/gtest_runner.cpp11
2 files changed, 11 insertions, 1 deletions
diff --git a/storage/src/tests/persistence/filestorage/CMakeLists.txt b/storage/src/tests/persistence/filestorage/CMakeLists.txt
index 951a361474e..aa7c9fe995c 100644
--- a/storage/src/tests/persistence/filestorage/CMakeLists.txt
+++ b/storage/src/tests/persistence/filestorage/CMakeLists.txt
@@ -19,6 +19,7 @@ vespa_add_executable(storage_filestorage_gtest_runner_app TEST
storage_testhostreporter
storage_testpersistence_common
GTest::GTest
+ absl::failure_signal_handler
)
vespa_add_test( NAME storage_filestorage_gtest_runner_app COMMAND storage_filestorage_gtest_runner_app COST 50)
diff --git a/storage/src/tests/persistence/filestorage/gtest_runner.cpp b/storage/src/tests/persistence/filestorage/gtest_runner.cpp
index 5d1fde4130c..1ed7bc91843 100644
--- a/storage/src/tests/persistence/filestorage/gtest_runner.cpp
+++ b/storage/src/tests/persistence/filestorage/gtest_runner.cpp
@@ -1,8 +1,17 @@
// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include <vespa/vespalib/gtest/gtest.h>
+#include <absl/debugging/failure_signal_handler.h>
#include <vespa/log/log.h>
LOG_SETUP("storage_filestorage_gtest_runner");
-GTEST_MAIN_RUN_ALL_TESTS()
+int main(int argc, char* argv[]) {
+ absl::FailureSignalHandlerOptions opts;
+ opts.call_previous_handler = true;
+ opts.use_alternate_stack = false; // Suboptimal, but needed to get proper backtracing (for some reason...)
+ absl::InstallFailureSignalHandler(opts);
+
+ ::testing::InitGoogleTest(&argc, argv);
+ return RUN_ALL_TESTS();
+}