[GHC] #13960: Ticks exhausted with 8.0.2

GHC ghc-devs at haskell.org
Tue Jul 11 18:16:25 UTC 2017


#13960: Ticks exhausted with 8.0.2
-------------------------------------+-------------------------------------
           Reporter:  tom-bop        |             Owner:  (none)
               Type:  bug            |            Status:  new
           Priority:  normal         |         Milestone:
          Component:  Compiler       |           Version:  8.0.2
           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:
-------------------------------------+-------------------------------------
 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>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler


More information about the ghc-tickets mailing list