
#12573: Allow the user to pick the address that the RTS reserves for the heap -------------------------------------+------------------------------------- Reporter: bitonic | Owner: Type: feature | Status: new request | Priority: normal | Milestone: Component: Runtime | Version: 8.0.1 System | Keywords: | Operating System: Unknown/Multiple Architecture: | Type of failure: None/Unknown Unknown/Multiple | Test Case: | Blocked By: Blocking: | Related Tickets: Differential Rev(s): | Wiki Page: -------------------------------------+------------------------------------- We stumbled upon a case where an external library (OpenCL) does not work if a specific address (0x200000000) is taken. It so happens that `osReserveHeapMemory` starts trying to `mmap` at `0x200000000`: {{{ void *hint = (void*)((W_)8 * (1 << 30) + attempt * BLOCK_SIZE); at = osTryReserveHeapMemory(*len, hint); }}} This makes it impossible to use Haskell programs compiled with GHC 8 with C functions that use OpenCL. See this example https://github.com/chpatrick/oclwtf for a repro. My proposal is to allow the user to work around this kind of behavior outside our control by letting the user override the starting address through an RTS command line flag. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/12573 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler