<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    Hi Bengt,<br>
    <br>
    This looks good to me.<br>
    <br>
    Thanks for the explanation regarding hs24 and hs25.<br>
    <br>
    JohnC<br>
    <br>
    <div class="moz-cite-prefix">On 4/25/2013 8:14 AM, Bengt Rutisson
      wrote:<br>
    </div>
    <blockquote cite="mid:5179486D.8010403@oracle.com" type="cite">
      <meta content="text/html; charset=ISO-8859-1"
        http-equiv="Content-Type">
      <div class="moz-cite-prefix"><br>
        Hi again,<br>
        <br>
        It turns out that the code that I was fixing is actually not in
        use. Thanks Coleen for triggering me to figure that out!<br>
        <br>
        Here is an updated webrev where the code is removed instead:<br>
        <a moz-do-not-send="true" class="moz-txt-link-freetext"
          href="http://cr.openjdk.java.net/%7Ebrutisso/8012915/webrev.01/">http://cr.openjdk.java.net/~brutisso/8012915/webrev.01/</a><br>
        <br>
        Thanks,<br>
        Bengt<br>
        <br>
        On 4/25/13 1:09 PM, Bengt Rutisson wrote:<br>
      </div>
      <blockquote cite="mid:51790ED2.8020407@oracle.com" type="cite">
        <meta http-equiv="content-type" content="text/html;
          charset=ISO-8859-1">
        <br>
        Hi everyone,<br>
        <br>
        Could I have a couple of reviews of this change?<br>
        <a moz-do-not-send="true" class="moz-txt-link-freetext"
          href="http://cr.openjdk.java.net/%7Ebrutisso/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 moz-do-not-send="true"
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>
      </blockquote>
      <br>
    </blockquote>
    <br>
  </body>
</html>