From 717ea0eb7487417a2bef82bf38c17ad575c7f0e6 Mon Sep 17 00:00:00 2001 From: "Nicolas \"Pixel\" Noble" Date: Sat, 11 Jul 2015 22:50:09 +0200 Subject: Install simple Windows exception handlers. Will prevent Windows tests to display a pop-up message in case of a failure. Essential for Jenkins testing. --- test/core/util/test_config.c | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) (limited to 'test/core/util') diff --git a/test/core/util/test_config.c b/test/core/util/test_config.c index 20ab67ec15..ba62e6d4c4 100644 --- a/test/core/util/test_config.c +++ b/test/core/util/test_config.c @@ -48,7 +48,35 @@ static int seed(void) { return getpid(); } static int seed(void) { return _getpid(); } #endif +#if GPR_WINDOWS_CRASH_HANDLER +LONG crash_handler(struct _EXCEPTION_POINTERS* ex_info) { + gpr_log(GPR_DEBUG, "Exception handler called, dumping information"); + while (ex_info->ExceptionRecord) { + DWORD code = ex_info->ExceptionRecord->ExceptionCode; + DWORD flgs = ex_info->ExceptionRecord->ExceptionFlags; + PVOID addr = ex_info->ExceptionRecord->ExceptionAddress; + gpr_log("code: %x - flags: %d - address: %p", code, flgs, addr); + ex_info->ExceptionRecord = ex_info->ExceptionRecord->ExceptionRecord; + } + if (IsDebuggerPresent()) { + __debugbreak(); + } else { + _exit(1); + } + return EXCEPTION_EXECUTE_HANDLER; +} + +static void install_crash_handler() { + SetUnhandledExceptionFilter((LPTOP_LEVEL_EXCEPTION_FILTER) crash_handler); + _set_abort_behavior(0, _WRITE_ABORT_MSG); + _set_abort_behavior(0, _CALL_REPORTFAULT); +} +#else +static void install_crash_handler() { } +#endif + void grpc_test_init(int argc, char **argv) { + install_crash_handler(); gpr_log(GPR_DEBUG, "test slowdown: machine=%f build=%f total=%f", (double)GRPC_TEST_SLOWDOWN_MACHINE_FACTOR, (double)GRPC_TEST_SLOWDOWN_BUILD_FACTOR, -- cgit v1.2.3