Skip to content

Corrupt executable when compiling large do block for List monad

For a program that like

z :: [[Int]]
z = do
   x1 <- [0..3]
   x2 <- [0..3]
   x3 <- [0..3]
   x4 <- [0..3]
   x5 <- [0..3]
   x6 <- [0..3]
   x7 <- [0..3]
   ...
   x600 <- [0..3]
   guard (x1+x2+2*x3 >= 0)
   return [x1,x2,x3,...,x600]

the compiler generates a program, that aborts with

internal error: scavenge: unimplemented/strange closure type -1 @
  1. Description and example Haskell program can be found here:

http://www.haskell.org/pipermail/haskell-cafe/2009-August/065001.html

Maybe related: #830 (closed)

Trac metadata
Trac field Value
Version 6.10.4
Type Bug
TypeOfFailure OtherFailure
Priority normal
Resolution Unresolved
Component Compiler
Test case
Differential revisions
BlockedBy
Related
Blocking
CC ghc@henning-thielemann.de
Operating system
Architecture
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information