diff options
author | Tamar Christina <tamar@zhox.com> | 2018-01-02 16:00:57 -0500 |
---|---|---|
committer | Ben Gamari <ben@smart-cactus.org> | 2018-01-02 17:33:04 -0500 |
commit | 27b7b4db9af99aeb88dce7ef0e85131199bbf2ff (patch) | |
tree | db4d5bbc750857ce55d7bcc09962002e4ba176d3 /rts/win32 | |
parent | 4887c3086149a15a1e16c765682debcfbb9de145 (diff) | |
download | haskell-27b7b4db9af99aeb88dce7ef0e85131199bbf2ff.tar.gz |
Windows: fix all failing tests.
This makes the testsuite pass clean on Windows again.
It also fixes the `libstdc++-6.dll` error harbormaster
was showing.
I'm marking some tests as isolated tests to reduce their
flakiness (mostly concurrency tests) when the test system
is under heavy load.
Updates process submodule.
Test Plan: ./validate
Reviewers: hvr, bgamari, erikd, simonmar
Reviewed By: bgamari
Subscribers: rwbarton, thomie, carter
Differential Revision: https://phabricator.haskell.org/D4277
Diffstat (limited to 'rts/win32')
-rw-r--r-- | rts/win32/veh_excn.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/rts/win32/veh_excn.c b/rts/win32/veh_excn.c index 4b7d29a1a1..a4e5ef68c5 100644 --- a/rts/win32/veh_excn.c +++ b/rts/win32/veh_excn.c @@ -21,6 +21,7 @@ #include <excpt.h> #include <inttypes.h> #include <dbghelp.h> +#include <signal.h> ///////////////////////////////// // Exception / signal handlers. @@ -99,7 +100,8 @@ long WINAPI __hs_exception_handler(struct _EXCEPTION_POINTERS *exception_data) if (!crash_dump && filter_called) return EXCEPTION_CONTINUE_EXECUTION; - long action = EXCEPTION_CONTINUE_SEARCH; + long action = EXCEPTION_CONTINUE_SEARCH; + int exit_code = EXIT_FAILURE; ULONG_PTR what; fprintf (stderr, "\n"); @@ -113,6 +115,7 @@ long WINAPI __hs_exception_handler(struct _EXCEPTION_POINTERS *exception_data) case EXCEPTION_INT_DIVIDE_BY_ZERO: fprintf(stderr, "divide by zero\n"); action = EXCEPTION_CONTINUE_EXECUTION; + exit_code = SIGFPE; break; case EXCEPTION_STACK_OVERFLOW: fprintf(stderr, "C stack overflow in generated code\n"); @@ -131,6 +134,7 @@ long WINAPI __hs_exception_handler(struct _EXCEPTION_POINTERS *exception_data) ->ExceptionInformation[1] ); action = EXCEPTION_CONTINUE_EXECUTION; + exit_code = SIGSEGV; break; default:; } @@ -143,7 +147,7 @@ long WINAPI __hs_exception_handler(struct _EXCEPTION_POINTERS *exception_data) fflush(stderr); generateStack (exception_data); generateDump (exception_data); - stg_exit(EXIT_FAILURE); + stg_exit(exit_code); } } |