CDS filemap fastdebug assert while loading Graal CE Polyglot in isolated classloader
David Holmes
david.holmes at oracle.com
Fri Dec 22 01:31:52 UTC 2023
Hi Steven,
On 22/12/2023 11:12 am, Steven Schlansker wrote:
> Hi hotspot-dev,
>
> I tried to submit a JVM crash report through bugreport.java.com, but
> my attempts to submit it are rejected with a 'Request method 'POST'
> not supported' error. So I will send it here as a backup.
I've filed
https://bugs.openjdk.org/browse/JDK-8322657
for you.
Regards,
David
-----
> While debugging a still-unexplained 'IncompatibleClassChangeError:
> disagree on InnerClasses attribute', I tried to run our application in
> a fastdebug jvm with additional logging. Instead of reproducing the
> original issue, I hit an assertion error in CDS.
>
> # assert(ent->in_named_module()) failed: must be
> # Internal Error (/build/src/hotspot/share/cds/filemap.cpp:590),
> pid=633408, tid=633409
>
> V [libjvm.so+0x1414d60] ModuleEntry::ModuleEntry(Handle, bool,
> Symbol*, Symbol*, Symbol*, ClassLoaderData*)+0x300
> (moduleEntry.cpp:63)
> V [libjvm.so+0x1414fc1] ModuleEntryTable::locked_create_entry(Handle,
> bool, Symbol*, Symbol*, Symbol*, ClassLoaderData*)+0x1c1
> (moduleEntry.cpp:619)
> V [libjvm.so+0x141c23d] Modules::define_module(Handle, unsigned char,
> _jstring*, _jstring*, _jobjectArray*, JavaThread*)+0x1f1d
> (modules.cpp:402)
> V [libjvm.so+0x101b099] JVM_DefineModule+0xb9 (jvm.cpp:1112)
> V [libjvm.so+0xc130e7]
> FileMapInfo::get_module_shared_path_index(Symbol*)+0x377
> (filemap.cpp:590)
>
> Fedora 39 Linux 6.6.6 x86_64
> Reproduced on java 21u26 and 23 (519ecd352a66633589f160db7390647d90e36b99)
>
> hs_err: https://gist.github.com/stevenschlansker/14b748af7758e4ea846ac22f12e53453
>
> To reproduce, this is the source:
>
> import java.io.File;
> import java.io.UncheckedIOException;
> import java.net.MalformedURLException;
> import java.net.URL;
> import java.net.URLClassLoader;
> import java.util.stream.Stream;
>
> public class PolyglotBoom {
> public static void main(final String... args) throws Exception {
> final var cl = new URLClassLoader(
> Stream.of(
> "polyglot",
> "nativeimage",
> "truffle-api",
> "js-language",
> "word",
> "collections",
> "icu4j",
> "regex")
> .map(fn -> {
> try {
> return new File("tmp/" + fn +
> "-23.1.1.jar").toURL();
> } catch (final MalformedURLException e) {
> throw new UncheckedIOException(e);
> }
> })
> .toArray(URL[]::new));
> final var engine =
> Class.forName("org.graalvm.polyglot.Engine", false, cl)
> .getMethod("create")
> .invoke(null);
> System.err.println("engine = " + engine);
> }
> }
>
> You must use a **fastdebug** build to 'make images' target to trigger
> the assertion
>
> You need the Graal CE 23.1.1 distribution placed in 'tmp/', I got it from
> https://repo1.maven.org/maven2/org/graalvm/ :
>
> polyglot-23.1.1.jar
> nativeimage-23.1.1.jar
> truffle-api-23.1.1.jar
> js-language-23.1.1.jar
> word-23.1.1.jar
> collections-23.1.1.jar
> icu4j-23.1.1.jar
> regex-23.1.1.jar
>
> Also, at least glassfish jaxb-runtime is needed also in 'tmp/' :
> https://repo1.maven.org/maven2/org/glassfish/jaxb/jaxb-runtime/2.3.1/jaxb-runtime-2.3.1.jar
>
> Run attached program:
> % javac PolyglotBoom.java
> % jar cf tmp.jar PolyglotBoom.class
> % ~/code/jdk/build/linux-x86_64-server-fastdebug/images/jdk/bin/java
> -cp tmp.jar:tmp/\* -XX:ArchiveClassesAtExit=archive.jsa PolyglotBoom
>
> Please let me know if I can provide any additional information. And it
> would be good to get the bug reporting tool fixed :)
> Thank you!
More information about the hotspot-dev
mailing list