[GHC] #13112: Windows 64-bit GHC HEAD segfaults on the code with a lot of TH stuff.

GHC ghc-devs at haskell.org
Mon Jan 16 11:17:33 UTC 2017


#13112: Windows 64-bit GHC HEAD segfaults on the code with a lot of TH stuff.
---------------------------------+--------------------------------------
        Reporter:  awson         |                Owner:
            Type:  bug           |               Status:  new
        Priority:  normal        |            Milestone:
       Component:  Compiler      |              Version:  8.1
      Resolution:                |             Keywords:
Operating System:  Windows       |         Architecture:  x86_64 (amd64)
 Type of failure:  None/Unknown  |            Test Case:
      Blocked By:                |             Blocking:
 Related Tickets:                |  Differential Rev(s):
       Wiki Page:                |
---------------------------------+--------------------------------------

Comment (by awson):

 I've managed to create quick and dirty solution to make GHC work properly
 (basically we have to add `MEM_TOP_DOWN` flag to `VirtualAlloc` in our
 main `allocNew` allocation routine (see `OSMem.c`).

 In such a way we allocate all memory except executable (which uses
 `allocateExec` and `allocateImageAndTrampolines` allocation routines) from
 top to down leaving enough room for executable memory in low address area.

 OTOH, while this solves the problem for GHC itself, it can create problems
 for programs linked against such modified RTS:
 1. MS warns that allocation from top to down may be slower;
 2. If a client makes its own dynamic data execution using these data, its
 code will likely crash.

 Thus if we ever would go this way, we should modify the build system,
 using different allocation strategies for GHC itself and for RTS libraries
 distributed along with GHC.

 I have another couple of patches, which may or may not improve Windows
 allocation matters in RTS. E.g. `HeapAlloc` works well for
 `allocateImageAndTrampolines` saving quite a lot of memory comparing to
 the quite wasteful `VirtualAlloc`.

--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/13112#comment:4>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler


More information about the ghc-tickets mailing list