[jdk11u-dev] Integrated: 8251945: SIGSEGV in PackageEntry::purge_qualified_exports()

Zhengyu Gu zgu at openjdk.java.net
Mon Jun 21 11:52:36 UTC 2021


On Thu, 10 Jun 2021 13:48:15 GMT, Zhengyu Gu <zgu at openjdk.org> wrote:

> I would like to fix the crash in openjdk 11u.
> 
> The crash is caused by racy installing new CLD in ClassLoaderDataGraph::add_to_graph().
> 
> The method first creates new ClassLoaderData, and in its constructor, it creates unnamed module entry and installs it in java_lang_Module oop.
> 
> Then add_to_graph() tries to install newly created CLD to java_lang_ClassLoader oop via CAS. If it loses race, then it deletes new CLD and returns existing one.
> 
> But at this point, java_lang_Module oop still points module entry that is already freed.
> 
> The fix I am purposing is to borrow ClassLoaderDataGraph_lock from JDK-8210155, but only uses it to prevent racing installing CLD and new CLD is still published via CAS to avoid needing additional patches.
> 
> Test:
>  - [x] hotspot_runtime
>  - [x] hotspot_gc
>  - [x] vmTestbase_vm_gc

This pull request has now been integrated.

Changeset: 3c54e03e
Author:    Zhengyu Gu <zgu at openjdk.org>
URL:       https://git.openjdk.java.net/jdk11u-dev/commit/3c54e03e2df8eef25442fd922d286eb57dfa343e
Stats:     259 lines in 12 files changed: 220 ins; 6 del; 33 mod

8251945: SIGSEGV in PackageEntry::purge_qualified_exports()

Reviewed-by: adinn

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

PR: https://git.openjdk.java.net/jdk11u-dev/pull/22


More information about the jdk-updates-dev mailing list