Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Some system tests failed with java.lang.LinkageError #5966

Open
tkiriyama opened this issue Feb 21, 2025 · 2 comments
Open

Some system tests failed with java.lang.LinkageError #5966

tkiriyama opened this issue Feb 21, 2025 · 2 comments

Comments

@tkiriyama
Copy link

I ran the aqua-test with jdk21 on Linux , but some system-tests failed.

failed tests in _sanity.system
not ok 6 - TestJlmRemoteClassAuth_0
not ok 7 - TestJlmRemoteClassAuth_1
not ok 9 - TestJlmRemoteClassNoAuth_0
not ok 10 - TestJlmRemoteClassNoAuth_1
not ok 12 - TestJlmRemoteMemoryAuth_0
not ok 13 - TestJlmRemoteMemoryAuth_1
not ok 15 - TestJlmRemoteMemoryNoAuth_0
not ok 16 - TestJlmRemoteMemoryNoAuth_1
not ok 18 - TestJlmRemoteNotifierProxyAuth_0
not ok 19 - TestJlmRemoteNotifierProxyAuth_1
not ok 21 - TestJlmRemoteThreadAuth_0
not ok 22 - TestJlmRemoteThreadAuth_1
not ok 24 - TestJlmRemoteThreadNoAuth_0
not ok 25 - TestJlmRemoteThreadNoAuth_1
not ok 28 - LambdaLoadTest_HS_5m_0
not ok 29 - LambdaLoadTest_HS_5m_1
not ok 31 - ParallelStreamsLoadTest_HS_0
not ok 32 - ParallelStreamsLoadTest_HS_1
not ok 35 - MathLoadTest_autosimd_5m_0
not ok 36 - MathLoadTest_autosimd_5m_1
not ok 38 - MathLoadTest_bigdecimal_5m_0
not ok 39 - MathLoadTest_bigdecimal_5m_1
not ok 42 - MauveSingleThrdLoad_HS_5m_0
not ok 43 - MauveSingleThrdLoad_HS_5m_1
not ok 45 - MauveSingleInvocLoad_HS_5m_0
not ok 46 - MauveSingleInvocLoad_HS_5m_1
not ok 48 - MauveMultiThrdLoad_5m_0
not ok 49 - MauveMultiThrdLoad_5m_1
not ok 151 - CLLoad_0
not ok 152 - CLLoad_1
not ok 161 - ClassLoadingTest_5m_0
not ok 162 - ClassLoadingTest_5m_1
not ok 164 - NioLoadTest_5m_0
not ok 165 - NioLoadTest_5m_1
failed tests in _extended.system
not ok 5 - MathLoadTest_all_5m_0
not ok 6 - MathLoadTest_all_5m_1
not ok 11 - MiniMix_5m_0
not ok 12 - MiniMix_5m_1
not ok 14 - MiniMix_10m_0
not ok 15 - MiniMix_10m_1
not ok 17 - MiniMix_aot_5m_0
not ok 18 - ConcurrentLoadTest_5m_0
not ok 19 - ConcurrentLoadTest_5m_1
not ok 21 - DBBLoadTest_5m_0
not ok 22 - DBBLoadTest_5m_1
not ok 24 - LangLoadTest_5m_0
not ok 25 - LangLoadTest_5m_1
not ok 27 - LockingLoadTest_0
not ok 28 - LockingLoadTest_1
not ok 30 - UtilLoadTest_5m_0
not ok 31 - UtilLoadTest_5m_1

These tests fail in any test pipelines now.
https://ci.adoptium.net/view/Test_system/job/Test_openjdk24_hs_sanity.system_x86-64_alpine-linux/26/

They seem to fail for the same reason.

Exception in thread "main" java.lang.LinkageError: loader 'app' attempted duplicate class definition for org.apache.logging.log4j.core.impl.MutableLogEvent. (org.apache.logging.log4j.core.impl.MutableLogEvent is in unnamed module of loader 'app')

I enabled JFR and jdk.ClassLoad, jdk.ClassDefinition, jdk.ClassRedefinition and jdk.ClassUnload event collected. The jdk.ClassDefine and jdk.ClassLoad events for MutableLogEvent were logged just before java.lang.LinkageError was thrown.
I think net.adoptopenjdk.blockedexitagent.BlockedExitAgent rewrited MutableLogEvent using ASM package.

JFR event log
jdk.ClassDefine {
  startTime = 21:19:53.974 (2025-02-15)
  definedClass = org.apache.logging.log4j.core.impl.MutableLogEvent (classLoader = app)
  definingClassLoader = jdk.internal.loader.ClassLoaders$AppClassLoader (id = 2)
  eventThread = "main" (javaThreadId = 1)
  stackTrace = [
    java.lang.ClassLoader.defineClass1(ClassLoader, String, byte[], int, int, ProtectionDomain, String)
    java.lang.ClassLoader.defineClass(String, byte[], int, int, ProtectionDomain) line: 1027
    java.security.SecureClassLoader.defineClass(String, byte[], int, int, CodeSource) line: 150
    jdk.internal.loader.BuiltinClassLoader.defineClass(String, Resource) line: 862
    jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(String) line: 760
    jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(String, boolean) line: 681
    jdk.internal.loader.BuiltinClassLoader.loadClass(String, boolean) line: 639
    jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(String, boolean) line: 188
    java.lang.ClassLoader.loadClass(String) line: 526
    java.lang.Class.forName0(String, boolean, ClassLoader, Class)
    java.lang.Class.forName(String, boolean, ClassLoader, Class) line: 534
    java.lang.Class.forName(String, boolean, ClassLoader) line: 513
    org.objectweb.asm.ClassWriter.getCommonSuperClass(String, String) line: 1066
    org.objectweb.asm.SymbolTable.addMergedType(int, int) line: 1286
    org.objectweb.asm.Frame.merge(SymbolTable, int, int[], int) line: 1311
    org.objectweb.asm.Frame.merge(SymbolTable, Frame, int) line: 1255
    org.objectweb.asm.MethodWriter.computeAllFrames() line: 1612
    org.objectweb.asm.MethodWriter.visitMaxs(int, int) line: 1548
    org.objectweb.asm.MethodVisitor.visitMaxs(int, int) line: 787
    org.objectweb.asm.commons.LocalVariablesSorter.visitMaxs(int, int) line: 147
    org.objectweb.asm.ClassReader.readCode(MethodVisitor, Context, int) line: 2664
    org.objectweb.asm.ClassReader.readMethod(ClassVisitor, Context, int) line: 1512
    org.objectweb.asm.ClassReader.accept(ClassVisitor, Attribute[], int) line: 745
    org.objectweb.asm.ClassReader.accept(ClassVisitor, int) line: 425
    net.adoptopenjdk.blockedexitagent.BlockedExitAgent$BlockedExitTransformer.transform(ClassLoader, String, Class, ProtectionDomain, byte[]) line: 40
    java.lang.instrument.ClassFileTransformer.transform(Module, ClassLoader, String, Class, ProtectionDomain, byte[]) line: 244
    sun.instrument.TransformerManager.transform(Module, ClassLoader, String, Class, ProtectionDomain, byte[]) line: 188
    sun.instrument.InstrumentationImpl.transform(Module, ClassLoader, String, Class, ProtectionDomain, byte[], boolean) line: 610
    java.lang.ClassLoader.defineClass1(ClassLoader, String, byte[], int, int, ProtectionDomain, String)
    java.lang.ClassLoader.defineClass(String, byte[], int, int, ProtectionDomain) line: 1027
    java.security.SecureClassLoader.defineClass(String, byte[], int, int, CodeSource) line: 150
    jdk.internal.loader.BuiltinClassLoader.defineClass(String, Resource) line: 862
    jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(String) line: 760
    jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(String, boolean) line: 681
    jdk.internal.loader.BuiltinClassLoader.loadClass(String, boolean) line: 639
    jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(String, boolean) line: 188
    java.lang.ClassLoader.loadClass(String) line: 526
    org.apache.logging.log4j.core.impl.ReusableLogEventFactory.createInstance(MutableLogEvent) line: 109
    org.apache.logging.log4j.core.impl.ReusableLogEventFactory.getOrCreateMutableLogEvent() line: 105
    org.apache.logging.log4j.core.impl.ReusableLogEventFactory.createEvent(String, Marker, String, StackTraceElement, Level, Message, List, Throwable) line: 80
    org.apache.logging.log4j.core.config.LoggerConfig.log(String, String, StackTraceElement, Marker, Level, Message, Throwable) line: 415
    org.apache.logging.log4j.core.config.AwaitCompletionReliabilityStrategy.log(Supplier, String, String, StackTraceElement, Marker, Level, Message, Throwable) line: 82
    org.apache.logging.log4j.core.Logger.log(Level, Marker, String, StackTraceElement, Message, Throwable) line: 161
    org.apache.logging.log4j.spi.AbstractLogger.tryLogMessage(String, StackTraceElement, Level, Marker, Message, Throwable) line: 2205
    org.apache.logging.log4j.spi.AbstractLogger.logMessageTrackRecursion(String, Level, Marker, Message, Throwable) line: 2159
    org.apache.logging.log4j.spi.AbstractLogger.logMessageSafely(String, Level, Marker, Message, Throwable) line: 2142
    org.apache.logging.log4j.spi.AbstractLogger.logMessage(String, Level, Marker, String, Throwable) line: 2017
    org.apache.logging.log4j.spi.AbstractLogger.logIfEnabled(String, Level, Marker, String, Throwable) line: 1983
    org.apache.logging.log4j.spi.AbstractLogger.info(String) line: 1320
    net.adoptopenjdk.loadTest.LoadTest.<init>(String[]) line: 253
    net.adoptopenjdk.loadTest.LoadTest.main(String[]) line: 105
  ]
}

jdk.ClassLoad {
  startTime = 21:19:53.973 (2025-02-15)
  duration = 0.563 ms
  loadedClass = org.apache.logging.log4j.core.impl.MutableLogEvent (classLoader = app)
  definingClassLoader = jdk.internal.loader.ClassLoaders$AppClassLoader (id = 2)
  initiatingClassLoader = jdk.internal.loader.ClassLoaders$AppClassLoader (id = 2)
  eventThread = "main" (javaThreadId = 1)
  stackTrace = [
    java.lang.Class.forName0(String, boolean, ClassLoader, Class) 
    java.lang.Class.forName(String, boolean, ClassLoader, Class) line: 534
    java.lang.Class.forName(String, boolean, ClassLoader) line: 513
    org.objectweb.asm.ClassWriter.getCommonSuperClass(String, String) line: 1066
    org.objectweb.asm.SymbolTable.addMergedType(int, int) line: 1286
    org.objectweb.asm.Frame.merge(SymbolTable, int, int[], int) line: 1311
    org.objectweb.asm.Frame.merge(SymbolTable, Frame, int) line: 1255
    org.objectweb.asm.MethodWriter.computeAllFrames() line: 1612
    org.objectweb.asm.MethodWriter.visitMaxs(int, int) line: 1548
    org.objectweb.asm.MethodVisitor.visitMaxs(int, int) line: 787
    org.objectweb.asm.commons.LocalVariablesSorter.visitMaxs(int, int) line: 147
    org.objectweb.asm.ClassReader.readCode(MethodVisitor, Context, int) line: 2664
    org.objectweb.asm.ClassReader.readMethod(ClassVisitor, Context, int) line: 1512
    org.objectweb.asm.ClassReader.accept(ClassVisitor, Attribute[], int) line: 745
    org.objectweb.asm.ClassReader.accept(ClassVisitor, int) line: 425
    net.adoptopenjdk.blockedexitagent.BlockedExitAgent$BlockedExitTransformer.transform(ClassLoader, String, Class, ProtectionDomain, byte[]) line: 40
    java.lang.instrument.ClassFileTransformer.transform(Module, ClassLoader, String, Class, ProtectionDomain, byte[]) line: 244
    sun.instrument.TransformerManager.transform(Module, ClassLoader, String, Class, ProtectionDomain, byte[]) line: 188
    sun.instrument.InstrumentationImpl.transform(Module, ClassLoader, String, Class, ProtectionDomain, byte[], boolean) line: 610
    java.lang.ClassLoader.defineClass1(ClassLoader, String, byte[], int, int, ProtectionDomain, String)
    java.lang.ClassLoader.defineClass(String, byte[], int, int, ProtectionDomain) line: 1027
    java.security.SecureClassLoader.defineClass(String, byte[], int, int, CodeSource) line: 150
    jdk.internal.loader.BuiltinClassLoader.defineClass(String, Resource) line: 862
    jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(String) line: 760
    jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(String, boolean) line: 681
    jdk.internal.loader.BuiltinClassLoader.loadClass(String, boolean) line: 639
    jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(String, boolean) line: 188
    java.lang.ClassLoader.loadClass(String) line: 526
    org.apache.logging.log4j.core.impl.ReusableLogEventFactory.createInstance(MutableLogEvent) line: 109
    org.apache.logging.log4j.core.impl.ReusableLogEventFactory.getOrCreateMutableLogEvent() line: 105
    org.apache.logging.log4j.core.impl.ReusableLogEventFactory.createEvent(String, Marker, String, StackTraceElement, Level, Message, List, Throwable) line: 80
    org.apache.logging.log4j.core.config.LoggerConfig.log(String, String, StackTraceElement, Marker, Level, Message, Throwable) line: 415
    org.apache.logging.log4j.core.config.AwaitCompletionReliabilityStrategy.log(Supplier, String, String, StackTraceElement, Marker, Level, Message, Throwable) line: 82
    org.apache.logging.log4j.core.Logger.log(Level, Marker, String, StackTraceElement, Message, Throwable) line: 161
    org.apache.logging.log4j.spi.AbstractLogger.tryLogMessage(String, StackTraceElement, Level, Marker, Message, Throwable) line: 2205
    org.apache.logging.log4j.spi.AbstractLogger.logMessageTrackRecursion(String, Level, Marker, Message, Throwable) line: 2159
    org.apache.logging.log4j.spi.AbstractLogger.logMessageSafely(String, Level, Marker, Message, Throwable) line: 2142
    org.apache.logging.log4j.spi.AbstractLogger.logMessage(String, Level, Marker, String, Throwable) line: 2017
    org.apache.logging.log4j.spi.AbstractLogger.logIfEnabled(String, Level, Marker, String, Throwable) line: 1983
    org.apache.logging.log4j.spi.AbstractLogger.info(String) line: 1320
    net.adoptopenjdk.loadTest.LoadTest.<init>(String[]) line: 253
    net.adoptopenjdk.loadTest.LoadTest.main(String[]) line: 105
  ]
}

jdk.JavaErrorThrow {
  startTime = 21:19:53.975 (2025-02-15)
  message = "loader 'app' attempted duplicate class definition for org.apache.logging.log4j.core.impl.MutableLogEvent. (org.apache.logging.log4j.core.impl.MutableLogEvent is in unnamed module of loader 'app')"
  thrownClass = java.lang.LinkageError (classLoader = bootstrap)
  eventThread = "main" (javaThreadId = 1)
  stackTrace = [
    java.lang.Error.<init>(String) line: 68
    java.lang.LinkageError.<init>(String) line: 55
    java.lang.ClassLoader.defineClass1(ClassLoader, String, byte[], int, int, ProtectionDomain, String)
    java.lang.ClassLoader.defineClass(String, byte[], int, int, ProtectionDomain) line: 1027
    java.security.SecureClassLoader.defineClass(String, byte[], int, int, CodeSource) line: 150
    jdk.internal.loader.BuiltinClassLoader.defineClass(String, Resource) line: 862
    jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(String) line: 760
    jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(String, boolean) line: 681
    jdk.internal.loader.BuiltinClassLoader.loadClass(String, boolean) line: 639
    jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(String, boolean) line: 188
    java.lang.ClassLoader.loadClass(String) line: 526
    org.apache.logging.log4j.core.impl.ReusableLogEventFactory.createInstance(MutableLogEvent) line: 109
    org.apache.logging.log4j.core.impl.ReusableLogEventFactory.getOrCreateMutableLogEvent() line: 105
    org.apache.logging.log4j.core.impl.ReusableLogEventFactory.createEvent(String, Marker, String, StackTraceElement, Level, Message, List, Throwable) line: 80
    org.apache.logging.log4j.core.config.LoggerConfig.log(String, String, StackTraceElement, Marker, Level, Message, Throwable) line: 415
    org.apache.logging.log4j.core.config.AwaitCompletionReliabilityStrategy.log(Supplier, String, String, StackTraceElement, Marker, Level, Message, Throwable) line: 82
    org.apache.logging.log4j.core.Logger.log(Level, Marker, String, StackTraceElement, Message, Throwable) line: 161
    org.apache.logging.log4j.spi.AbstractLogger.tryLogMessage(String, StackTraceElement, Level, Marker, Message, Throwable) line: 2205
    org.apache.logging.log4j.spi.AbstractLogger.logMessageTrackRecursion(String, Level, Marker, Message, Throwable) line: 2159
    org.apache.logging.log4j.spi.AbstractLogger.logMessageSafely(String, Level, Marker, Message, Throwable) line: 2142
    org.apache.logging.log4j.spi.AbstractLogger.logMessage(String, Level, Marker, String, Throwable) line: 2017
    org.apache.logging.log4j.spi.AbstractLogger.logIfEnabled(String, Level, Marker, String, Throwable) line: 1983
    org.apache.logging.log4j.spi.AbstractLogger.info(String) line: 1320
    net.adoptopenjdk.loadTest.LoadTest.<init>(String[]) line: 253
    net.adoptopenjdk.loadTest.LoadTest.main(String[]) line: 105
  ]
}

I suspect the impact of the following commit on January 30.
adoptium/STF#143
net.adoptopenjdk.blockedexitagent.BlockedExitAgent rewrite MutableLogEvent class with org.objectweb.asm package after this change.

@sophia-guo
Copy link
Contributor

FYI @theresa-m

@adamfarley
Copy link
Contributor

I raised a duplicate for this issue here: adoptium/STF#145

Will close that issue now.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Status: Todo
Development

No branches or pull requests

3 participants