[GHC] #14272: GHC goes out of memory while compiling simple program with optimizations

GHC ghc-devs at haskell.org
Fri Sep 22 21:57:43 UTC 2017


#14272: GHC goes out of memory while compiling simple program with optimizations
-------------------------------------+-------------------------------------
           Reporter:  39aldo39       |             Owner:  (none)
               Type:  bug            |            Status:  new
           Priority:  normal         |         Milestone:
          Component:  Compiler       |           Version:  7.10.3
           Keywords:                 |  Operating System:  Unknown/Multiple
       Architecture:                 |   Type of failure:  None/Unknown
  Unknown/Multiple                   |
          Test Case:                 |        Blocked By:
           Blocking:                 |   Related Tickets:
Differential Rev(s):                 |         Wiki Page:
-------------------------------------+-------------------------------------
 When compiling the following program with `ghc -O Main.hs`, GHC goes out
 of memory.

 {{{#!hs
 import Data.Bits (bit)

 main :: IO ()
 main = putStrLn (show (f undefined))

 f :: [Int] -> Int
 f = sum . zipWith ((+) . bit) [0..] . map undefined . scanl undefined
 undefined
 }}}

 I have 6 GB RAM and 8 GB swap free, so that shouldn't be the problem. It
 only happens with optimizations on, and it happens during a simplifier.
 Any simpler expressions do work.

 It even happens when `[0..]` is replaced by `take 1 [0..]`, but it
 compiles with `take 0 [0..]`.

 A straightforward workaround is to replace `zipWith f [0..]` by `\xs ->
 zipWith f [0..length xs] xs`.

 I ran into this problem when updating to GHC 8.2.1 from 8.0.2. But the
 given program doesn't compile on older versions as well. GHC 7.10.3 was
 the lowest version I could run before running into other problems. All GHC
 versions I tested come from the Debian repo.

-- 
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/14272>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler


More information about the ghc-tickets mailing list