diff options
author | Simon Marlow <marlowsd@gmail.com> | 2017-04-01 19:52:40 -0400 |
---|---|---|
committer | Ben Gamari <ben@smart-cactus.org> | 2017-04-02 12:01:47 -0400 |
commit | 61ba4518a48727f8cd7b821bd41631da82d37425 (patch) | |
tree | 421493e6de4af7744876c7a927b60e2a7b452112 /libraries/base/GHC/TopHandler.hs | |
parent | d89b0471888b15844b8bbf68159fe50830be8b24 (diff) | |
download | haskell-61ba4518a48727f8cd7b821bd41631da82d37425.tar.gz |
Report heap overflow in the same way as stack overflow
Now that we throw an exception for heap overflow, we should only print
the heap overflow message in the main thread when the HeapOverflow
exception is caught, rather than as a side effect in the GC.
Stack overflows were already done this way, I just made heap overflow
consistent with stack overflow, and did some related cleanup.
Fixes broken T2592(profasm) which was reporting the heap overflow
message twice (you would only notice when building with profiling
libs enabled).
Test Plan: validate
Reviewers: bgamari, niteria, austin, DemiMarie, hvr, erikd
Reviewed By: bgamari
Subscribers: rwbarton, thomie
Differential Revision: https://phabricator.haskell.org/D3394
Diffstat (limited to 'libraries/base/GHC/TopHandler.hs')
-rw-r--r-- | libraries/base/GHC/TopHandler.hs | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/libraries/base/GHC/TopHandler.hs b/libraries/base/GHC/TopHandler.hs index f1c87e5110..58da871729 100644 --- a/libraries/base/GHC/TopHandler.hs +++ b/libraries/base/GHC/TopHandler.hs @@ -177,8 +177,9 @@ real_handler exit se = do Just UserInterrupt -> exitInterrupted - Just HeapOverflow -> exit 251 - -- the RTS has already emitted a message to stderr + Just HeapOverflow -> do + reportHeapOverflow + exit 251 _ -> case fromException se of -- only the main thread gets ExitException exceptions |