[GHC] #1791: heap overflow should generate an exception
GHC
ghc-devs at haskell.org
Wed Nov 30 16:00:10 UTC 2016
#1791: heap overflow should generate an exception
-------------------------------------+-------------------------------------
Reporter: guest | Owner:
Type: feature request | Status: new
Priority: normal | Milestone: ⊥
Component: Runtime System | Version: 6.8
Resolution: | Keywords:
Operating System: Unknown/Multiple | Architecture:
| Unknown/Multiple
Type of failure: None/Unknown | Test Case: outofmem2
Blocked By: | Blocking:
Related Tickets: | Differential Rev(s):
Wiki Page: |
-------------------------------------+-------------------------------------
Description changed by rwbarton:
@@ -0,0 +1,10 @@
+ Heap overflow should produce a `HeapOverflow` exception that can be
+ caught, rather than shutting down the entire RTS immediately.
+
+ [Original ticket description follows. The submitter happened to expose
+ another bug, which was that heap overflow was not detected at all when a
+ single allocation exceeded the maximum heap size. The program below now
+ exits with a "Heap exhausted" message.]
+
+ ----
+
New description:
Heap overflow should produce a `HeapOverflow` exception that can be
caught, rather than shutting down the entire RTS immediately.
[Original ticket description follows. The submitter happened to expose
another bug, which was that heap overflow was not detected at all when a
single allocation exceeded the maximum heap size. The program below now
exits with a "Heap exhausted" message.]
----
I want to use the -M option for the goals that are stated in the manual.
{{{
./TestProgram +RTS -M5m -RTS
}}}
Expected output:
{{{
Something like "out of heap space"
}}}
Actual result:
{{{
Machine going into a state where it swaps memory
}}}
This is the code for TestProgram:
{{{
import Control.Monad.ST
import Data.Array.ST
import Data.Array.MArray
import Data.Array.Base(unsafeNewArray_)
main = print (runST (do make_empty_table >> return ()))
make_empty_table:: ST s (STArray s (Int, Int) (Maybe ep))
make_empty_table =
unsafeNewArray_ ((1, 1), (16384, 16384))
}}}
This was tested with 6.9.20071018 on an athlon-xp, and confirmed by
dcoutts also on x86-64 with ghc-6.8.0.20071015.
--
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/1791#comment:13>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list