-
Bug
-
Resolution: Fixed
-
P3
-
12
-
b24
-
generic
-
generic
Issue | Fix Version | Assignee | Priority | Status | Resolution | Resolved In Build |
---|---|---|---|---|---|---|
JDK-8234764 | 11.0.7-oracle | Kiran Sidhartha Ravikumar | P3 | Resolved | Fixed | b01 |
JDK-8224205 | 11.0.4 | Unassigned | P3 | Resolved | Fixed | b04 |
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
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
- backported by
-
JDK-8224205 Incorrect amount of memory unmapped with ImageFileReader::close()
-
- Resolved
-
-
JDK-8234764 Incorrect amount of memory unmapped with ImageFileReader::close()
-
- Resolved
-
- relates to
-
JDK-8200613 SA: jstack throws UnmappedAddressException with a CDS core file
-
- Resolved
-