[GHC] #13617: Segfault in Windows GHCi involving C code compiled with -O4
GHC
ghc-devs at haskell.org
Wed Apr 26 19:16:21 UTC 2017
#13617: Segfault in Windows GHCi involving C code compiled with -O4
----------------------------------------+-------------------------------
Reporter: RyanGlScott | Owner: (none)
Type: bug | Status: new
Priority: normal | Milestone:
Component: GHCi | Version: 8.0.2
Keywords: | Operating System: Windows
Architecture: Unknown/Multiple | Type of failure: GHCi crash
Test Case: | Blocked By:
Blocking: | Related Tickets:
Differential Rev(s): | Wiki Page:
----------------------------------------+-------------------------------
This is a very elusive bug that I noticed when running an `hmatrix`
example under GHCi on Windows. Luckily, this example can be reduced down
to a couple of `.hs` files and a single `.c` file (with no other Haskell
or C dependencies). Unfortunately, I can't quite figure out a way to
reproduce this bug without `cabal`, so I've put the source code at
https://github.com/RyanGlScott/hmatrix-segfault. You can reproduce this
bug by doing the following:
{{{
$ git clone https://github.com/RyanGlScott/hmatrix-segfault
$ git reset 2bfe38f964fca64dd776993c89ec59d35fb368a5
$ cd hmatrix-segfault/
$ cabal install
$ runghc exe/Main.hs
Access violation in generated code when reading ffffffffffffffff
}}}
Running `Main.hs` in GHCi crashes, whereas compiling it works:
{{{
$ ghc exe/Main.hs
$ ./exe/Main.exe
[1,1,1,1,1,1,1,1,1,1,1,1]
}}}
I've reproduced this with GHC 7.10.3, 8.0.2, and 8.2.1-rc1.
There are a couple of things that appear to be necessary to trigger the
segfault:
1. You need to have `-O4` under `cc-options` in `hmatrix-segfault.cabal`.
2. You need to define the [https://github.com/RyanGlScott/hmatrix-
segfault/blob/2bfe38f964fca64dd776993c89ec59d35fb368a5/src/Internal/Vectorized.hs#L38
FunCodeS] datatype.
Removing either of these things causes the program to work again under
GHCi.
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/13617>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list