Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8012915

ReservedSpace::align_reserved_region() broken on Windows

XMLWordPrintable

    • gc
    • b31
    • windows
    • Not verified

        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:

         VirtualFree(addr, 0, MEM_RELEASE)

        which will always free up all the allocated memory:

        http://msdn.microsoft.com/en-gb/library/windows/desktop/aa366892%28v=vs.85%29.aspx

        "The function frees the entire region that is reserved in the initial allocation call to VirtualAlloc."

        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:

        VirtualAlloc(addr, bytes, MEM_COMMIT, PAGE_READWRITE)

        will fail with 487, ERROR_INVALID_ADDRESS - Attempt to access invalid address.

              brutisso Bengt Rutisson (Inactive)
              brutisso Bengt Rutisson (Inactive)
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

                Created:
                Updated:
                Resolved: