summaryrefslogtreecommitdiff
path: root/rts/win32
diff options
context:
space:
mode:
authorTamar Christina <tamar@zhox.com>2018-01-02 16:00:57 -0500
committerBen Gamari <ben@smart-cactus.org>2018-01-02 17:33:04 -0500
commit27b7b4db9af99aeb88dce7ef0e85131199bbf2ff (patch)
treedb4d5bbc750857ce55d7bcc09962002e4ba176d3 /rts/win32
parent4887c3086149a15a1e16c765682debcfbb9de145 (diff)
downloadhaskell-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.c8
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);
}
}