diff options
author | Nicolas "Pixel" Noble <pixel@nobis-crew.org> | 2015-07-11 22:50:09 +0200 |
---|---|---|
committer | Nicolas "Pixel" Noble <pixel@nobis-crew.org> | 2015-07-12 00:01:03 +0200 |
commit | 717ea0eb7487417a2bef82bf38c17ad575c7f0e6 (patch) | |
tree | 2a48087cac80b69734d4c48bfca6073d76a5d1b4 /test | |
parent | 4547d503d37ade45866688dae3ce291ec8a450bd (diff) |
Install simple Windows exception handlers.
Will prevent Windows tests to display a pop-up message in case of a failure. Essential for Jenkins testing.
Diffstat (limited to 'test')
-rw-r--r-- | test/core/util/test_config.c | 28 |
1 files changed, 28 insertions, 0 deletions
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, |