Hi, I enclose a small program that crashes with "segmentation fault" when compiled with ghc 4.01. It makes use of existential quantification in data types, which I suspect is the cause of the problem. I also supply the output from ghc -v. The program was compiled and run on a macine with the following uname -a output: SunOS lips.cs.chalmers.se 5.6 Generic_105181-11 sun4u sparc SUNW,Ultra-4 and gcc -v gives Reading specs from /usr/pd/gnu/lib/ada/3.10p/lib/gcc-lib/sparc-sun-solaris2.6/2.7.2/specs gcc version 2.8.1 This may look a little ad hoc, but when I tried our normal installation of gcc, Reading specs from /usr/pd/gnu/lib/gcc-lib/sparc-sun-solaris2.6/2.8.1/specs gcc version 2.8.1 all programs crashed with "bus error"... Regards, Thomas Hallgren
-- This program crashes with "segmentation fault". main = print xs xs = [C False] -- ++ [C "Hej", C (3,4)] data T = forall a . (Show a) => C a instance Show T where showsPrec n (C a) = showsPrec n a --data T = forall a . C (a->String) a -- this causes problems too --data T a = C a deriving (Show) -- no problem...
The Glorious Glasgow Haskell Compilation System, version 4.01, patchlevel 0 Effective command line: -v Ineffective C pre-processor: echo '{-# LINE 1 "tstExist2.hs" -}' > /tmp/ghc26260.cpp && cat tstExist2.hs >> /tmp/ghc26260.cpp real 0.0 user 0.0 sys 0.0 ghc-4.01:compile:Output file tstExist2.o doesn't exist ghc-4.01:compile:Interface file tstExist2.hi doesn't exist ghc-4.01:recompile:Input file tstExist2.hs newer than tstExist2.o Haskell compiler: /usr/pd/lib/ghc-4.01/hsc ,-W ,/tmp/ghc26260.cpp -fignore-interface-pragmas -fomit-interface-pragmas -fsimplify [ -ffloat-lets-exposing-whnf -ffloat-primops-ok -fcase-of-case -fdo-case-elim -freuse-con -fpedantic-bottoms -fmax-simplifier-iterations4 ] -fwarn-overlapping-patterns -fwarn-missing-methods -fwarn-duplicate-exports -fhi-version=401 -himap=.%.hi:/usr/pd/lib/ghc-4.01/imports/std%.hi -v -hifile=/tmp/ghc26260.hi -C=/tmp/ghc26260.hc -F=/tmp/ghc26260_stb.c -FH=/tmp/ghc26260_stb.h +RTS -H6000000 -K1000000 Glasgow Haskell Compiler, version 4.01, for Haskell 1.4 real 1.4 user 1.3 sys 0.1 Pin on Haskell consistency info: echo 'static char ghc_hsc_ID[] = "@(#)hsc tstExist2.hs 40.0,,";' >> /tmp/ghc26260.hc real 0.0 user 0.0 sys 0.0 *** New hi file follows... __interface Main 401 where import IO 1 :: print 1; import PrelBase 1 :: _dShow0 1 _dShow1 1 _dShow2 1 _dShowBool0 1 _dShowChar0 1 _dShowInt0 1 _mshowList 1 addr2Integer 1 foldr 1 int2Integer 1 integer_0 1 integer_1 1 integer_2 1 integer_m1 1 Show 1 String 1; import PrelIOBase 1 :: IO 1; import PrelNum 1 :: _dShowInteger0 1; import PrelNumExtra 1 :: _dShowDouble0 1; import PrelPack 1 :: packCString# 1 unpackAppendCString# 1 unpackCString# 1 unpackFoldrCString# 1 unpackNBytes# 1; __instimport IO ; __instimport PrelAddr ; __instimport PrelArr ; __instimport PrelBounded ; __instimport PrelCCall ; __instimport PrelForeign ; __instimport PrelIOBase ; __instimport PrelNum ; __instimport PrelNumExtra ; __instimport PrelTup ; __export Main main xs T{C}; instance {PrelBase.Show T} = _dShowT0; data T = __forall [_r3C] {PrelBase.Show _r3C} => C _r3C ; main :: PrelIOBase.IO PrelBase.() ; xs :: [T] ; _dShowT0 :: {PrelBase.Show T} ; ghc-4.01: module version changed to 1; reason: no old .hi file Replace .hi file, if changed: cmp -s Main.hi /tmp/ghc26260.hi-new || ( rm -f Main.hi && cp /tmp/ghc26260.hi-new Main.hi ) real 0.0 user 0.0 sys 0.0 C compiler: gcc -v -S -Wimplicit -O -I. -I/usr/pd/lib/ghc-4.01/includes -I/usr/pd/lib/ghc-4.01/includes ghc26260.c > /tmp/ghc26260.ccout 2>&1 && ( if [ ghc26260.s != /tmp/ghc26260_o.s ] ; then mv ghc26260.s /tmp/ghc26260_o.s ; else exit 0 ; fi ) Reading specs from /usr/pd/gnu/lib/ada/3.10p/lib/gcc-lib/sparc-sun-solaris2.6/2.7.2/specs gcc version 2.8.1 /usr/pd/gnu/lib/ada/3.10p/lib/gcc-lib/sparc-sun-solaris2.6/2.7.2/cpp -lang-c -v -I. -I/usr/pd/lib/ghc-4.01/includes -I/usr/pd/lib/ghc-4.01/includes -iprefix /usr/pd/gnu/lib/ada/3.10p/lib/gcc-lib/sparc-sun-solaris2.6/2.7.2/sparc-sun-solaris2.6/2.8.1/ -undef -D__GNUC__=2 -D__GNUC_MINOR__=8 -Dsun -Dsparc -Dunix -D__svr4__ -D__SVR4 -D__GCC_NEW_VARARGS__ -D__sun__ -D__sparc__ -D__unix__ -D__svr4__ -D__SVR4 -D__GCC_NEW_VARARGS__ -D__sun -D__sparc -D__unix -Asystem(unix) -Asystem(svr4) -Acpu(sparc) -Amachine(sparc) -D__OPTIMIZE__ -Wimplicit ghc26260.c /tmp/ccmEEUh_.i GNU CPP version 2.7.2 (sparc) #include "..." search starts here: #include <...> search starts here: . /usr/pd/lib/ghc-4.01/includes /usr/pd/lib/ghc-4.01/includes /usr/pd/gnu/lib/ada/3.10p/lib/gcc-lib/sparc-sun-solaris2.6/2.7.2/sparc-sun-solaris2.6/2.8.1/include /usr/local/include /usr/pd/gnu/lib/ada/3.10p/sparc-sun-solaris2.6/include /usr/pd/gnu/lib/ada/3.10p/lib/gcc-lib/sparc-sun-solaris2.6/2.7.2/include /usr/include End of search list. /usr/pd/gnu/lib/ada/3.10p/lib/gcc-lib/sparc-sun-solaris2.6/2.7.2/cc1 /tmp/ccmEEUh_.i -quiet -dumpbase ghc26260.c -O -Wimplicit -version -o ghc26260.s GNU C version 2.7.2 (sparc) compiled by GNU C version 2.7.2. real 0.3 user 0.2 sys 0.0 Unix assembler: gcc -o tstExist2.o -c -I. -I/usr/pd/lib/ghc-4.01/includes -I/usr/pd/lib/ghc-4.01/includes /tmp/ghc26260.s real 0.0 user 0.0 sys 0.0 Linker: gcc -v -u PrelMain_mainIO_closure -u PrelBase_IZh_static_info -u PrelBase_CZh_static_info -u PrelBase_FZh_static_info -u PrelBase_DZh_static_info -u PrelAddr_AZh_static_info -u PrelAddr_WZh_static_info -u PrelAddr_I64Zh_static_info -u PrelAddr_W64Zh_static_info -u PrelForeign_StablePtr_static_info -u PrelBase_IZh_con_info -u PrelBase_CZh_con_info -u PrelBase_FZh_con_info -u PrelBase_DZh_con_info -u PrelAddr_AZh_con_info -u PrelAddr_WZh_con_info -u PrelAddr_I64Zh_con_info -u PrelAddr_W64Zh_con_info -u PrelForeign_StablePtr_con_info -u PrelBase_False_static_closure -u PrelBase_True_static_closure -u PrelPack_unpackCString_closure tstExist2.o -L/usr/pd/lib/ghc-4.01 -lHS -lHS_cbits -lHSrts -lgmp -lm Reading specs from /usr/pd/gnu/lib/ada/3.10p/lib/gcc-lib/sparc-sun-solaris2.6/2.7.2/specs gcc version 2.8.1 /usr/ccs/bin/ld -V -Y P,/usr/ccs/lib:/usr/lib -Qy -u PrelMain_mainIO_closure -u PrelBase_IZh_static_info -u PrelBase_CZh_static_info -u PrelBase_FZh_static_info -u PrelBase_DZh_static_info -u PrelAddr_AZh_static_info -u PrelAddr_WZh_static_info -u PrelAddr_I64Zh_static_info -u PrelAddr_W64Zh_static_info -u PrelForeign_StablePtr_static_info -u PrelBase_IZh_con_info -u PrelBase_CZh_con_info -u PrelBase_FZh_con_info -u PrelBase_DZh_con_info -u PrelAddr_AZh_con_info -u PrelAddr_WZh_con_info -u PrelAddr_I64Zh_con_info -u PrelAddr_W64Zh_con_info -u PrelForeign_StablePtr_con_info -u PrelBase_False_static_closure -u PrelBase_True_static_closure -u PrelPack_unpackCString_closure /usr/pd/gnu/lib/ada/3.10p/lib/gcc-lib/sparc-sun-solaris2.6/2.7.2/crt1.o /usr/pd/gnu/lib/ada/3.10p/lib/gcc-lib/sparc-sun-solaris2.6/2.7.2/crti.o /usr/ccs/lib/values-Xa.o /usr/pd/gnu/lib/ada/3.10p/lib/gcc-lib/sparc-sun-solaris2.6/2.7.2/crtbegin.o -L/usr/pd/lib/ghc-4.01 -L/usr/pd/gnu/lib/ada/3! .10p/lib/gcc-lib/sparc-sun-solaris2.6/2.7.2 -L/usr/p d/gnu/lib/gcc-lib/sparc-sun-solaris2.6/2.8.1 -L/usr/pd/gnu/sparc-sun-solaris2.6/lib -L/usr/ccs/bin -L/usr/ccs/lib -L/usr/pd/gnu/lib tstExist2.o -lHS -lHS_cbits -lHSrts -lgmp -lm -lgcc -lc -lgcc /usr/pd/gnu/lib/ada/3.10p/lib/gcc-lib/sparc-sun-solaris2.6/2.7.2/crtend.o /usr/pd/gnu/lib/ada/3.10p/lib/gcc-lib/sparc-sun-solaris2.6/2.7.2/crtn.o ld: Software Generation Utilities - Solaris/ELF (3.0) real 1.4 user 0.3 sys 0.0 rm -f /tmp/ghc26260*