<html>
  <head>

    <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <br>
    Hi everyone,<br>
    <br>
    Could I have a couple of reviews of this change?<br>
    <a class="moz-txt-link-freetext" href="http://cr.openjdk.java.net/~brutisso/8012915/webrev.00/">http://cr.openjdk.java.net/~brutisso/8012915/webrev.00/</a><br>
    <br>
    Background from the CR:<br>
    <br>
    <meta http-equiv="content-type" content="text/html;
      charset=ISO-8859-1">
    The method ReservedSpace::align_reserved_region() does not work on
    Windows. It tries to free parts of the previously allocated memory
    by doing two calls to os::release_memory(). However, on Windows
    os::release_memory() is implemented as:
    <br>
    <br>
     VirtualFree(addr, 0, MEM_RELEASE)
    <br>
    <br>
    which will always free up all the allocated memory:
    <br>
    <br>
    <a
href="http://msdn.microsoft.com/en-gb/library/windows/desktop/aa366892%28v=vs.85%29.aspx">http://msdn.microsoft.com/en-gb/library/windows/desktop/aa366892%28v=vs.85%29.aspx</a>
    <br>
    <br>
    "The function frees the entire region that is reserved in the
    initial allocation call to VirtualAlloc."
    <br>
    <br>
    This means that if ReservedSpace::align_reserved_region() is
    executed on Windows and we try to trim the beginning of the memory
    that we had allocated we will free all of the allocated memory.
    Subsequent calls to os::commit_memory() which will end up as:
    <br>
    <br>
    VirtualAlloc(addr, bytes, MEM_COMMIT, PAGE_READWRITE)
    <br>
    <br>
    will fail with 487, ERROR_INVALID_ADDRESS - Attempt to access
    invalid address.
    <br>
    <br>
    The solution is to use the existing method
    <meta http-equiv="content-type" content="text/html;
      charset=ISO-8859-1">
    os::reserve_memory_aligned() which does the same thing but works on
    all platforms.<br>
    <br>
    I assume that it is unusual that we enter this code path since I
    haven't seen a lot of crashes that seem related to this issue. But
    when we tried a patch that plays a bit with the alignments we crash
    on Windows. To have a simple reproducer I added a unit test. The
    test is not 100% fool proof, but on Windows without my proposed fix
    it fails 999 times out of 1000 runs. With my fix it passes 100% of
    the time.<br>
    <br>
    Thanks,<br>
    Bengt<br>
  </body>
</html>