[GHC] #14176: sortOn with tuple of >= 9 Maybe's triggers ghc: panic! with "Simplifier ticks exhausted"
GHC
ghc-devs at haskell.org
Thu Aug 31 20:05:44 UTC 2017
#14176: sortOn with tuple of >= 9 Maybe's triggers ghc: panic! with "Simplifier
ticks exhausted"
-------------------------------------+-------------------------------------
Reporter: kostmo | 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:
-------------------------------------+-------------------------------------
Given the following code (full Stack project attached):
{{{#!haskell
module Foo where
import Data.List
data MyRecord = MyRecord {
f1 :: Maybe String
, f2 :: Maybe String
, f3 :: Maybe String
, f4 :: Maybe String
, f5 :: Maybe String
, f6 :: Maybe String
, f7 :: Maybe String
, f8 :: Maybe String
, f9 :: Maybe String
, f10 :: Maybe String
, f11 :: Maybe String
, f12 :: Maybe String
}
getComparisonValue x = (
f1 x
, f2 x
, f3 x
, f4 x
, f5 x
, f6 x
, f7 x
, f8 x
, f9 x
)
doSort = sortOn getComparisonValue
}}}
The following error results:
{{{
$ stack build
ghc-bug-0.0.0: build (lib)
Preprocessing library ghc-bug-0.0.0...
[1 of 1] Compiling Foo ( Foo.hs, .stack-work/dist/x86_64
-linux-nopie/Cabal-1.24.2.0/build/Foo.o )
ghc: panic! (the 'impossible' happened)
(GHC version 8.0.2 for x86_64-unknown-linux):
Simplifier ticks exhausted
When trying UnfoldingDone $j_s72t
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: 324566
Please report this as a GHC bug: http://www.haskell.org/ghc/reportabug
-- While building package ghc-bug-0.0.0 using:
/home/kostmo/.stack/setup-exe-cache/x86_64-linux-nopie/Cabal-
simple_mPHDZzAJ_1.24.2.0_ghc-8.0.2 --builddir=.stack-work/dist/x86_64
-linux-nopie/Cabal-1.24.2.0 build lib:ghc-bug --ghc-options " -ddump-hi
-ddump-to-file"
Process exited with code: ExitFailure 1
}}}
Generating a tuple from elements of an object for the purpose of sorting
is an idiom I have used in Python at times.
The original use case in Haskell for me was excluding some fields of the
record in the comparison (e.g. `f10`, `f11`, `f12` fields), rather than
using a simple `sort` with `deriving Ord` on `MyRecord`. I worked around
the issue for now by blanking out the record fields I with to ignore,
instead of re-instantiating a tuple of field values:
{{{#!haskell
getComparisonValue x = x {
f10 = Nothing
, f11 = Nothing
, f12 = Nothing
}
}}}
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/14176>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list