Allow the user to pick the address that the RTS reserves for the heap
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.
Trac metadata
Trac field | Value |
---|---|
Version | 8.0.1 |
Type | FeatureRequest |
TypeOfFailure | OtherFailure |
Priority | normal |
Resolution | Unresolved |
Component | Runtime System |
Test case | |
Differential revisions | |
BlockedBy | |
Related | |
Blocking | |
CC | simonmar |
Operating system | |
Architecture |