RFR: 8304147: JVM crash during shutdown when dumping dynamic archive
David Holmes
dholmes at openjdk.org
Wed Mar 22 21:54:42 UTC 2023
On Wed, 22 Mar 2023 21:32:44 GMT, Calvin Cheung <ccheung at openjdk.org> wrote:
>> `DynamicArchive::prepare_for_dump_at_exit()` could be called concurrently on the two VM exit paths, leading either to assertion failures in debug builds, or a crash in product build when the actual dump occurred. The basic fix was to move the `DynamicArchive::prepare_for_dump_at_exit()` functionality into `before_exit` (java.cpp) where it can only be executed by one thread - thus avoiding the race (Phase 1).
>>
>> Once that is done we can move the actual dump operation to be co-located with the `prepare_for_dump_at_exit()` (Phase 2) and then consolidate that code by refactoring it into a new `DynamicArchive::dump_at_exit()` method (Phase 3), and then removing the leftover methods that are no longer needed (Phase 4).
>>
>> Each phase can be seen in distinct commits if you prefer to see the steps involved.
>>
>> Testing:
>> - new ExitRace test
>> - all dynamicArchive tests
>> - tiers 1-4
>>
>> Thanks.
>
> test/hotspot/jtreg/runtime/cds/appcds/dynamicArchive/ExitRaceTest.java line 52:
>
>> 50: dump(topArchiveName,
>> 51: "-Xlog:cds+dynamic=debug",
>> 52: "-XX:-CreateCoredumpOnCrash",
>
> Why disabling core dump?
Left over from developing the test on an unfixed VM. I will remove it now.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/13134#discussion_r1145446129
More information about the hotspot-runtime-dev
mailing list