[GHC] #12865: POSIX osDecommitMemory has nasty compatibility problems

GHC ghc-devs at haskell.org
Mon Nov 21 23:21:04 UTC 2016


#12865: POSIX osDecommitMemory has nasty compatibility problems
----------------------------------------+---------------------------------
           Reporter:  bgamari           |             Owner:
               Type:  bug               |            Status:  new
           Priority:  high              |         Milestone:  8.2.1
          Component:  Runtime System    |           Version:  8.0.1
           Keywords:                    |  Operating System:  Linux
       Architecture:  Unknown/Multiple  |   Type of failure:  None/Unknown
          Test Case:                    |        Blocked By:
           Blocking:                    |   Related Tickets:
Differential Rev(s):                    |         Wiki Page:
----------------------------------------+---------------------------------
 `osDecommitMemory` in `rts/posix/OSMem.c` currently does the following,
 {{{#!c
 #ifdef MADV_FREE
     // Try MADV_FREE first, FreeBSD has both and MADV_DONTNEED
     // just swaps memory out
     r = madvise(at, size, MADV_FREE);
 #else
     r = madvise(at, size, MADV_DONTNEED);
 #endif
     if(r < 0)
         sysErrorBelch("unable to decommit memory");
 }}}

 As it turns out, the Linux kernel as of 4.5 supports `MADV_FREE`. This
 means that binary distributions built in such environments will use
 `MADV_FREE`, even if running on an older kernel that does not support this
 advice. Ultimately this means that any attempt to decommit will fail.

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


More information about the ghc-tickets mailing list