
#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