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*