JetBrains / lincheck

Framework for testing concurrent data structures
Mozilla Public License 2.0
576 stars 33 forks source link

Reporting lincheck bug #235

Closed Numero7 closed 8 months ago

Numero7 commented 1 year ago

Running lincheck tests produces the following output, including the message "Wow! You've caught a bug in Lincheck. We kindly ask to provide an issue here: https://github.com/JetBrains/lincheck/issues, attaching a stack trace printed below and the code that causes the error. "

I cannot share the code.

java.lang.IllegalStateException: Non-determinism found. Probably caused by non-deterministic code (WeakHashMap, Object.hashCode, etc).
== Reporting the first execution without execution trace ==
Wow! You've caught a bug in Lincheck.
We kindly ask to provide an issue here: https://github.com/JetBrains/lincheck/issues,
attaching a stack trace printed below and the code that causes the error.

Exception stacktrace:
java.lang.IllegalAccessError: failed to access class java.util.regex.Pattern$BmpCharPredicate from class org.jetbrains.kotlinx.lincheck.tran$f*rmed.java.util.regex.CharPredicates (java.util.regex.Pattern$BmpCharPredicate is in module java.base of loader 'bootstrap'; org.jetbrains.kotlinx.lincheck.tran$f*rmed.java.util.regex.CharPredicates is in unnamed module of loader org.jetbrains.kotlinx.lincheck.TransformationClassLoader @61c9c3fd)
    at org.jetbrains.kotlinx.lincheck.tran$f*rmed.java.util.regex.CharPredicates.ASCII_DIGIT(CharPredicates.java:415)
    at org.jetbrains.kotlinx.lincheck.tran$f*rmed.java.util.regex.Pattern.escape(Pattern.java:2529)
    at org.jetbrains.kotlinx.lincheck.tran$f*rmed.java.util.regex.Pattern.atom(Pattern.java:2303)
    at org.jetbrains.kotlinx.lincheck.tran$f*rmed.java.util.regex.Pattern.sequence(Pattern.java:2176)
    at org.jetbrains.kotlinx.lincheck.tran$f*rmed.java.util.regex.Pattern.expr(Pattern.java:2086)
    at org.jetbrains.kotlinx.lincheck.tran$f*rmed.java.util.regex.Pattern.group0(Pattern.java:3069)
    at org.jetbrains.kotlinx.lincheck.tran$f*rmed.java.util.regex.Pattern.sequence(Pattern.java:2141)
    at org.jetbrains.kotlinx.lincheck.tran$f*rmed.java.util.regex.Pattern.expr(Pattern.java:2086)
    at org.jetbrains.kotlinx.lincheck.tran$f*rmed.java.util.regex.Pattern.compile(Pattern.java:1798)
    at org.jetbrains.kotlinx.lincheck.tran$f*rmed.java.util.regex.Pattern.<init>(Pattern.java:1445)
    at org.jetbrains.kotlinx.lincheck.tran$f*rmed.java.util.regex.Pattern.compile(Pattern.java:1084)
    at com.prosysopc.ua.stack.builtintypes.NodeId.<clinit>(NodeId.java:80)
    at com.prosysopc.ua.stack.builtintypes.ExpandedNodeId.<clinit>(ExpandedNodeId.java:39)
    at com.prosysopc.ua.types.opcua.IdsCodegenUtils.standardNumericExpandedNodeIdWithUri(IdsCodegenUtils.java:24)
    at com.prosysopc.ua.types.opcua.ObjectIdsInit.initReadAtTimeDetails_DefaultBinary(ObjectIdsInit.java:33)
    at com.prosysopc.ua.types.opcua.ObjectIds.<clinit>(ObjectIds.java:17)
    at com.prosysopc.ua.stack.core.ChannelSecurityToken.<clinit>(ChannelSecurityToken.java:40)
    at com.prosysopc.ua.stack.transport.tcp.nio.SendAsymmSecureMessageTest.getMessageToWrite(SendAsymmSecureMessageTest.kt:33)
    at com.prosysopc.ua.stack.transport.tcp.nio.SendAsymmSecureMessageTest.renewToken(SendAsymmSecureMessageTest.kt:54)
    at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
    at java.base/java.lang.reflect.Method.invoke(Method.java:578)
    at org.jetbrains.kotlinx.lincheck.UtilsKt.executeActor(Utils.kt:46)
    at org.jetbrains.kotlinx.lincheck.UtilsKt.executeActor(Utils.kt:32)
    at org.jetbrains.kotlinx.lincheck.runner.ParallelThreadsRunner$InitTestThreadExecution.run(ParallelThreadsRunner.kt:317)
    at org.jetbrains.kotlinx.lincheck.runner.FixedActiveThreadsExecutor.testThreadRunnable$lambda-8(FixedActiveThreadsExecutor.kt:151)
    at java.base/java.lang.Thread.run(Thread.java:1589)

== Reporting the second execution ==
= Invalid execution results =
| ------------------------------------------------------------------------------------------- |
|                   Thread 1                   |                   Thread 2                   |
| ------------------------------------------------------------------------------------------- |
| renewToken(): ExceptionInInitializerError #1 |                                              |
| renewToken(): NoClassDefFoundError #2        |                                              |
| renewToken(): NoClassDefFoundError #3        |                                              |
| renewToken(): NoClassDefFoundError #4        |                                              |
| renewToken(): NoClassDefFoundError #5        |                                              |
| ------------------------------------------------------------------------------------------- |
| renewToken(): NoClassDefFoundError #6 [0,5]  | renewToken(): NoClassDefFoundError #11       |
| renewToken(): NoClassDefFoundError #7 [1,5]  | renewToken(): NoClassDefFoundError #12 [0,1] |
| renewToken(): NoClassDefFoundError #8 [2,5]  | renewToken(): NoClassDefFoundError #13 [0,2] |
| renewToken(): NoClassDefFoundError #9 [3,5]  | renewToken(): NoClassDefFoundError #14 [0,3] |
| renewToken(): NoClassDefFoundError #10 [4,5] | renewToken(): NoClassDefFoundError #15 [0,4] |
| ------------------------------------------------------------------------------------------- |
| renewToken(): NoClassDefFoundError #16       |                                              |
| renewToken(): NoClassDefFoundError #17       |                                              |
| renewToken(): NoClassDefFoundError #18       |                                              |
| renewToken(): NoClassDefFoundError #19       |                                              |
| renewToken(): NoClassDefFoundError #20       |                                              |
| ------------------------------------------------------------------------------------------- |

---
All operations above the horizontal line | ----- | happen before those below the line
---
Values in "[..]" brackets indicate the number of completed operations
in each of the parallel threads seen at the beginning of the current operation
---
The number next to an exception name helps you find its stack trace provided after the interleaving section
---

The following interleaving leads to the error:
| ------------------------------------------------------- |
|                   Thread 1                   | Thread 2 |
| ------------------------------------------------------- |
| renewToken(): ExceptionInInitializerError #1 |          |
| renewToken(): NoClassDefFoundError #2        |          |
| renewToken(): NoClassDefFoundError #3        |          |
| renewToken(): NoClassDefFoundError #4        |          |
| renewToken(): NoClassDefFoundError #5        |          |
| renewToken(): NoClassDefFoundError #6        |          |
| renewToken(): NoClassDefFoundError #7        |          |
| renewToken(): NoClassDefFoundError #8        |          |
| renewToken(): NoClassDefFoundError #9        |          |
| renewToken(): NoClassDefFoundError #10       |          |
| renewToken(): NoClassDefFoundError #16       |          |
| renewToken(): NoClassDefFoundError #17       |          |
| renewToken(): NoClassDefFoundError #18       |          |
| renewToken(): NoClassDefFoundError #19       |          |
| renewToken(): NoClassDefFoundError #20       |          |
| ------------------------------------------------------- |

Exception stack traces:
#1: java.lang.ExceptionInInitializerError: null
    at com.prosysopc.ua.stack.transport.tcp.nio.SendAsymmSecureMessageTest.getMessageToWrite(SendAsymmSecureMessageTest.kt:33)
    at com.prosysopc.ua.stack.transport.tcp.nio.SendAsymmSecureMessageTest.renewToken(SendAsymmSecureMessageTest.kt:54)
    at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
    at java.base/java.lang.reflect.Method.invoke(Method.java:578)

#2: java.lang.NoClassDefFoundError: Could not initialize class com.prosysopc.ua.stack.core.ChannelSecurityToken
    at com.prosysopc.ua.stack.transport.tcp.nio.SendAsymmSecureMessageTest.getMessageToWrite(SendAsymmSecureMessageTest.kt:33)
    at com.prosysopc.ua.stack.transport.tcp.nio.SendAsymmSecureMessageTest.renewToken(SendAsymmSecureMessageTest.kt:54)
    at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
    at java.base/java.lang.reflect.Method.invoke(Method.java:578)

#3: java.lang.NoClassDefFoundError: Could not initialize class com.prosysopc.ua.stack.core.ChannelSecurityToken
    at com.prosysopc.ua.stack.transport.tcp.nio.SendAsymmSecureMessageTest.getMessageToWrite(SendAsymmSecureMessageTest.kt:33)
    at com.prosysopc.ua.stack.transport.tcp.nio.SendAsymmSecureMessageTest.renewToken(SendAsymmSecureMessageTest.kt:54)
    at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
    at java.base/java.lang.reflect.Method.invoke(Method.java:578)

#4: java.lang.NoClassDefFoundError: Could not initialize class com.prosysopc.ua.stack.core.ChannelSecurityToken
    at com.prosysopc.ua.stack.transport.tcp.nio.SendAsymmSecureMessageTest.getMessageToWrite(SendAsymmSecureMessageTest.kt:33)
    at com.prosysopc.ua.stack.transport.tcp.nio.SendAsymmSecureMessageTest.renewToken(SendAsymmSecureMessageTest.kt:54)
    at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
    at java.base/java.lang.reflect.Method.invoke(Method.java:578)

#5: java.lang.NoClassDefFoundError: Could not initialize class com.prosysopc.ua.stack.core.ChannelSecurityToken
    at com.prosysopc.ua.stack.transport.tcp.nio.SendAsymmSecureMessageTest.getMessageToWrite(SendAsymmSecureMessageTest.kt:33)
    at com.prosysopc.ua.stack.transport.tcp.nio.SendAsymmSecureMessageTest.renewToken(SendAsymmSecureMessageTest.kt:54)
    at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
    at java.base/java.lang.reflect.Method.invoke(Method.java:578)

#6: java.lang.NoClassDefFoundError: Could not initialize class com.prosysopc.ua.stack.core.ChannelSecurityToken
    at com.prosysopc.ua.stack.transport.tcp.nio.SendAsymmSecureMessageTest.getMessageToWrite(SendAsymmSecureMessageTest.kt:33)
    at com.prosysopc.ua.stack.transport.tcp.nio.SendAsymmSecureMessageTest.renewToken(SendAsymmSecureMessageTest.kt:54)

#7: java.lang.NoClassDefFoundError: Could not initialize class com.prosysopc.ua.stack.core.ChannelSecurityToken
    at com.prosysopc.ua.stack.transport.tcp.nio.SendAsymmSecureMessageTest.getMessageToWrite(SendAsymmSecureMessageTest.kt:33)
    at com.prosysopc.ua.stack.transport.tcp.nio.SendAsymmSecureMessageTest.renewToken(SendAsymmSecureMessageTest.kt:54)

#8: java.lang.NoClassDefFoundError: Could not initialize class com.prosysopc.ua.stack.core.ChannelSecurityToken
    at com.prosysopc.ua.stack.transport.tcp.nio.SendAsymmSecureMessageTest.getMessageToWrite(SendAsymmSecureMessageTest.kt:33)
    at com.prosysopc.ua.stack.transport.tcp.nio.SendAsymmSecureMessageTest.renewToken(SendAsymmSecureMessageTest.kt:54)

#9: java.lang.NoClassDefFoundError: Could not initialize class com.prosysopc.ua.stack.core.ChannelSecurityToken
    at com.prosysopc.ua.stack.transport.tcp.nio.SendAsymmSecureMessageTest.getMessageToWrite(SendAsymmSecureMessageTest.kt:33)
    at com.prosysopc.ua.stack.transport.tcp.nio.SendAsymmSecureMessageTest.renewToken(SendAsymmSecureMessageTest.kt:54)

#10: java.lang.NoClassDefFoundError: Could not initialize class com.prosysopc.ua.stack.core.ChannelSecurityToken
    at com.prosysopc.ua.stack.transport.tcp.nio.SendAsymmSecureMessageTest.getMessageToWrite(SendAsymmSecureMessageTest.kt:33)
    at com.prosysopc.ua.stack.transport.tcp.nio.SendAsymmSecureMessageTest.renewToken(SendAsymmSecureMessageTest.kt:54)

#11: java.lang.NoClassDefFoundError: Could not initialize class com.prosysopc.ua.stack.core.ChannelSecurityToken
    at com.prosysopc.ua.stack.transport.tcp.nio.SendAsymmSecureMessageTest.getMessageToWrite(SendAsymmSecureMessageTest.kt:33)
    at com.prosysopc.ua.stack.transport.tcp.nio.SendAsymmSecureMessageTest.renewToken(SendAsymmSecureMessageTest.kt:54)

#12: java.lang.NoClassDefFoundError: Could not initialize class com.prosysopc.ua.stack.core.ChannelSecurityToken
    at com.prosysopc.ua.stack.transport.tcp.nio.SendAsymmSecureMessageTest.getMessageToWrite(SendAsymmSecureMessageTest.kt:33)
    at com.prosysopc.ua.stack.transport.tcp.nio.SendAsymmSecureMessageTest.renewToken(SendAsymmSecureMessageTest.kt:54)

#13: java.lang.NoClassDefFoundError: Could not initialize class com.prosysopc.ua.stack.core.ChannelSecurityToken
    at com.prosysopc.ua.stack.transport.tcp.nio.SendAsymmSecureMessageTest.getMessageToWrite(SendAsymmSecureMessageTest.kt:33)
    at com.prosysopc.ua.stack.transport.tcp.nio.SendAsymmSecureMessageTest.renewToken(SendAsymmSecureMessageTest.kt:54)

#14: java.lang.NoClassDefFoundError: Could not initialize class com.prosysopc.ua.stack.core.ChannelSecurityToken
    at com.prosysopc.ua.stack.transport.tcp.nio.SendAsymmSecureMessageTest.getMessageToWrite(SendAsymmSecureMessageTest.kt:33)
    at com.prosysopc.ua.stack.transport.tcp.nio.SendAsymmSecureMessageTest.renewToken(SendAsymmSecureMessageTest.kt:54)

#15: java.lang.NoClassDefFoundError: Could not initialize class com.prosysopc.ua.stack.core.ChannelSecurityToken
    at com.prosysopc.ua.stack.transport.tcp.nio.SendAsymmSecureMessageTest.getMessageToWrite(SendAsymmSecureMessageTest.kt:33)
    at com.prosysopc.ua.stack.transport.tcp.nio.SendAsymmSecureMessageTest.renewToken(SendAsymmSecureMessageTest.kt:54)

#16: java.lang.NoClassDefFoundError: Could not initialize class com.prosysopc.ua.stack.core.ChannelSecurityToken
    at com.prosysopc.ua.stack.transport.tcp.nio.SendAsymmSecureMessageTest.getMessageToWrite(SendAsymmSecureMessageTest.kt:33)
    at com.prosysopc.ua.stack.transport.tcp.nio.SendAsymmSecureMessageTest.renewToken(SendAsymmSecureMessageTest.kt:54)
    at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
    at java.base/java.lang.reflect.Method.invoke(Method.java:578)

#17: java.lang.NoClassDefFoundError: Could not initialize class com.prosysopc.ua.stack.core.ChannelSecurityToken
    at com.prosysopc.ua.stack.transport.tcp.nio.SendAsymmSecureMessageTest.getMessageToWrite(SendAsymmSecureMessageTest.kt:33)
    at com.prosysopc.ua.stack.transport.tcp.nio.SendAsymmSecureMessageTest.renewToken(SendAsymmSecureMessageTest.kt:54)
    at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
    at java.base/java.lang.reflect.Method.invoke(Method.java:578)

#18: java.lang.NoClassDefFoundError: Could not initialize class com.prosysopc.ua.stack.core.ChannelSecurityToken
    at com.prosysopc.ua.stack.transport.tcp.nio.SendAsymmSecureMessageTest.getMessageToWrite(SendAsymmSecureMessageTest.kt:33)
    at com.prosysopc.ua.stack.transport.tcp.nio.SendAsymmSecureMessageTest.renewToken(SendAsymmSecureMessageTest.kt:54)
    at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
    at java.base/java.lang.reflect.Method.invoke(Method.java:578)

#19: java.lang.NoClassDefFoundError: Could not initialize class com.prosysopc.ua.stack.core.ChannelSecurityToken
    at com.prosysopc.ua.stack.transport.tcp.nio.SendAsymmSecureMessageTest.getMessageToWrite(SendAsymmSecureMessageTest.kt:33)
    at com.prosysopc.ua.stack.transport.tcp.nio.SendAsymmSecureMessageTest.renewToken(SendAsymmSecureMessageTest.kt:54)
    at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
    at java.base/java.lang.reflect.Method.invoke(Method.java:578)

#20: java.lang.NoClassDefFoundError: Could not initialize class com.prosysopc.ua.stack.core.ChannelSecurityToken
    at com.prosysopc.ua.stack.transport.tcp.nio.SendAsymmSecureMessageTest.getMessageToWrite(SendAsymmSecureMessageTest.kt:33)
    at com.prosysopc.ua.stack.transport.tcp.nio.SendAsymmSecureMessageTest.renewToken(SendAsymmSecureMessageTest.kt:54)
    at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
    at java.base/java.lang.reflect.Method.invoke(Method.java:578)

Detailed trace:
| ------------------------------------------------------- |
|                   Thread 1                   | Thread 2 |
| ------------------------------------------------------- |
| renewToken(): ExceptionInInitializerError #1 |          |
| renewToken(): NoClassDefFoundError #2        |          |
| renewToken(): NoClassDefFoundError #3        |          |
| renewToken(): NoClassDefFoundError #4        |          |
| renewToken(): NoClassDefFoundError #5        |          |
| renewToken(): NoClassDefFoundError #6        |          |
| renewToken(): NoClassDefFoundError #7        |          |
| renewToken(): NoClassDefFoundError #8        |          |
| renewToken(): NoClassDefFoundError #9        |          |
| renewToken(): NoClassDefFoundError #10       |          |
| renewToken(): NoClassDefFoundError #16       |          |
| renewToken(): NoClassDefFoundError #17       |          |
| renewToken(): NoClassDefFoundError #18       |          |
| renewToken(): NoClassDefFoundError #19       |          |
| renewToken(): NoClassDefFoundError #20       |          |
| ------------------------------------------------------- |

    at org.jetbrains.kotlinx.lincheck.strategy.managed.ManagedStrategy.collectTrace(ManagedStrategy.kt:216)
    at org.jetbrains.kotlinx.lincheck.strategy.managed.ManagedStrategy.checkResult(ManagedStrategy.kt:178)
    at org.jetbrains.kotlinx.lincheck.strategy.managed.modelchecking.ModelCheckingStrategy.runImpl(ModelCheckingStrategy.kt:67)
    at org.jetbrains.kotlinx.lincheck.strategy.managed.ManagedStrategy.run(ManagedStrategy.kt:124)
    at org.jetbrains.kotlinx.lincheck.LinChecker.run(LinChecker.kt:121)
    at org.jetbrains.kotlinx.lincheck.LinChecker.checkImpl(LinChecker.kt:75)
    at org.jetbrains.kotlinx.lincheck.LinChecker.checkImpl$lincheck(LinChecker.kt:47)
    at org.jetbrains.kotlinx.lincheck.LinChecker.check(LinChecker.kt:37)
    at org.jetbrains.kotlinx.lincheck.LinChecker$Companion.check(LinChecker.kt:144)
    at org.jetbrains.kotlinx.lincheck.LinCheckerKt.check(LinChecker.kt:159)
    at org.jetbrains.kotlinx.lincheck.LinCheckerKt.check(LinChecker.kt:168)
    at com.prosysopc.ua.stack.transport.tcp.nio.SendAsymmSecureMessageTest.mcTest(SendAsymmSecureMessageTest.kt:65)
    at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
    at java.base/java.lang.reflect.Method.invoke(Method.java:578)
    at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
    at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)
    at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
    at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
    at org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100)
    at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63)
    at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)
    at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)
    at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
    at org.junit.runners.ParentRunner.run(ParentRunner.java:413)
    at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
    at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:69)
    at com.intellij.rt.junit.IdeaTestRunner$Repeater$1.execute(IdeaTestRunner.java:38)
    at com.intellij.rt.execution.junit.TestsRepeater.repeat(TestsRepeater.java:11)
    at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:35)
    at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:235)
    at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:54)

Process finished with exit code 255
ndkoval commented 12 months ago

Hi @Numero7! Please try adding the required JVM properties and check whether it helps.

ndkoval commented 8 months ago

I'm closing the issue, please re-open it if it still reproduces