diff options
-rw-r--r-- | src/client/linux/handler/exception_handler_unittest.cc | 46 |
1 files changed, 23 insertions, 23 deletions
diff --git a/src/client/linux/handler/exception_handler_unittest.cc b/src/client/linux/handler/exception_handler_unittest.cc index cede40bd..eda60c95 100644 --- a/src/client/linux/handler/exception_handler_unittest.cc +++ b/src/client/linux/handler/exception_handler_unittest.cc @@ -465,6 +465,29 @@ TEST(ExceptionHandlerTest, StackedHandlersUnhandledToBottom) { ASSERT_NO_FATAL_FAILURE(WaitForProcessToTerminate(child, SIGKILL)); } +namespace { +const int kSimpleFirstChanceReturnStatus = 42; +bool SimpleFirstChanceHandler(int, void*, void*) { + exit(kSimpleFirstChanceReturnStatus); +} +} + +TEST(ExceptionHandlerTest, FirstChanceHandlerRuns) { + AutoTempDir temp_dir; + + const pid_t child = fork(); + if (child == 0) { + ExceptionHandler handler( + MinidumpDescriptor(temp_dir.path()), NULL, NULL, NULL, true, -1); + google_breakpad::SetFirstChanceExceptionHandler(SimpleFirstChanceHandler); + DoNullPointerDereference(); + } + int status; + ASSERT_NE(HANDLE_EINTR(waitpid(child, &status, 0)), -1); + ASSERT_TRUE(WIFEXITED(status)); + ASSERT_EQ(kSimpleFirstChanceReturnStatus, WEXITSTATUS(status)); +} + #endif // !ADDRESS_SANITIZER const unsigned char kIllegalInstruction[] = { @@ -1177,26 +1200,3 @@ TEST(ExceptionHandlerTest, WriteMinidumpForChild) { close(fds[1]); unlink(minidump_filename.c_str()); } - -namespace { -const int kSimpleFirstChanceReturnStatus = 42; -bool SimpleFirstChanceHandler(int, void*, void*) { - exit(kSimpleFirstChanceReturnStatus); -} -} - -TEST(ExceptionHandlerTest, FirstChanceHandlerRuns) { - AutoTempDir temp_dir; - - const pid_t child = fork(); - if (child == 0) { - ExceptionHandler handler( - MinidumpDescriptor(temp_dir.path()), NULL, NULL, NULL, true, -1); - google_breakpad::SetFirstChanceExceptionHandler(SimpleFirstChanceHandler); - DoNullPointerDereference(); - } - int status; - ASSERT_NE(HANDLE_EINTR(waitpid(child, &status, 0)), -1); - ASSERT_TRUE(WIFEXITED(status)); - ASSERT_EQ(kSimpleFirstChanceReturnStatus, WEXITSTATUS(status)); -} |