You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
23:55:01.029 | ERROR | JcToUtExecutionConverter.convert((id:19)com.google.common.collect.TreeMultiset$AvlNode#deleteMe()) failed
java.lang.IllegalStateException: Invalid UTestCyclicReferenceDescriptor: UTestCyclicReferenceDescriptor(refId=903229461, type=org.jacodb.impl.types.JcClassTypeImpl@105962b3)
at org.utbot.contest.usvm.converter.JcToUtModelConverter.convertIgnoringOriginExprForThisModel(JcToUtModelConverter.kt:152) ~[main/:?]
at org.utbot.contest.usvm.converter.JcToUtModelConverter.convert(JcToUtModelConverter.kt:72) ~[main/:?]
at org.utbot.contest.usvm.converter.JcToUtModelConverter.convertIgnoringOriginExprForThisModel(JcToUtModelConverter.kt:106) ~[main/:?]
at org.utbot.contest.usvm.converter.JcToUtModelConverter.convert(JcToUtModelConverter.kt:72) ~[main/:?]
at org.utbot.contest.usvm.converter.JcToUtModelConverter.convertIgnoringOriginExprForThisModel(JcToUtModelConverter.kt:106) ~[main/:?]
at org.utbot.contest.usvm.converter.JcToUtModelConverter.convert(JcToUtModelConverter.kt:72) ~[main/:?]
at org.utbot.contest.usvm.converter.JcToUtExecutionConverter.convertState(JcToUtExecutionConverter.kt:224) ~[main/:?]
at org.utbot.contest.usvm.converter.JcToUtExecutionConverter.convert(JcToUtExecutionConverter.kt:73) ~[main/:?]
at org.utbot.contest.usvm.ContestUsvmKt$runUsvmGeneration$1$9$5.invoke(ContestUsvm.kt:190) [main/:?]
at org.utbot.contest.usvm.ContestUsvmKt$runUsvmGeneration$1$9$5.invoke(ContestUsvm.kt:168) [main/:?]
at org.utbot.contest.usvm.ContestUsvmKt$analyzeAsync$1$1$1.addState(ContestUsvm.kt:275) [main/:?]
at org.utbot.contest.usvm.ContestUsvmKt$analyzeAsync$1$1$1.addState(ContestUsvm.kt:269) [main/:?]
at org.usvm.statistics.collectors.CoveredNewStatesCollector.onStateTerminated(CoveredNewStatesCollector.kt:33) [usvm-core-local24-22-29.jar:?]
at org.usvm.statistics.CompositeUMachineObserver.onStateTerminated(UMachineObserver.kt:48) [usvm-core-local24-22-29.jar:?]
at org.usvm.UMachine.run(Machine.kt:66) [usvm-core-local24-22-29.jar:?]
at org.usvm.machine.JcMachine.analyze(JcMachine.kt:195) [usvm-jvm-local24-22-29.jar:?]
at org.utbot.contest.usvm.ContestUsvmKt$analyzeAsync$1.invoke(ContestUsvm.kt:267) [main/:?]
at org.utbot.contest.usvm.ContestUsvmKt$analyzeAsync$1.invoke(ContestUsvm.kt:265) [main/:?]
at org.utbot.common.ThreadBasedExecutor$invokeWithTimeout$1.invoke(ThreadUtil.kt:75) [utbot-core-2023.11-SNAPSHOT.jar:?]
at org.utbot.common.ThreadBasedExecutor$ensureThreadIsAlive$1.invoke(ThreadUtil.kt:129) [utbot-core-2023.11-SNAPSHOT.jar:?]
at org.utbot.common.ThreadBasedExecutor$ensureThreadIsAlive$1.invoke(ThreadUtil.kt:125) [utbot-core-2023.11-SNAPSHOT.jar:?]
at kotlin.concurrent.ThreadsKt$thread$thread$1.run(Thread.kt:30) [kotlin-stdlib-1.8.22.jar:1.8.22-release-407(1.8.22)]
The issue is that in the instrumentation output there is UTestCyclicReferenceDescriptor with refId=903229461 in such place that no UTestObjectDescriptor containing it has refId=903229461.
Note, that is generally impossible in current abstractions to simultaneously always:
Have no cycles of UTestValueDescriptor
Only have UTestCyclicReferenceDescriptor in such places where there's UTestObjectDescriptor containing it and having same refId (here "containing" allows for indirect containing with intermediate layers, i.e. transitive closure of direct containment relationship)
Never use multiple UTestObjectDescriptors to describe same object in same state (initialState or finalState)
Consider the following example, where we want to build descriptor for result:
val x =X()
val y =Y()
y.x = x
x.y = y
val result =Result(x=x, y=y)
Here descriptors for result.y.x.y should be UTestCyclicReferenceDescriptor (to satisfy assumption 1) and descriptor for result.x.y should be UTestObjectDescriptor (to satisfy assumption 2), but they should be the same descriptor, i.e. descriptor in y field of descriptor for x, where x can only be described by only one instance of UTestObjectDescriptor (to satisfy assumption 3).
Further discussion is advised.
The text was updated successfully, but these errors were encountered:
Add
com.google.common.collect.TreeMultiset$AvlNode
toUTBotJava/utbot-junit-contest/src/main/resources/classes/guava/list
.Run
ContestEstimator
with following settings:There's following error in logs:
The issue is that in the instrumentation output there is
UTestCyclicReferenceDescriptor
withrefId=903229461
in such place that noUTestObjectDescriptor
containing it hasrefId=903229461
.Note, that is generally impossible in current abstractions to simultaneously always:
UTestValueDescriptor
UTestCyclicReferenceDescriptor
in such places where there'sUTestObjectDescriptor
containing it and having samerefId
(here "containing" allows for indirect containing with intermediate layers, i.e. transitive closure of direct containment relationship)UTestObjectDescriptor
s to describe same object in same state (initialState
orfinalState
)Consider the following example, where we want to build descriptor for
result
:Here descriptors for
result.y.x.y
should beUTestCyclicReferenceDescriptor
(to satisfy assumption 1) and descriptor forresult.x.y
should beUTestObjectDescriptor
(to satisfy assumption 2), but they should be the same descriptor, i.e. descriptor iny
field of descriptor forx
, wherex
can only be described by only one instance ofUTestObjectDescriptor
(to satisfy assumption 3).Further discussion is advised.
The text was updated successfully, but these errors were encountered: