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

Incorrect amount of memory unmapped with ImageFileReader::close()

    Details

    • Subcomponent:
    • Resolved In Build:
      b24
    • CPU:
      generic
    • OS:
      generic

      Backports

        Description

        When the "modules" file is opened in ImageFileReader::open(), and the contents are mmap()-ed, the size to be mmap()-ed is derived from map_size().

        399 // Memory map image (minimally the index.)
        400 _index_data = (u1*)osSupport::map_memory(_fd, _name, 0, (size_t)map_size());

        Which could be _file_size or _index_size, and for 64 bit processes, it would be _file_size. (about 140 MB)

        488 // Retrieve the size of the mapped image.
        489 inline u8 map_size() const {
        490 return (u8)(memory_map_image ? _file_size : _index_size);
        491 }

        But when the contents are unmapped in ImageFileReader::close(), the amount of memory unmapped is only _index_size (which is considerably lesser than _file_size).

        427 // Close image file.
        428 void ImageFileReader::close() {
        429 // Deallocate the index.
        430 if (_index_data) {
        431 osSupport::unmap_memory((char*)_index_data, _index_size);
        432 _index_data = NULL;
        433 }

        The amount of memory unmapped should also be map_size().

        Mail thread here:

        http://mail.openjdk.java.net/pipermail/jigsaw-dev/2018-December/014043.html

          Attachments

            Issue Links

              Activity

                People

                • Assignee:
                  jgeorge Jini George (Inactive)
                  Reporter:
                  jgeorge Jini George (Inactive)
                • Votes:
                  0 Vote for this issue
                  Watchers:
                  2 Start watching this issue

                  Dates

                  • Created:
                    Updated:
                    Resolved: