[GHC] #1176: Infinite loop when printing error message
GHC
trac at galois.com
Sun Feb 25 15:14:47 EST 2007
#1176: Infinite loop when printing error message
------------------------------------------+---------------------------------
Reporter: Paul_Berry at alumni.hmc.edu | Owner:
Type: bug | Status: new
Priority: normal | Milestone:
Component: Compiler | Version: 6.6
Severity: normal | Keywords:
Difficulty: Unknown | Testcase:
Architecture: x86 | Os: Linux
------------------------------------------+---------------------------------
I am trying to compile a file that has a known compile error. Ghc gets
into an infinite loop trying to output the error message.
Here's the session (captured using EMACS shell):
{{{
pberry at Dal:~/bridge_ghc_bug$ uname -a
Linux Dal 2.6.18-3-686 #1 SMP Mon Dec 4 16:41:14 UTC 2006 i686 GNU/Linux
pberry at Dal:~/bridge_ghc_bug$ gcc -v
Using built-in specs.
Target: i486-linux-gnu
Configured with: ../src/configure -v --enable-
languages=c,c++,fortran,objc,obj-c++,treelang --prefix=/usr --enable-
shared --with-system-zlib --libexecdir=/usr/lib --without-included-gettext
--enable-threads=posix --enable-nls --program-suffix=-4.1 --enable-
__cxa_atexit --enable-clocale=gnu --enable-libstdcxx-debug --enable-mpfr
--with-tune=i686 --enable-checking=release i486-linux-gnu
Thread model: posix
gcc version 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)
pberry at Dal:~/bridge_ghc_bug$ ghc -v --make main.hs
Glasgow Haskell Compiler, Version 6.6, for Haskell 98, compiled by GHC
version 6.6
Using package config file: /usr/lib/ghc-6.6/package.conf
wired-in package base mapped to base-2.0
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-2.0
Hsc static flags: -static
*** Chasing dependencies:
Chasing modules from: main.hs
Stable obj: []
Stable BCO: []
compile: input file main.hs
Created temporary directory: /tmp/ghc5182_0
*** Checking old interface for main:Main:
[1 of 1] Compiling Main ( main.hs, main.o )
*** Parser:
*** Renamer/typechecker:
main.hs:30:12:
No instance for (Show Rank)
arising from use of `show' at main.hs:30:12-19
Possible fix: add an instance declaration for (Show Rank)
In the first argument of `(~?=)', namely `show Ten'
In the expression: (show Ten) ~?= "T"
In the second argument of `($)', namely
`[(show Two) ~?= "2", (show Three) ~?= "3", (show Four) ~?= "4",
(show Five) ~?= "5", (show Six) ~?= "6", (show Seven) ~?= "7",
(show Eight) ~?= "8", (show Nine) ~?= "9", (show Ten) ~?= "T",
}}}
At this point ghc goes into an (apparently) infinite loop outputting
spaces. When I interrupt it using Ctrl-C, it says:
{{{
*** Deleting temp files:
Deleting: /tmp/ghc5182_0/ghc5182_0.s
Warning: deleting non-existent /tmp/ghc5182_0/ghc5182_0.s
*** Deleting temp dirs:
Deleting: /tmp/ghc5182_0
}}}
Here's the file main.hs:
{{{
import System
import Test.HUnit
import Control.Monad
import Data.List
data Card = Card Rank Suit
data Suit = Clubs | Diamonds | Hearts | Spades
deriving (Enum, Eq)
data Rank = Two | Three | Four | Five | Six | Seven | Eight | Nine | Ten |
Jack | Queen | King | Ace
deriving (Enum, Ord, Eq)
type Hand = [Card]
hand :: String -> Hand
hand = undefined
main = undefined
allTests = test $
[show Two ~?= "2"
,show Three ~?= "3"
,show Four ~?= "4"
,show Five ~?= "5"
,show Six ~?= "6"
,show Seven ~?= "7"
,show Eight ~?= "8"
,show Nine ~?= "9"
,show Ten ~?= "T"
,hand "AK76543/32/AK2/3" ~?= exampleHand
]
where exampleHand = []
}}}
--
Ticket URL: <http://hackage.haskell.org/trac/ghc/ticket/1176>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the Glasgow-haskell-bugs
mailing list