-
Bug
-
Resolution: External
-
P3
-
21.0.2
After Oracle GraalVM for JDK 21.0.2 was rolled out, a [Micronaut gate started to fail](https://github.com/micronaut-projects/micronaut-eclipsestore/actions/runs/7544839182/job/20539092928?pr=4#step:8:496). It's not limited to GraalVM as we are able to reproduce this on Oracle JDK 21.0.2.
Reproducer:
```
# set JAVA_HOME to jdk-21.0.2 and ensure Podman/Docker is running
git clone https://github.com/micronaut-projects/micronaut-eclipsestore.git
cd micronaut-eclipsestore
git checkout 64b2b1a1b7b073553edb2b7eba26426cf4165381
export TESTCONTAINERS_RYUK_DISABLED=true PREDICTIVE_TEST_SELECTION=true
./gradlew :test-suite:test --no-daemon --continue
```
Error trace
```
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
V [libjvm.so+0xe46d40] SymbolTable::do_lookup(char const*, int, unsigned long)+0xd0
V [libjvm.so+0x5f05cd] ClassFileParser::parse_constant_pool_entries(ClassFileStream const*, ConstantPool*, int, JavaThread*)+0x74d
V [libjvm.so+0x5f0ed6] ClassFileParser::parse_stream(ClassFileStream const*, JavaThread*) [clone .part.0]+0x166
V [libjvm.so+0x5f189e] ClassFileParser::ClassFileParser(ClassFileStream*, Symbol*, ClassLoaderData*, ClassLoadInfo const*, ClassFileParser::Publicity, JavaThread*)+0x25e
V [libjvm.so+0xb1659e] KlassFactory::create_from_stream(ClassFileStream*, Symbol*, ClassLoaderData*, ClassLoadInfo const&, JavaThread*)+0x22e
V [libjvm.so+0xe5a2b0] SystemDictionary::resolve_class_from_stream(ClassFileStream*, Symbol*, Handle, ClassLoadInfo const&, JavaThread*)+0x170
V [libjvm.so+0x9beacf] jvm_define_class_common(char const*, _jobject*, signed char const*, int, _jobject*, char const*, JavaThread*)+0x20f
V [libjvm.so+0x9bed49] JVM_DefineClassWithSource+0x69
C [libjava.so+0xeb62] Java_java_lang_ClassLoader_defineClass1+0x182
J 921 java.lang.ClassLoader.defineClass1(Ljava/lang/ClassLoader;Ljava/lang/String;[BIILjava/security/ProtectionDomain;Ljava/lang/String;)Ljava/lang/Class; java.base@21.0.2 (0 bytes) @ 0x00007fd5c05ef680 [0x00007fd5c05ef540+0x0000000000000140]
J 4636 c2 java.security.SecureClassLoader.defineClass(Ljava/lang/String;[BIILjava/security/CodeSource;)Ljava/lang/Class; java.base@21.0.2 (16 bytes) @ 0x00007fd5c0784f30 [0x00007fd5c0784da0+0x0000000000000190]
J 3891 c2 jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(Ljava/lang/String;)Ljava/lang/Class; java.base@21.0.2 (64 bytes) @ 0x00007fd5c0746fbc [0x00007fd5c0745060+0x0000000000001f5c]
J 3069 c2 jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(Ljava/lang/String;Z)Ljava/lang/Class; java.base@21.0.2 (143 bytes) @ 0x00007fd5c06f7cf0 [0x00007fd5c06f79a0+0x0000000000000350]
J 3869 c2 java.lang.ClassLoader.loadClass(Ljava/lang/String;)Ljava/lang/Class; java.base@21.0.2 (7 bytes) @ 0x00007fd5c0736ab8 [0x00007fd5c0736a60+0x0000000000000058]
v ~StubRoutines::call_stub 0x00007fd5bfe5fcc6
V [libjvm.so+0x8e28d5] JavaCalls::call_helper(JavaValue*, methodHandle const&, JavaCallArguments*, JavaThread*)+0x2e5
V [libjvm.so+0x8e4482] JavaCalls::call_virtual(JavaValue*, Handle, Klass*, Symbol*, Symbol*, Handle, JavaThread*)+0x1e2
V [libjvm.so+0xe5c0c2] SystemDictionary::load_instance_class_impl(Symbol*, Handle, JavaThread*)+0x182
V [libjvm.so+0xe5a65c] SystemDictionary::load_instance_class(Symbol*, Handle, JavaThread*)+0x1c
V [libjvm.so+0xe5b1b9] SystemDictionary::resolve_instance_class_or_null(Symbol*, Handle, Handle, JavaThread*)+0x9d9
V [libjvm.so+0xe5c51e] SystemDictionary::resolve_or_fail(Symbol*, Handle, Handle, bool, JavaThread*)+0x5e
V [libjvm.so+0x671af7] ConstantPool::klass_at_impl(constantPoolHandle const&, int, JavaThread*)+0x157
V [libjvm.so+0x8d89ed] InterpreterRuntime::_new(JavaThread*, ConstantPool*, int)+0x6d
j io.micronaut.http.resource.ResourceLoaderFactory.fileSystemResourceLoader()Lio/micronaut/core/io/file/FileSystemResourceLoader;+0
```
Reproducer:
```
# set JAVA_HOME to jdk-21.0.2 and ensure Podman/Docker is running
git clone https://github.com/micronaut-projects/micronaut-eclipsestore.git
cd micronaut-eclipsestore
git checkout 64b2b1a1b7b073553edb2b7eba26426cf4165381
export TESTCONTAINERS_RYUK_DISABLED=true PREDICTIVE_TEST_SELECTION=true
./gradlew :test-suite:test --no-daemon --continue
```
Error trace
```
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
V [libjvm.so+0xe46d40] SymbolTable::do_lookup(char const*, int, unsigned long)+0xd0
V [libjvm.so+0x5f05cd] ClassFileParser::parse_constant_pool_entries(ClassFileStream const*, ConstantPool*, int, JavaThread*)+0x74d
V [libjvm.so+0x5f0ed6] ClassFileParser::parse_stream(ClassFileStream const*, JavaThread*) [clone .part.0]+0x166
V [libjvm.so+0x5f189e] ClassFileParser::ClassFileParser(ClassFileStream*, Symbol*, ClassLoaderData*, ClassLoadInfo const*, ClassFileParser::Publicity, JavaThread*)+0x25e
V [libjvm.so+0xb1659e] KlassFactory::create_from_stream(ClassFileStream*, Symbol*, ClassLoaderData*, ClassLoadInfo const&, JavaThread*)+0x22e
V [libjvm.so+0xe5a2b0] SystemDictionary::resolve_class_from_stream(ClassFileStream*, Symbol*, Handle, ClassLoadInfo const&, JavaThread*)+0x170
V [libjvm.so+0x9beacf] jvm_define_class_common(char const*, _jobject*, signed char const*, int, _jobject*, char const*, JavaThread*)+0x20f
V [libjvm.so+0x9bed49] JVM_DefineClassWithSource+0x69
C [libjava.so+0xeb62] Java_java_lang_ClassLoader_defineClass1+0x182
J 921 java.lang.ClassLoader.defineClass1(Ljava/lang/ClassLoader;Ljava/lang/String;[BIILjava/security/ProtectionDomain;Ljava/lang/String;)Ljava/lang/Class; java.base@21.0.2 (0 bytes) @ 0x00007fd5c05ef680 [0x00007fd5c05ef540+0x0000000000000140]
J 4636 c2 java.security.SecureClassLoader.defineClass(Ljava/lang/String;[BIILjava/security/CodeSource;)Ljava/lang/Class; java.base@21.0.2 (16 bytes) @ 0x00007fd5c0784f30 [0x00007fd5c0784da0+0x0000000000000190]
J 3891 c2 jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(Ljava/lang/String;)Ljava/lang/Class; java.base@21.0.2 (64 bytes) @ 0x00007fd5c0746fbc [0x00007fd5c0745060+0x0000000000001f5c]
J 3069 c2 jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(Ljava/lang/String;Z)Ljava/lang/Class; java.base@21.0.2 (143 bytes) @ 0x00007fd5c06f7cf0 [0x00007fd5c06f79a0+0x0000000000000350]
J 3869 c2 java.lang.ClassLoader.loadClass(Ljava/lang/String;)Ljava/lang/Class; java.base@21.0.2 (7 bytes) @ 0x00007fd5c0736ab8 [0x00007fd5c0736a60+0x0000000000000058]
v ~StubRoutines::call_stub 0x00007fd5bfe5fcc6
V [libjvm.so+0x8e28d5] JavaCalls::call_helper(JavaValue*, methodHandle const&, JavaCallArguments*, JavaThread*)+0x2e5
V [libjvm.so+0x8e4482] JavaCalls::call_virtual(JavaValue*, Handle, Klass*, Symbol*, Symbol*, Handle, JavaThread*)+0x1e2
V [libjvm.so+0xe5c0c2] SystemDictionary::load_instance_class_impl(Symbol*, Handle, JavaThread*)+0x182
V [libjvm.so+0xe5a65c] SystemDictionary::load_instance_class(Symbol*, Handle, JavaThread*)+0x1c
V [libjvm.so+0xe5b1b9] SystemDictionary::resolve_instance_class_or_null(Symbol*, Handle, Handle, JavaThread*)+0x9d9
V [libjvm.so+0xe5c51e] SystemDictionary::resolve_or_fail(Symbol*, Handle, Handle, bool, JavaThread*)+0x5e
V [libjvm.so+0x671af7] ConstantPool::klass_at_impl(constantPoolHandle const&, int, JavaThread*)+0x157
V [libjvm.so+0x8d89ed] InterpreterRuntime::_new(JavaThread*, ConstantPool*, int)+0x6d
j io.micronaut.http.resource.ResourceLoaderFactory.fileSystemResourceLoader()Lio/micronaut/core/io/file/FileSystemResourceLoader;+0
```
- relates to
-
JDK-8325173 JDK-8316337 causes double-free in Cleaner code
- Closed
-
JDK-8278965 crash in SymbolTable::do_lookup
- Resolved