Bug: GHC hangs rather than reporting an occurs check error

Bryan Donlan bdonlan at gmail.com
Thu Mar 20 02:38:56 EDT 2008

Hi all,

I've found a case where GHC will hang (consuming more and more memory)
when it should report an occurs check error. The test case is at
http://fushizen.net/~bd/kaos-ghc.loop.tgz - the error in question is
that the arguments in the StateT instance for HOLift are reversed like

diff --git a/src/Kaos/KaosM.hs b/src/Kaos/KaosM.hs
index ec4e69a..268250a 100644
--- a/src/Kaos/KaosM.hs
+++ b/src/Kaos/KaosM.hs
@@ -88,7 +88,7 @@ genlift' unbox box f m = box $ \s -> f (unbox m s)
 class HOLift m b | m -> b where
     genlift :: (forall r'. b r' -> b r') -> (forall r. m r -> m r)

-instance HOLift m (StateT s m) where
+instance HOLift (StateT s m) m where
     genlift = genlift' runStateT StateT

 instance (HOLift m b, KaosDiagM r b) => KaosDiagM r m where


Bryan Donlan

More information about the Glasgow-haskell-users mailing list