[GHC] #14163: Stack Overflow with ApplicativeDo
GHC
ghc-devs at haskell.org
Tue Aug 29 21:37:27 UTC 2017
#14163: Stack Overflow with ApplicativeDo
-------------------------------------+-------------------------------------
Reporter: lippling | Owner: simonmar
Type: bug | Status: new
Priority: high | Milestone: 8.2.2
Component: Compiler | Version: 8.2.1
Resolution: | Keywords: ApplicativeDo
Operating System: MacOS X | Architecture: x86_64
Type of failure: Compile-time | (amd64)
crash or panic | Test Case:
Blocked By: | Blocking:
Related Tickets: | Differential Rev(s):
Wiki Page: |
-------------------------------------+-------------------------------------
Comment (by dfeuer):
I have a pretty decent guess about the problem. We have
{{{#!hs
mkStmtTreeHeuristic :: [(ExprLStmt GhcRn, FreeVars)] -> ExprStmtTree
mkStmtTreeHeuristic [one] = StmtTreeOne one
mkStmtTreeHeuristic stmts =
case segments stmts of
[one] -> split one
segs -> StmtTreeApplicative (map split segs)
where
split [one] = StmtTreeOne one
split stmts =
StmtTreeBind (mkStmtTreeHeuristic before) (mkStmtTreeHeuristic after)
where (before, after) = splitSegment stmts
}}}
The `do` block in question can't actually be split at all (all the pattern
matches are strict). So I ''think'' the trick is probably to make sure
`before` is non-empty before producing `StmtTreeBind`. I'll give this a
whirl.
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/14163#comment:6>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list