From: Ralf Habacker Date: Mon, 9 May 2016 15:31:17 +0000 (+0200) Subject: Suppress Windows popups and jit debugger when app crashes with exception. X-Git-Tag: dbus-1.10.10~23 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5ef167c1399499cf12d5800855cbe80f5b2439b6;p=thirdparty%2Fdbus.git Suppress Windows popups and jit debugger when app crashes with exception. Based on a patch from Yiyang Fei. Bug: https://bugs.freedesktop.org/show_bug.cgi?id=95155 Reviewed-by: Simon McVittie --- diff --git a/test/test-segfault.c b/test/test-segfault.c index c062ce1cd..7e2e82a15 100644 --- a/test/test-segfault.c +++ b/test/test-segfault.c @@ -13,11 +13,36 @@ #include #endif +#ifdef DBUS_WIN +#include + +int +exception_handler(LPEXCEPTION_POINTERS p); + +/* Explicit Windows exception handlers needed to supress OS popups */ +int +exception_handler(LPEXCEPTION_POINTERS p) +{ + fprintf(stderr, "test-segfault: raised fatal exception as intended\n"); + ExitProcess(0xc0000005); +} +#endif + int main (int argc, char **argv) { char *p; +#ifdef DBUS_WIN + /* Disable Windows popup dialog when an app crashes so that app quits + * immediately with error code instead of waiting for user to dismiss + * the dialog. */ + DWORD dwMode = SetErrorMode(SEM_NOGPFAULTERRORBOX); + SetErrorMode(dwMode | SEM_NOGPFAULTERRORBOX); + /* Disable "just in time" debugger */ + SetUnhandledExceptionFilter((LPTOP_LEVEL_EXCEPTION_FILTER)&exception_handler); +#endif + #if HAVE_SETRLIMIT /* No core dumps please, we know we crashed. */ struct rlimit r = { 0, };