RFR: 8304147: JVM crash during shutdown when dumping dynamic archive [v3]
David Holmes
dholmes at openjdk.org
Mon Mar 27 05:09:19 UTC 2023
> `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.
David Holmes has updated the pull request incrementally with one additional commit since the last revision:
Address Coleen's comments
-------------
Changes:
- all: https://git.openjdk.org/jdk/pull/13134/files
- new: https://git.openjdk.org/jdk/pull/13134/files/518f5409..f037df96
Webrevs:
- full: https://webrevs.openjdk.org/?repo=jdk&pr=13134&range=02
- incr: https://webrevs.openjdk.org/?repo=jdk&pr=13134&range=01-02
Stats: 7 lines in 1 file changed: 1 ins; 0 del; 6 mod
Patch: https://git.openjdk.org/jdk/pull/13134.diff
Fetch: git fetch https://git.openjdk.org/jdk.git pull/13134/head:pull/13134
PR: https://git.openjdk.org/jdk/pull/13134
More information about the hotspot-runtime-dev
mailing list