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

ReservedSpace::align_reserved_region() broken on Windows

    Details

    • Subcomponent:
      gc
    • Resolved In Build:
      b31
    • OS:
      windows
    • Verification:
      Not verified

      Backports

        Description

        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.

          Attachments

            Issue Links

              Activity

                People

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

                  Dates

                  • Created:
                    Updated:
                    Resolved: