Open
Description
Description
NoSuchElementException and NullPointerException are thrown from concrete executions by symbolic engine of a method with Collection<Collection> as input.
To Reproduce
- Install one of the latest plugin build from main on IntelliJ Idea 2022.1.4
- Symbolic execution is on
- Add the following method to a Java class:
public static boolean isDiagonal(Collection<Collection<Double>> matrix) {
int cols = matrix.size();
if (cols <= 1) {
return false;
}
int i = 0;
for (Collection<Double> col : matrix) {
if (col.size() != cols) {
return false;
}
int j = 0;
for (Double value : col) {
if (i == j && value == 0.0) return false;
if (i != j && value != 0.0) return false;
j++;
}
i++;
}
return true;
}
- 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.437 ERROR| java.util.NoSuchElementException
at java.base/java.util.Vector$Itr.next(Vector.java:1280)
at java.base/java.util.AbstractList.hashCode(AbstractList.java:566)
at java.base/java.util.Vector.hashCode(Vector.java:1106)
at java.base/java.util.HashMap.hash(HashMap.java:340)
at java.base/java.util.HashMap.put(HashMap.java:608)
at java.base/java.util.HashSet.add(HashSet.java:220)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at org.utbot.common.KClassUtilKt.invokeCatching(KClassUtil.kt:10)
at org.utbot.framework.concrete.MockValueConstructor$call$1.invoke(MockValueConstructor.kt:478)
at org.utbot.framework.concrete.MockValueConstructor$call$1.invoke(MockValueConstructor.kt:477)
at org.utbot.instrumentation.process.SecurityKt$runSandbox$1$1.invoke(Security.kt:38)
at org.utbot.instrumentation.process.SecurityKt$sandbox$1.invoke(Security.kt:61)
at org.utbot.instrumentation.process.SecurityKt$sandbox$2.invoke(Security.kt:77)
at org.utbot.instrumentation.process.SecurityKt$sandbox$3.invoke(Security.kt:82)
at org.utbot.instrumentation.process.SecurityKt$sandbox$4.run(Security.kt:88)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at org.utbot.instrumentation.process.SecurityKt.sandbox(Security.kt:88)
at org.utbot.instrumentation.process.SecurityKt.sandbox(Security.kt:82)
at org.utbot.instrumentation.process.SecurityKt.sandbox(Security.kt:77)
at org.utbot.instrumentation.process.SecurityKt.sandbox(Security.kt:61)
at org.utbot.instrumentation.process.SecurityKt.runSandbox(Security.kt:38)
at org.utbot.framework.concrete.MockValueConstructor.call(MockValueConstructor.kt:477)
at org.utbot.framework.concrete.MockValueConstructor.updateWithExecutableCallModel(MockValueConstructor.kt:420)
at org.utbot.framework.concrete.MockValueConstructor.constructFromAssembleModel(MockValueConstructor.kt:370)
at org.utbot.framework.concrete.MockValueConstructor.construct(MockValueConstructor.kt:132)
at org.utbot.framework.concrete.MockValueConstructor.constructMethodParameters(MockValueConstructor.kt:107)
at org.utbot.framework.concrete.UtExecutionInstrumentation.invoke(UtExecutionInstrumentation.kt:156)
at org.utbot.framework.concrete.UtExecutionInstrumentation.invoke(UtExecutionInstrumentation.kt:118)
at org.utbot.instrumentation.process.ChildProcessKt$setup$2.invoke(ChildProcess.kt:211)
at org.utbot.instrumentation.process.ChildProcessKt$setup$2.invoke(ChildProcess.kt:208)
at org.utbot.instrumentation.process.ChildProcessKt$measureExecutionForTermination$2$1$1.invoke(ChildProcess.kt:190)
at org.utbot.instrumentation.process.ChildProcessKt$measureExecutionForTermination$1.invokeSuspend(ChildProcess.kt:174)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
at kotlinx.coroutines.EventLoopImplBase.processNextEvent(EventLoop.common.kt:284)
at kotlinx.coroutines.BlockingCoroutine.joinBlocking(Builders.kt:85)
at kotlinx.coroutines.BuildersKt__BuildersKt.runBlocking(Builders.kt:59)
at kotlinx.coroutines.BuildersKt.runBlocking(Unknown Source)
at kotlinx.coroutines.BuildersKt__BuildersKt.runBlocking$default(Builders.kt:38)
at kotlinx.coroutines.BuildersKt.runBlocking$default(Unknown Source)
at org.utbot.instrumentation.process.ChildProcessKt.measureExecutionForTermination(ChildProcess.kt:171)
at org.utbot.instrumentation.process.ChildProcessKt.access$measureExecutionForTermination(ChildProcess.kt:1)
at org.utbot.instrumentation.process.ChildProcessKt$measureExecutionForTermination$2$1.invokeSuspend(ChildProcess.kt:188)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
at kotlinx.coroutines.EventLoopImplBase.processNextEvent(EventLoop.common.kt:284)
at kotlinx.coroutines.BlockingCoroutine.joinBlocking(Builders.kt:85)
at kotlinx.coroutines.BuildersKt__BuildersKt.runBlocking(Builders.kt:59)
at kotlinx.coroutines.BuildersKt.runBlocking(Unknown Source)
at kotlinx.coroutines.BuildersKt__BuildersKt.runBlocking$default(Builders.kt:38)
at kotlinx.coroutines.BuildersKt.runBlocking$default(Unknown Source)
at org.utbot.instrumentation.process.ChildProcessKt$measureExecutionForTermination$2.invoke(ChildProcess.kt:187)
at com.jetbrains.rd.framework.IRdEndpoint$set$1.invoke(TaskInterfaces.kt:182)
at com.jetbrains.rd.framework.IRdEndpoint$set$1.invoke(TaskInterfaces.kt:182)
at com.jetbrains.rd.framework.impl.RdCall.onWireReceived(RdTask.kt:360)
at com.jetbrains.rd.framework.MessageBroker$invoke$2$2.invoke(MessageBroker.kt:57)
at com.jetbrains.rd.framework.MessageBroker$invoke$2$2.invoke(MessageBroker.kt:56)
at com.jetbrains.rd.framework.impl.ProtocolContexts.readMessageContextAndInvoke(ProtocolContexts.kt:148)
at com.jetbrains.rd.framework.MessageBroker$invoke$2.invoke(MessageBroker.kt:56)
at com.jetbrains.rd.framework.MessageBroker$invoke$2.invoke(MessageBroker.kt:54)
at com.jetbrains.rd.util.threading.SingleThreadSchedulerBase.queue$lambda-3(SingleThreadScheduler.kt:41)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.lang.Thread.run(Thread.java:829)
WARNING: Illegal reflective access by org.utbot.framework.concrete.UtModelConstructor (file:/C:/Users/lWX1182794/AppData/Roaming/JetBrains/IntelliJIdea2022.1/plugins/utbot-intellij/lib/utbot-framework-2022.9.368.jar) to field java.util.Vector.elementData
WARNING: Illegal reflective access by org.utbot.framework.concrete.UtModelConstructor (file:/C:/Users/lWX1182794/AppData/Roaming/JetBrains/IntelliJIdea2022.1/plugins/utbot-intellij/lib/utbot-framework-2022.9.368.jar) to field java.util.Vector.elementCount
WARNING: Illegal reflective access by org.utbot.framework.concrete.UtModelConstructor (file:/C:/Users/lWX1182794/AppData/Roaming/JetBrains/IntelliJIdea2022.1/plugins/utbot-intellij/lib/utbot-framework-2022.9.368.jar) to field java.util.Vector.capacityIncrement
WARNING: Illegal reflective access by org.utbot.framework.concrete.UtModelConstructor (file:/C:/Users/lWX1182794/AppData/Roaming/JetBrains/IntelliJIdea2022.1/plugins/utbot-intellij/lib/utbot-framework-2022.9.368.jar) to field java.util.AbstractList.modCount
WARNING: Illegal reflective access by org.utbot.framework.concrete.UtModelConstructor (file:/C:/Users/lWX1182794/AppData/Roaming/JetBrains/IntelliJIdea2022.1/plugins/utbot-intellij/lib/utbot-framework-2022.9.368.jar) to field java.util.IdentityHashMap$Values.this$0
WARNING: Illegal reflective access by org.utbot.framework.concrete.UtModelConstructor (file:/C:/Users/lWX1182794/AppData/Roaming/JetBrains/IntelliJIdea2022.1/plugins/utbot-intellij/lib/utbot-framework-2022.9.368.jar) to field java.lang.ProcessEnvironment$CheckedValues.c
18:18:25.515 ERROR| java.lang.NullPointerException
at java.base/java.util.Vector.elementData(Vector.java:762)
at java.base/java.util.Vector$Itr.next(Vector.java:1282)
at java.base/java.util.AbstractList.hashCode(AbstractList.java:566)
at java.base/java.util.Vector.hashCode(Vector.java:1106)
at java.base/java.util.HashMap.hash(HashMap.java:340)
at java.base/java.util.HashMap.put(HashMap.java:608)
at java.base/java.util.HashSet.add(HashSet.java:220)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at org.utbot.common.KClassUtilKt.invokeCatching(KClassUtil.kt:10)
at org.utbot.framework.concrete.MockValueConstructor$call$1.invoke(MockValueConstructor.kt:478)
at org.utbot.framework.concrete.MockValueConstructor$call$1.invoke(MockValueConstructor.kt:477)
at org.utbot.instrumentation.process.SecurityKt$runSandbox$1$1.invoke(Security.kt:38)
at org.utbot.instrumentation.process.SecurityKt$sandbox$1.invoke(Security.kt:61)
at org.utbot.instrumentation.process.SecurityKt$sandbox$2.invoke(Security.kt:77)
at org.utbot.instrumentation.process.SecurityKt$sandbox$3.invoke(Security.kt:82)
at org.utbot.instrumentation.process.SecurityKt$sandbox$4.run(Security.kt:88)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at org.utbot.instrumentation.process.SecurityKt.sandbox(Security.kt:88)
at org.utbot.instrumentation.process.SecurityKt.sandbox(Security.kt:82)
at org.utbot.instrumentation.process.SecurityKt.sandbox(Security.kt:77)
at org.utbot.instrumentation.process.SecurityKt.sandbox(Security.kt:61)
at org.utbot.instrumentation.process.SecurityKt.runSandbox(Security.kt:38)
at org.utbot.framework.concrete.MockValueConstructor.call(MockValueConstructor.kt:477)
at org.utbot.framework.concrete.MockValueConstructor.updateWithExecutableCallModel(MockValueConstructor.kt:420)
at org.utbot.framework.concrete.MockValueConstructor.constructFromAssembleModel(MockValueConstructor.kt:370)
at org.utbot.framework.concrete.MockValueConstructor.construct(MockValueConstructor.kt:132)
at org.utbot.framework.concrete.MockValueConstructor.constructMethodParameters(MockValueConstructor.kt:107)
at org.utbot.framework.concrete.UtExecutionInstrumentation.invoke(UtExecutionInstrumentation.kt:156)
at org.utbot.framework.concrete.UtExecutionInstrumentation.invoke(UtExecutionInstrumentation.kt:118)
at org.utbot.instrumentation.process.ChildProcessKt$setup$2.invoke(ChildProcess.kt:211)
at org.utbot.instrumentation.process.ChildProcessKt$setup$2.invoke(ChildProcess.kt:208)
at org.utbot.instrumentation.process.ChildProcessKt$measureExecutionForTermination$2$1$1.invoke(ChildProcess.kt:190)
at org.utbot.instrumentation.process.ChildProcessKt$measureExecutionForTermination$1.invokeSuspend(ChildProcess.kt:174)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
at kotlinx.coroutines.EventLoopImplBase.processNextEvent(EventLoop.common.kt:284)
at kotlinx.coroutines.BlockingCoroutine.joinBlocking(Builders.kt:85)
at kotlinx.coroutines.BuildersKt__BuildersKt.runBlocking(Builders.kt:59)
at kotlinx.coroutines.BuildersKt.runBlocking(Unknown Source)
at kotlinx.coroutines.BuildersKt__BuildersKt.runBlocking$default(Builders.kt:38)
at kotlinx.coroutines.BuildersKt.runBlocking$default(Unknown Source)
at org.utbot.instrumentation.process.ChildProcessKt.measureExecutionForTermination(ChildProcess.kt:171)
at org.utbot.instrumentation.process.ChildProcessKt.access$measureExecutionForTermination(ChildProcess.kt:1)
at org.utbot.instrumentation.process.ChildProcessKt$measureExecutionForTermination$2$1.invokeSuspend(ChildProcess.kt:188)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
at kotlinx.coroutines.EventLoopImplBase.processNextEvent(EventLoop.common.kt:284)
at kotlinx.coroutines.BlockingCoroutine.joinBlocking(Builders.kt:85)
at kotlinx.coroutines.BuildersKt__BuildersKt.runBlocking(Builders.kt:59)
at kotlinx.coroutines.BuildersKt.runBlocking(Unknown Source)
at kotlinx.coroutines.BuildersKt__BuildersKt.runBlocking$default(Builders.kt:38)
at kotlinx.coroutines.BuildersKt.runBlocking$default(Unknown Source)
at org.utbot.instrumentation.process.ChildProcessKt$measureExecutionForTermination$2.invoke(ChildProcess.kt:187)
at com.jetbrains.rd.framework.IRdEndpoint$set$1.invoke(TaskInterfaces.kt:182)
at com.jetbrains.rd.framework.IRdEndpoint$set$1.invoke(TaskInterfaces.kt:182)
at com.jetbrains.rd.framework.impl.RdCall.onWireReceived(RdTask.kt:360)
at com.jetbrains.rd.framework.MessageBroker$invoke$2$2.invoke(MessageBroker.kt:57)
at com.jetbrains.rd.framework.MessageBroker$invoke$2$2.invoke(MessageBroker.kt:56)
at com.jetbrains.rd.framework.impl.ProtocolContexts.readMessageContextAndInvoke(ProtocolContexts.kt:148)
at com.jetbrains.rd.framework.MessageBroker$invoke$2.invoke(MessageBroker.kt:56)
at com.jetbrains.rd.framework.MessageBroker$invoke$2.invoke(MessageBroker.kt:54)
at com.jetbrains.rd.util.threading.SingleThreadSchedulerBase.queue$lambda-3(SingleThreadScheduler.kt:41)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.lang.Thread.run(Thread.java:829)
Visual proofs (screenshots, logs, images)
///region Errors report for isDiagonal
public void testIsDiagonal_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
Assignees
Labels
Type
Projects
Status
In Progress