[GHC] #13960: Ticks exhausted with 8.0.2
GHC
ghc-devs at haskell.org
Tue Jul 11 19:05:29 UTC 2017
#13960: Ticks exhausted with 8.0.2
-------------------------------------+-------------------------------------
Reporter: tom-bop | Owner: (none)
Type: bug | Status: infoneeded
Priority: normal | Milestone:
Component: Compiler | Version: 8.0.2
Resolution: | Keywords:
Operating System: Unknown/Multiple | Architecture:
| Unknown/Multiple
Type of failure: None/Unknown | Test Case:
Blocked By: | Blocking:
Related Tickets: | Differential Rev(s):
Wiki Page: |
-------------------------------------+-------------------------------------
Description changed by tom-bop:
@@ -1,2 +1,75 @@
- This is unfortunately a closed-source codebase I'm experiencing this with,
- but we get a GHC panic with a small/not-doing-anything-crazy codebase:
+ **Update**: I've been able to provide a much simpler test case for this
+ error:
+
+ Broken.hs:
+
+ {{{
+ #!haskell
+ {-# LANGUAGE OverloadedStrings #-}
+
+ module Broken (breaks) where
+
+ import Database.PostgreSQL.Simple.Types (Query(..))
+
+ breaks :: [(Query, Query)]
+ breaks = [
+ ("query", "query")
+ , ("query", "query")
+ , ("query", "query")
+ , ("query", "query")
+ , ("query", "query")
+ , ("query", "query")
+ , ("query", "query")
+ , ("query", "query")
+ , ("query", "query")
+ , ("query", "query")
+ , ("query", "query")
+ ]
+ }}}
+
+ broken.cabal:
+
+ {{{
+ name: broken
+ version: 0.1.0.0
+ build-type: Simple
+ cabal-version: >=1.10
+
+ library
+ exposed-modules:
+ Broken
+ other-extensions:
+ OverloadedStrings
+ build-depends:
+ base
+ -- >=4.9 && <4.10
+ , postgresql-simple
+ -- >=0.5 && <0.6
+ default-language: Haskell2010
+ }}}
+
+ `cabal install broken.cabal` results in:
+
+ {{{
+ ghc: panic! (the 'impossible' happened)
+ (GHC version 8.0.2 for x86_64-unknown-linux):
+ Simplifier ticks exhausted
+ When trying UnfoldingDone ord
+ To increase the limit, use -fsimpl-tick-factor=N (default 100)
+ If you need to do this, let GHC HQ know, and what factor you needed
+ To see detailed counts use -ddump-simpl-stats
+ Total ticks: 20731
+
+ Please report this as a GHC bug: http://www.haskell.org/ghc/reportabug
+ }}}
+
+ ----
+
+ ----
+
+ **Older info:**
+
+
+ ~~This is unfortunately a closed-source codebase I'm experiencing this
+ with, but we get a GHC panic with a small/not-doing-anything-crazy
+ codebase:~~
New description:
**Update**: I've been able to provide a much simpler test case for this
error:
Broken.hs:
{{{
#!haskell
{-# LANGUAGE OverloadedStrings #-}
module Broken (breaks) where
import Database.PostgreSQL.Simple.Types (Query(..))
breaks :: [(Query, Query)]
breaks = [
("query", "query")
, ("query", "query")
, ("query", "query")
, ("query", "query")
, ("query", "query")
, ("query", "query")
, ("query", "query")
, ("query", "query")
, ("query", "query")
, ("query", "query")
, ("query", "query")
]
}}}
broken.cabal:
{{{
name: broken
version: 0.1.0.0
build-type: Simple
cabal-version: >=1.10
library
exposed-modules:
Broken
other-extensions:
OverloadedStrings
build-depends:
base
-- >=4.9 && <4.10
, postgresql-simple
-- >=0.5 && <0.6
default-language: Haskell2010
}}}
`cabal install broken.cabal` results in:
{{{
ghc: panic! (the 'impossible' happened)
(GHC version 8.0.2 for x86_64-unknown-linux):
Simplifier ticks exhausted
When trying UnfoldingDone ord
To increase the limit, use -fsimpl-tick-factor=N (default 100)
If you need to do this, let GHC HQ know, and what factor you needed
To see detailed counts use -ddump-simpl-stats
Total ticks: 20731
Please report this as a GHC bug: http://www.haskell.org/ghc/reportabug
}}}
----
----
**Older info:**
~~This is unfortunately a closed-source codebase I'm experiencing this
with, but we get a GHC panic with a small/not-doing-anything-crazy
codebase:~~
{{{
ghc: panic! (the 'impossible' happened)
(GHC version 8.0.2 for x86_64-unknown-linux):
Simplifier ticks exhausted
When trying RuleFired Class op return
To increase the limit, use -fsimpl-tick-factor=N (default 100)
If you need to do this, let GHC HQ know, and what factor you needed
To see detailed counts use -ddump-simpl-stats
Total ticks: 118123
}}}
When upping to `-fsimpl-tick-factor=150`, the error is a little different:
{{{
ghc: panic! (the 'impossible' happened)
(GHC version 8.0.2 for x86_64-unknown-linux):
Simplifier ticks exhausted
When trying UnfoldingDone $
To increase the limit, use -fsimpl-tick-factor=N (default 100)
If you need to do this, let GHC HQ know, and what factor you needed
To see detailed counts use -ddump-simpl-stats
Total ticks: 177190
}}}
Upping to 200 makes the issue go away.
We're building with
`ghc-options: -fhpc`
Before each build, we remove all .tix files and the .hpc directory
At the point this error fires, we're compiling the 6th module of 9. The
first 6 modules to compile only have a total of 635 lines of code.
To address issues I've seen in other similar tickets:
- There are no recursive module imports
- We don't use any `{-# INLINE #-}` or similar pragmas
- There is no Template Haskell other than a `makeLenses ''App` for a
small Snaplet.
- We don't have any "very"/exponentially recursive code
- We don't use any unboxed tuples (there *is* ST code in a module that's
compiled, but not the one ghc panics on)
- We don't use type families
- We don't use TypeRep or Typeable
- We don't use Generic
When this error occurs, it fails on a module which has very little code in
it. It's mainly a list of ~200-300 Query[0] values, using
OverloadedStrings. I notice Query's `mappend`, which we use, is `INLINE`d.
Please let me know if I can provide more detail!
[0] http://hackage.haskell.org/package/postgresql-simple-0.5.3.0/docs
/Database-PostgreSQL-Simple-Types.html#t:Query
--
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/13960#comment:3>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list