#1402: panic in GHC when building QuickCheck with optimization
-----------------------+----------------------------------------------------
Reporter: guest | Owner:
Type: bug | Status: new
Priority: normal | Milestone:
Component: Compiler | Version: 6.7
Severity: normal | Keywords:
Difficulty: Unknown | Os: Linux
Testcase: | Architecture: x86
-----------------------+----------------------------------------------------
When building QuickCheck, I get:
{{{
[EMAIL PROTECTED]:~/tmp/QuickCheck$ runhaskell Setup build
Preprocessing library QuickCheck-2.0...
Building QuickCheck-2.0...
Glasgow Haskell Compiler, Version 6.7.20070529, for Haskell 98, compiled
by GHC
version 6.7.20070529
Using package config file: /usr/local/lib/ghc-6.7.20070529/package.conf
wired-in package base mapped to base-2.1
wired-in package rts mapped to rts-1.0
wired-in package haskell98 mapped to haskell98-1.0
wired-in package template-haskell mapped to template-haskell-0.1
Hsc static flags: -static
*** Chasing dependencies:
Chasing modules from:
Test.QuickCheck,Test.QuickCheck.Arbitrary,Test.QuickCheck.
Function,Test.QuickCheck.Gen,Test.QuickCheck.Monadic,Test.QuickCheck.Property,Te
st.QuickCheck.Test,Test.QuickCheck.Exception,Test.QuickCheck.Text
Stable obj: []
Stable BCO: []
Ready for upsweep
[NONREC
ModSummary {
ms_hs_date = Fri Jun 1 10:28:15 MDT 2007
ms_mod = QuickCheck-2.0:Test.QuickCheck.Gen,
ms_imps = [Control.Monad.Reader, Control.Monad, System.Random]
ms_srcimps = []
},
NONREC
ModSummary {
ms_hs_date = Fri Jun 1 10:11:40 MDT 2007
ms_mod = QuickCheck-2.0:Test.QuickCheck.Arbitrary,
ms_imps = [Control.Monad, Data.List, System.Random, Data.Ratio,
Data.Char, Test.QuickCheck.Gen]
ms_srcimps = []
},
NONREC
ModSummary {
ms_hs_date = Fri Jun 1 10:11:39 MDT 2007
ms_mod = QuickCheck-2.0:Test.QuickCheck.Exception,
ms_imps = [Control.Exception]
ms_srcimps = []
},
NONREC
ModSummary {
ms_hs_date = Fri Jun 1 10:11:39 MDT 2007
ms_mod = QuickCheck-2.0:Test.QuickCheck.Text,
ms_imps = [Data.IORef, System.IO]
ms_srcimps = []
},
NONREC
ModSummary {
ms_hs_date = Fri Jun 1 10:11:40 MDT 2007
ms_mod = QuickCheck-2.0:Test.QuickCheck.Property,
ms_imps = [System.IO, Data.IORef, Control.Concurrent,
Test.QuickCheck.Exception, Test.QuickCheck.Text,
Test.QuickCheck.Arbitrary, Test.QuickCheck.Gen]
ms_srcimps = []
},
NONREC
ModSummary {
ms_hs_date = Fri Jun 1 10:11:40 MDT 2007
ms_mod = QuickCheck-2.0:Test.QuickCheck.Test,
ms_imps = [Data.List, Data.Char, System.Random,
Test.QuickCheck.Exception, Test.QuickCheck.Text,
Test.QuickCheck.Property, Test.QuickCheck.Gen]
ms_srcimps = []
},
NONREC
ModSummary {
ms_hs_date = Fri Jun 1 10:11:40 MDT 2007
ms_mod = QuickCheck-2.0:Test.QuickCheck.Monadic,
ms_imps = [System.IO.Unsafe, Control.Monad.ST, Control.Monad,
Test.QuickCheck.Arbitrary, Test.QuickCheck.Property,
Test.QuickCheck.Gen]
ms_srcimps = []
},
NONREC
ModSummary {
ms_hs_date = Fri Jun 1 10:11:40 MDT 2007
ms_mod = QuickCheck-2.0:Test.QuickCheck.Function,
ms_imps = [System.IO.Unsafe, Data.List, Data.IORef,
Test.QuickCheck.Property, Test.QuickCheck.Arbitrary,
Test.QuickCheck.Gen]
ms_srcimps = []
},
NONREC
ModSummary {
ms_hs_date = Fri Jun 1 10:11:40 MDT 2007
ms_mod = QuickCheck-2.0:Test.QuickCheck,
ms_imps = [Test.QuickCheck.Test, Test.QuickCheck.Property,
Test.QuickCheck.Arbitrary, Test.QuickCheck.Gen]
ms_srcimps = []
}]
compile: input file Test/QuickCheck/Gen.hs
Created temporary directory: /tmp/ghc2049_0
*** Checking old interface for QuickCheck-2.0:Test.QuickCheck.Gen:
[1 of 9] Compiling Test.QuickCheck.Gen ( Test/QuickCheck/Gen.hs,
dist/build/Test
/QuickCheck/Gen.o )
*** Parser:
*** Renamer/typechecker:
*** Desugar:
Result size = 1180
*** Simplify:
Result size = 803
Result size = 789
Result size = 789
*** Specialise:
*** Deleting temp files:
Deleting: /tmp/ghc2049_0/ghc2049_0.s
Warning: deleting non-existent /tmp/ghc2049_0/ghc2049_0.s
*** Deleting temp dirs:
Deleting: /tmp/ghc2049_0
ghc-6.7.20070529: panic! (the 'impossible' happened)
(GHC version 6.7.20070529 for i386-unknown-linux):
my_zipEqual
[]
[random-1.0:System.Random.$f6{v r2X} [gid]]
QuickCheck-2.0:Test.QuickCheck.Gen.choose{v r6H} [lid] [Just
base:GHC.Base.I
nt{(w) tc 3J}]
\ (@ a{tv asq} [sk] :: base:GHC.Prim.*{(w) tc 34d}) ->
(a_sIo{v} [lid] @ a{tv asq} [sk])
`cast` (<pred>random-1.0:System.Random.Random{tc r33}
a{tv asq} [sk]
-> (a{tv asq} [sk], a{tv asq} [sk])
-> base:GHC.Prim.sym{(w) tc 34v}
((QuickCheck-2.0:Test.QuickCheck.Gen.:CoGen{tc rfI})
a{tv asq} [sk])
:: <pred>(random-1.0:System.Random.Random{tc r33}
a{tv asq} [sk]) =>
(a{tv asq} [sk], a{tv asq} [sk])
-> random-1.0:System.Random.StdGen{tc r35}
-> base:GHC.Base.Int{(w) tc 3J}
-> a{tv asq} [sk]
~
(random-1.0:System.Random.Random{tc r33} a{tv asq}
[sk])
=>
(a{tv asq} [sk], a{tv asq} [sk])
-> <nt>QuickCheck-2.0:Test.QuickCheck.Gen.Gen{tc
r76}
a{tv asq} [sk])
Please report this as a GHC bug: http://www.haskell.org/ghc/reportabug
}}}
If I build with -Onot, the error does not occur.
{{{
[EMAIL PROTECTED]:~/tmp/QuickCheck$ uname -a
Linux devtools 2.4.27-2-k7 #1 Tue Aug 16 17:30:14 JST 2005 i686 GNU/Linux
}}}
The error occurs in:
{{{
-- | Generates a random element in the given inclusive range.
choose :: Random a => (a,a) -> Gen a
choose rng = MkGen (\r _ -> let (x,_) = randomR rng r in x)
}}}
The GHC version is one that I pulled from darcs head on the 29th of May.
It does have one local modification, but in an unrelated part of the
compiler (the GHCi banner patch I sent to the cvs-ghc list on 6/1/2007)
--
Ticket URL: <http://hackage.haskell.org/trac/ghc/ticket/1402>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler_______________________________________________
Glasgow-haskell-bugs mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs