[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