kotlinx-lincheck
kotlinx-lincheck copied to clipboard
Framework for testing concurrent data structures
Hi! Running a Lincheck test works normally locally. However, it fails in CI with: ``` java.lang.ExceptionInInitializerError at org.jetbrains.kotlinx.lincheck.LinChecker.checkImpl$lincheck(LinChecker.kt:206) at org.jetbrains.kotlinx.lincheck.LinChecker.check(LinChecker.kt:44) at org.jetbrains.kotlinx.lincheck.LinChecker$Companion.check(LinChecker.kt:174) at org.jetbrains.kotlinx.lincheck.LinCheckerKt.check(LinChecker.kt:189) at org.jetbrains.kotlinx.lincheck.LinCheckerKt.check(LinChecker.kt:198) at opensavvy.cache.blocking.MemoryCacheLinearizationTest.stressTest(MemoryCacheLinearizationTest.kt:76) at java.base/java.lang.reflect.Method.invoke(Method.java:568)...
When running a test which uses Slf4J's `LoggerFactory.getLogger`, the test fails (in both stress-testing and model-testing) with: ``` java.lang.reflect.InvocationTargetException Caused by: javax.xml.parsers.FactoryConfigurationError: Provider com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl could not be instantiated: java.lang.ClassCastException: com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl...
Closes #308 This PR fixes the performance problem accidentally introduced in #296 , that manifested on our Java 11 CI builds. The root cause of the problem and the solution...
As the VarHandle doesn't receive a string name of a variable to read/write it, Lincheck currently can't provide its name. The goal is to fix it.
As the AtomicReference doesn't receive a string name of a variable to read/write it, Lincheck currently can't provide its name. The goal is to fix it.
When I attempted to upgrade from 2.29 to 2.30 and the caffeine tests [failed](https://github.com/ben-manes/caffeine/actions/runs/8768811959/job/24063720817). I then reduced the test to use `ConcurrentHashMap` directly which produced different errors, but may have...
See #121 for an example of Lincheck failing in the case of multiple suspension points per operation
Always allow extra suspensions and do not show "SUSPENDED" in the result when an operation completes
Let's deprecate the `allowExtraSuspension` parameter