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*

Reply via email to