Skip to content

Concrete execution exceptions for Collection<Collection<Double>> #1020

Description

@alisevych

Description

NoSuchElementException and NullPointerException are thrown from concrete executions by symbolic engine of a method with Collection<Collection> as input.

To Reproduce

  1. Install one of the latest plugin build from main on IntelliJ Idea 2022.1.4
  2. Symbolic execution is on
  3. Add the following method to a Java class:
publicstaticbooleanisDiagonal(Collection<Collection<Double>> matrix) {
intcols = matrix.size();
if (cols <= 1) {
returnfalse;
}
inti = 0;
for (Collection<Double> col : matrix) {
if (col.size() != cols) {
returnfalse;
}
intj = 0;
for (Doublevalue : col) {
if (i == j && value == 0.0) returnfalse;
if (i != j && value != 0.0) returnfalse;
j++;
}
i++;
}
returntrue;
}
  1. Generate tests with UTBot symbolic execution

Expected behavior

Tests are supposed to be generated.

Actual behavior

An error test is generated with information about errors in the concrete executor.

Exceptions in concrete execution logs
18:18:25.437ERROR| java.util.NoSuchElementExceptionatjava.base/java.util.Vector$Itr.next(Vector.java:1280)
atjava.base/java.util.AbstractList.hashCode(AbstractList.java:566)
atjava.base/java.util.Vector.hashCode(Vector.java:1106)
atjava.base/java.util.HashMap.hash(HashMap.java:340)
atjava.base/java.util.HashMap.put(HashMap.java:608)
atjava.base/java.util.HashSet.add(HashSet.java:220)
atjava.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(NativeMethod)
atjava.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
atjava.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
atjava.base/java.lang.reflect.Method.invoke(Method.java:566)
atorg.utbot.common.KClassUtilKt.invokeCatching(KClassUtil.kt:10)
atorg.utbot.framework.concrete.MockValueConstructor$call$1.invoke(MockValueConstructor.kt:478)
atorg.utbot.framework.concrete.MockValueConstructor$call$1.invoke(MockValueConstructor.kt:477)
atorg.utbot.instrumentation.process.SecurityKt$runSandbox$1$1.invoke(Security.kt:38)
atorg.utbot.instrumentation.process.SecurityKt$sandbox$1.invoke(Security.kt:61)
atorg.utbot.instrumentation.process.SecurityKt$sandbox$2.invoke(Security.kt:77)
atorg.utbot.instrumentation.process.SecurityKt$sandbox$3.invoke(Security.kt:82)
atorg.utbot.instrumentation.process.SecurityKt$sandbox$4.run(Security.kt:88)
atjava.base/java.security.AccessController.doPrivileged(NativeMethod)
atorg.utbot.instrumentation.process.SecurityKt.sandbox(Security.kt:88)
atorg.utbot.instrumentation.process.SecurityKt.sandbox(Security.kt:82)
atorg.utbot.instrumentation.process.SecurityKt.sandbox(Security.kt:77)
atorg.utbot.instrumentation.process.SecurityKt.sandbox(Security.kt:61)
atorg.utbot.instrumentation.process.SecurityKt.runSandbox(Security.kt:38)
atorg.utbot.framework.concrete.MockValueConstructor.call(MockValueConstructor.kt:477)
atorg.utbot.framework.concrete.MockValueConstructor.updateWithExecutableCallModel(MockValueConstructor.kt:420)
atorg.utbot.framework.concrete.MockValueConstructor.constructFromAssembleModel(MockValueConstructor.kt:370)
atorg.utbot.framework.concrete.MockValueConstructor.construct(MockValueConstructor.kt:132)
atorg.utbot.framework.concrete.MockValueConstructor.constructMethodParameters(MockValueConstructor.kt:107)
atorg.utbot.framework.concrete.UtExecutionInstrumentation.invoke(UtExecutionInstrumentation.kt:156)
atorg.utbot.framework.concrete.UtExecutionInstrumentation.invoke(UtExecutionInstrumentation.kt:118)
atorg.utbot.instrumentation.process.ChildProcessKt$setup$2.invoke(ChildProcess.kt:211)
atorg.utbot.instrumentation.process.ChildProcessKt$setup$2.invoke(ChildProcess.kt:208)
atorg.utbot.instrumentation.process.ChildProcessKt$measureExecutionForTermination$2$1$1.invoke(ChildProcess.kt:190)
atorg.utbot.instrumentation.process.ChildProcessKt$measureExecutionForTermination$1.invokeSuspend(ChildProcess.kt:174)
atkotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
atkotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
atkotlinx.coroutines.EventLoopImplBase.processNextEvent(EventLoop.common.kt:284)
atkotlinx.coroutines.BlockingCoroutine.joinBlocking(Builders.kt:85)
atkotlinx.coroutines.BuildersKt__BuildersKt.runBlocking(Builders.kt:59)
atkotlinx.coroutines.BuildersKt.runBlocking(UnknownSource)
atkotlinx.coroutines.BuildersKt__BuildersKt.runBlocking$default(Builders.kt:38)
atkotlinx.coroutines.BuildersKt.runBlocking$default(UnknownSource)
atorg.utbot.instrumentation.process.ChildProcessKt.measureExecutionForTermination(ChildProcess.kt:171)
atorg.utbot.instrumentation.process.ChildProcessKt.access$measureExecutionForTermination(ChildProcess.kt:1)
atorg.utbot.instrumentation.process.ChildProcessKt$measureExecutionForTermination$2$1.invokeSuspend(ChildProcess.kt:188)
atkotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
atkotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
atkotlinx.coroutines.EventLoopImplBase.processNextEvent(EventLoop.common.kt:284)
atkotlinx.coroutines.BlockingCoroutine.joinBlocking(Builders.kt:85)
atkotlinx.coroutines.BuildersKt__BuildersKt.runBlocking(Builders.kt:59)
atkotlinx.coroutines.BuildersKt.runBlocking(UnknownSource)
atkotlinx.coroutines.BuildersKt__BuildersKt.runBlocking$default(Builders.kt:38)
atkotlinx.coroutines.BuildersKt.runBlocking$default(UnknownSource)
atorg.utbot.instrumentation.process.ChildProcessKt$measureExecutionForTermination$2.invoke(ChildProcess.kt:187)
atcom.jetbrains.rd.framework.IRdEndpoint$set$1.invoke(TaskInterfaces.kt:182)
atcom.jetbrains.rd.framework.IRdEndpoint$set$1.invoke(TaskInterfaces.kt:182)
atcom.jetbrains.rd.framework.impl.RdCall.onWireReceived(RdTask.kt:360)
atcom.jetbrains.rd.framework.MessageBroker$invoke$2$2.invoke(MessageBroker.kt:57)
atcom.jetbrains.rd.framework.MessageBroker$invoke$2$2.invoke(MessageBroker.kt:56)
atcom.jetbrains.rd.framework.impl.ProtocolContexts.readMessageContextAndInvoke(ProtocolContexts.kt:148)
atcom.jetbrains.rd.framework.MessageBroker$invoke$2.invoke(MessageBroker.kt:56)
atcom.jetbrains.rd.framework.MessageBroker$invoke$2.invoke(MessageBroker.kt:54)
atcom.jetbrains.rd.util.threading.SingleThreadSchedulerBase.queue$lambda-3(SingleThreadScheduler.kt:41)
atjava.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
atjava.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
atjava.base/java.lang.Thread.run(Thread.java:829)
WARNING: Illegalreflectiveaccessbyorg.utbot.framework.concrete.UtModelConstructor (file:/C:/Users/lWX1182794/AppData/Roaming/JetBrains/IntelliJIdea2022.1/plugins/utbot-intellij/lib/utbot-framework-2022.9.368.jar) tofieldjava.util.Vector.elementDataWARNING: Illegalreflectiveaccessbyorg.utbot.framework.concrete.UtModelConstructor (file:/C:/Users/lWX1182794/AppData/Roaming/JetBrains/IntelliJIdea2022.1/plugins/utbot-intellij/lib/utbot-framework-2022.9.368.jar) tofieldjava.util.Vector.elementCountWARNING: Illegalreflectiveaccessbyorg.utbot.framework.concrete.UtModelConstructor (file:/C:/Users/lWX1182794/AppData/Roaming/JetBrains/IntelliJIdea2022.1/plugins/utbot-intellij/lib/utbot-framework-2022.9.368.jar) tofieldjava.util.Vector.capacityIncrementWARNING: Illegalreflectiveaccessbyorg.utbot.framework.concrete.UtModelConstructor (file:/C:/Users/lWX1182794/AppData/Roaming/JetBrains/IntelliJIdea2022.1/plugins/utbot-intellij/lib/utbot-framework-2022.9.368.jar) tofieldjava.util.AbstractList.modCountWARNING: Illegalreflectiveaccessbyorg.utbot.framework.concrete.UtModelConstructor (file:/C:/Users/lWX1182794/AppData/Roaming/JetBrains/IntelliJIdea2022.1/plugins/utbot-intellij/lib/utbot-framework-2022.9.368.jar) tofieldjava.util.IdentityHashMap$Values.this$0WARNING: Illegalreflectiveaccessbyorg.utbot.framework.concrete.UtModelConstructor (file:/C:/Users/lWX1182794/AppData/Roaming/JetBrains/IntelliJIdea2022.1/plugins/utbot-intellij/lib/utbot-framework-2022.9.368.jar) tofieldjava.lang.ProcessEnvironment$CheckedValues.c18:18:25.515ERROR| java.lang.NullPointerExceptionatjava.base/java.util.Vector.elementData(Vector.java:762)
atjava.base/java.util.Vector$Itr.next(Vector.java:1282)
atjava.base/java.util.AbstractList.hashCode(AbstractList.java:566)
atjava.base/java.util.Vector.hashCode(Vector.java:1106)
atjava.base/java.util.HashMap.hash(HashMap.java:340)
atjava.base/java.util.HashMap.put(HashMap.java:608)
atjava.base/java.util.HashSet.add(HashSet.java:220)
atjava.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(NativeMethod)
atjava.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
atjava.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
atjava.base/java.lang.reflect.Method.invoke(Method.java:566)
atorg.utbot.common.KClassUtilKt.invokeCatching(KClassUtil.kt:10)
atorg.utbot.framework.concrete.MockValueConstructor$call$1.invoke(MockValueConstructor.kt:478)
atorg.utbot.framework.concrete.MockValueConstructor$call$1.invoke(MockValueConstructor.kt:477)
atorg.utbot.instrumentation.process.SecurityKt$runSandbox$1$1.invoke(Security.kt:38)
atorg.utbot.instrumentation.process.SecurityKt$sandbox$1.invoke(Security.kt:61)
atorg.utbot.instrumentation.process.SecurityKt$sandbox$2.invoke(Security.kt:77)
atorg.utbot.instrumentation.process.SecurityKt$sandbox$3.invoke(Security.kt:82)
atorg.utbot.instrumentation.process.SecurityKt$sandbox$4.run(Security.kt:88)
atjava.base/java.security.AccessController.doPrivileged(NativeMethod)
atorg.utbot.instrumentation.process.SecurityKt.sandbox(Security.kt:88)
atorg.utbot.instrumentation.process.SecurityKt.sandbox(Security.kt:82)
atorg.utbot.instrumentation.process.SecurityKt.sandbox(Security.kt:77)
atorg.utbot.instrumentation.process.SecurityKt.sandbox(Security.kt:61)
atorg.utbot.instrumentation.process.SecurityKt.runSandbox(Security.kt:38)
atorg.utbot.framework.concrete.MockValueConstructor.call(MockValueConstructor.kt:477)
atorg.utbot.framework.concrete.MockValueConstructor.updateWithExecutableCallModel(MockValueConstructor.kt:420)
atorg.utbot.framework.concrete.MockValueConstructor.constructFromAssembleModel(MockValueConstructor.kt:370)
atorg.utbot.framework.concrete.MockValueConstructor.construct(MockValueConstructor.kt:132)
atorg.utbot.framework.concrete.MockValueConstructor.constructMethodParameters(MockValueConstructor.kt:107)
atorg.utbot.framework.concrete.UtExecutionInstrumentation.invoke(UtExecutionInstrumentation.kt:156)
atorg.utbot.framework.concrete.UtExecutionInstrumentation.invoke(UtExecutionInstrumentation.kt:118)
atorg.utbot.instrumentation.process.ChildProcessKt$setup$2.invoke(ChildProcess.kt:211)
atorg.utbot.instrumentation.process.ChildProcessKt$setup$2.invoke(ChildProcess.kt:208)
atorg.utbot.instrumentation.process.ChildProcessKt$measureExecutionForTermination$2$1$1.invoke(ChildProcess.kt:190)
atorg.utbot.instrumentation.process.ChildProcessKt$measureExecutionForTermination$1.invokeSuspend(ChildProcess.kt:174)
atkotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
atkotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
atkotlinx.coroutines.EventLoopImplBase.processNextEvent(EventLoop.common.kt:284)
atkotlinx.coroutines.BlockingCoroutine.joinBlocking(Builders.kt:85)
atkotlinx.coroutines.BuildersKt__BuildersKt.runBlocking(Builders.kt:59)
atkotlinx.coroutines.BuildersKt.runBlocking(UnknownSource)
atkotlinx.coroutines.BuildersKt__BuildersKt.runBlocking$default(Builders.kt:38)
atkotlinx.coroutines.BuildersKt.runBlocking$default(UnknownSource)
atorg.utbot.instrumentation.process.ChildProcessKt.measureExecutionForTermination(ChildProcess.kt:171)
atorg.utbot.instrumentation.process.ChildProcessKt.access$measureExecutionForTermination(ChildProcess.kt:1)
atorg.utbot.instrumentation.process.ChildProcessKt$measureExecutionForTermination$2$1.invokeSuspend(ChildProcess.kt:188)
atkotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
atkotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
atkotlinx.coroutines.EventLoopImplBase.processNextEvent(EventLoop.common.kt:284)
atkotlinx.coroutines.BlockingCoroutine.joinBlocking(Builders.kt:85)
atkotlinx.coroutines.BuildersKt__BuildersKt.runBlocking(Builders.kt:59)
atkotlinx.coroutines.BuildersKt.runBlocking(UnknownSource)
atkotlinx.coroutines.BuildersKt__BuildersKt.runBlocking$default(Builders.kt:38)
atkotlinx.coroutines.BuildersKt.runBlocking$default(UnknownSource)
atorg.utbot.instrumentation.process.ChildProcessKt$measureExecutionForTermination$2.invoke(ChildProcess.kt:187)
atcom.jetbrains.rd.framework.IRdEndpoint$set$1.invoke(TaskInterfaces.kt:182)
atcom.jetbrains.rd.framework.IRdEndpoint$set$1.invoke(TaskInterfaces.kt:182)
atcom.jetbrains.rd.framework.impl.RdCall.onWireReceived(RdTask.kt:360)
atcom.jetbrains.rd.framework.MessageBroker$invoke$2$2.invoke(MessageBroker.kt:57)
atcom.jetbrains.rd.framework.MessageBroker$invoke$2$2.invoke(MessageBroker.kt:56)
atcom.jetbrains.rd.framework.impl.ProtocolContexts.readMessageContextAndInvoke(ProtocolContexts.kt:148)
atcom.jetbrains.rd.framework.MessageBroker$invoke$2.invoke(MessageBroker.kt:56)
atcom.jetbrains.rd.framework.MessageBroker$invoke$2.invoke(MessageBroker.kt:54)
atcom.jetbrains.rd.util.threading.SingleThreadSchedulerBase.queue$lambda-3(SingleThreadScheduler.kt:41)
atjava.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
atjava.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
atjava.base/java.lang.Thread.run(Thread.java:829)

Visual proofs (screenshots, logs, images)

///region Errors report for isDiagonalpublicvoidtestIsDiagonal_errors() {
// Couldn't generate some tests. List of errors:// // 4 occurrences of:// Concrete execution failed
}
///endregion

Environment

Windows 10 Pro
JDK 11
Gradle

Additional context

In Fuzzing only mode correct tests are generated without concrete executions issues.

Found on testing #988

Metadata

Metadata

Labels

Type

No type

Projects

Status
In Progress

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions