#3150: Overlapping data instances can segfault
-----------------------------+----------------------------------------------
Reporter:  guest             |          Owner:                         
    Type:  bug               |         Status:  new                    
Priority:  normal            |      Component:  Compiler (Type checker)
 Version:  6.10.1            |       Severity:  normal                 
Keywords:                    |       Testcase:                         
      Os:  Unknown/Multiple  |   Architecture:  Unknown/Multiple       
-----------------------------+----------------------------------------------
 When exploring data families for some fast unboxed tuple representation,
 we came across the following scenario.

 {{{
 class Foo a where
     data Bar a :: *

 instance Foo a where
     data Bar a = PBar a

 instance Foo () where
     data Bar () = PUnit
 }}}

 {{{

 GHCi, version 6.10.1: http://www.haskell.org/ghc/  :? for help
 Loading package ghc-prim ... linking ... done.
 Loading package integer ... linking ... done.
 Loading package base ... linking ... done.
 [1 of 1] Compiling Main             ( Foo.hs, interpreted )
 Ok, modules loaded: Main.
 *Main> case PUnit of PBar x -> x
 Segmentation fault
 }}}

 It appears the compiler is allowing the refinement of a into () because
 they overlap, when it shouldn't.

 This is less academic than this example, because it affects doing similar
 operations to automatically unbox tuples of primitives when possible.

-- 
Ticket URL: <http://hackage.haskell.org/trac/ghc/ticket/3150>
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

Reply via email to