Skip to content

Segmentation fault in ray tracer with certain options

The attached program, RayT.hs, when compiled like so can be executed normally:

$ ghc --make -O2 -funbox-strict-fields RayT.hs 
[1 of 1] Compiling Main             ( RayT.hs, RayT.o )

RayT.hs:7:9:
    Warning: No explicit method nor default method for `*'
    In the instance declaration for `Num Vector'

RayT.hs:7:9:
    Warning: No explicit method nor default method for `abs'
    In the instance declaration for `Num Vector'

RayT.hs:7:9:
    Warning: No explicit method nor default method for `signum'
    In the instance declaration for `Num Vector'
Linking RayT ...
$ ./RayT 9 512 > test.png
$ file test.png 
test.png: Netpbm PGM "rawbits" image data
$

But when compiled with these options, it seg faults:

$ ghc --make RayT.hs -O2 -fvia-C -funbox-strict-fields -optc-O3 -fexcess-precision -optc-ffast-math -funfolding-keeness-factor=10 
[1 of 1] Compiling Main             ( RayT.hs, RayT.o )

RayT.hs:7:9:
    Warning: No explicit method nor default method for `*'
    In the instance declaration for `Num Vector'

RayT.hs:7:9:
    Warning: No explicit method nor default method for `abs'
    In the instance declaration for `Num Vector'

RayT.hs:7:9:
    Warning: No explicit method nor default method for `signum'
    In the instance declaration for `Num Vector'
Linking RayT ...
$ ./RayT 9 512 > test.png
zsh: segmentation fault  ./RayT 9 512 > test.png
$ gdb RayT
GNU gdb 6.3.50-20050815 (Apple version gdb-962) (Sat Jul 26 08:14:40 UTC 2008)
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "i386-apple-darwin"...Reading symbols for shared libraries ... done

(gdb) start 9 512
Breakpoint 1 at 0x521e2
Starting program: /Users/austinseipp/code/lhc/lhc-head/regress/tests/2_language/RayT 9 512
Reading symbols for shared libraries ++. done

Breakpoint 1, 0x000521e2 in main ()
(gdb) continue
Continuing.
P5
512 512
255

Program received signal EXC_BAD_ACCESS, Could not access memory.
Reason: 13 at address: 0x00000000
0x00002fc9 in s367_info ()
(gdb) backtrace
#0  0x00002fc9 in s367_info ()
#1  0x00000000 in ?? ()
(gdb) 
$ 
Trac metadata
Trac field Value
Version 6.10.1
Type Bug
TypeOfFailure OtherFailure
Priority normal
Resolution Unresolved
Component Compiler
Test case
Differential revisions
BlockedBy
Related
Blocking
CC
Operating system
Architecture
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information