GHCi thinks large list literals impossible?
Prelude> :set -fth
Prelude> $(let s = replicate 26227 'x' in [| s |])
Loading package template-haskell ... linking ... done.
ghc-6.6: panic! (the 'impossible' happened)
(GHC version 6.6 for i386-unknown-linux):
mkProtoBCO: stack use won't fit in 16 bits 131145
Note: I ran into this with a far more interestinng string, which I actually used TH to generate, but the code was a lot longer. I think this happens partly because String
s are lifted as ListE}}s of {{{(LitE . CharL)
s, rather than as {LitE . StrinL}s, but even if you changed that I could still get the same thing to happen by replacing 'x'
with (1::Int)
, so obviously that isn't the whole problem. (Why in the world does the code for long list literals need an enormous stack anyway?)
On a side note, this also crashes -ddump-ds, though that's probably reasonable...
Trac metadata
Trac field | Value |
---|---|
Version | 6.6 |
Type | Bug |
TypeOfFailure | OtherFailure |
Priority | normal |
Resolution | Unresolved |
Component | GHCi |
Test case | |
Differential revisions | |
BlockedBy | |
Related | |
Blocking | |
CC | |
Operating system | Unknown |
Architecture | Unknown |