Integrated: 8264413: Data is written to file header even if its CRC32 was calculated
Yi Yang
yyang at openjdk.java.net
Thu Apr 1 02:11:16 UTC 2021
On Tue, 30 Mar 2021 09:25:20 GMT, Yi Yang <yyang at openjdk.org> wrote:
> Many tests under `runtime/cds/appcds/dynamicArchive` are crashed when turning on VerifySharedSpaces, VM reports inconsistent crc32 between dumptime and runtime(See detailed content on JBS attachments):
>
> $ diff dump.log run.log
> 17c17
> < - base_archive_is_default: 0
> ---
>> - base_archive_is_default: 1
> 19c19
> < - base_archive_name_size: 0
> ---
>> - base_archive_name_size: 113
>
> The root cause is that even if the CRC32 is calculated(Line 1902), ArchiveBuilder is still writing data to FileMapInfo(Line 1903):
>
> https://github.com/openjdk/jdk/blob/4ea6abfbd1818fa7049bc4f6e46d568e842acb34/src/hotspot/share/memory/archiveBuilder.cpp#L1091-L1094
>
> https://github.com/openjdk/jdk/blob/4ea6abfbd1818fa7049bc4f6e46d568e842acb34/src/hotspot/share/memory/filemap.cpp#L1236-L1251
>
> Now the expected CRC32(serialized in CDS archive) is different from the calculated ones at runtime. This patch addresses this problem, it writes base_archive_name and size into header **before** calculating CRC32(if needed).
>
> Thanks~
> Yang
This pull request has now been integrated.
Changeset: de495df7
Author: Yi Yang <yyang at openjdk.org>
Committer: Calvin Cheung <ccheung at openjdk.org>
URL: https://git.openjdk.java.net/jdk/commit/de495df7
Stats: 98 lines in 4 files changed: 87 ins; 8 del; 3 mod
8264413: Data is written to file header even if its CRC32 was calculated
Reviewed-by: ccheung, minqi
-------------
PR: https://git.openjdk.java.net/jdk/pull/3261
More information about the hotspot-runtime-dev
mailing list