[jdk11u-dev] Integrated: 8268364: jmethod clearing should be done during unloading

Kerem Kat duke at openjdk.org
Wed Dec 4 10:35:41 UTC 2024


On Wed, 18 Sep 2024 15:10:33 GMT, Kerem Kat <duke at openjdk.org> wrote:

> Backport of [8268364](https://bugs.openjdk.org/browse/JDK-8268364), single hunk conflict resolved by accepting "empty" from the backport commit vs. `clear_jmethod_ids` invocation in the dtor. Backport commit moves the `clear_jmethod_ids` invocation to `unload` method instead.
> 
> It fixes crashes when accessing jmethodIDs of a class being unloaded.
> 
> Here is the reproducer that crashes JVM in ~1 second without the patch, but works fine with it: [gist](https://gist.github.com/krk/a0800bac5bc5a01709be85637285a965).
> 
> This fix also resolves the issue reported at https://github.com/async-profiler/async-profiler/issues/974 for Java 11.
> 
> To run the repro:
> 
> 
> javac Main.java
> gcc -shared -I"$JAVA_HOME/include" -I"$JAVA_HOME/include/linux" -fPIC repro.cpp -orepro.so
> 
> java -agentpath:"$(pwd)/repro.so" -Xmx100m -XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled -XX:+ExplicitGCInvokesConcurrent Main

This pull request has now been integrated.

Changeset: 50da3f66
Author:    Kerem Kat <katkerem at amazon.com>
Committer: Aleksey Shipilev <shade at openjdk.org>
URL:       https://git.openjdk.org/jdk11u-dev/commit/50da3f663a52255bc17b72ab78709b34d635dd7a
Stats:     31 lines in 2 files changed: 20 ins; 9 del; 2 mod

8268364: jmethod clearing should be done during unloading

Reviewed-by: coleenp
Backport-of: 3d84398d128bb2eed6280ebbc3f57afb3b89908f

-------------

PR: https://git.openjdk.org/jdk11u-dev/pull/2935


More information about the jdk-updates-dev mailing list