Description
Description
Exception in Instrumented process which is produced (may be transitively) by SecurityManager
when concrete executing class static constructor is considered as a Concrete Executor result, which causes incorrect tests.
To Reproduce
Steps to reproduce the behavior:
- Turn on sandbox in
ContestEstimator
-org.utbot.contest.ContestKt#setOptions
- OPTIONALLY: Use only
spoon-core-7.0.0
inprojectFilter
-org.utbot.contest.ContestEstimatorKt#main
- Set JDK 8 in
org.utbot.contest.ContestEstimatorKt#javaHome
andContestEstimatorKt
run configuration - OPTIONALLY: shorten list
utbot-junit-contest/src/main/resources/classes/spoon-core-7.0.0/list
to following:
spoon.support.DefaultCoreFactory
spoon.support.reflect.code.CtAssignmentImpl
- Add
timeLimit
to 100 -org.utbot.contest.ContestEstimatorKt#main
- Run
ContestEstimator
Use OPTIONALLY
steps to speed up repro.
Expected behavior
Tests are supposed to be generated.
Actual behavior
An error test is generated for spoon.support.DefaultCoreFactory
and nothing for spoon.support.reflect.code.CtAssignmentImpl
. Also following exceptions are thrown:
- In
ContestEstimator
:
Exception in thread "SymbolicExecution" org.utbot.instrumentation.util.InstrumentedProcessError: Error in the instrumented process |> com.jetbrains.rd.util.reactive.RdFault: spoon.support.reflect.declaration.CtElementImpl, reason: java.lang.NoClassDefFoundError: spoon.support.reflect.declaration.CtElementImpl
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Class.java:2729)
at java.lang.Class.getDeclaredMethods(Class.java:2003)
at org.utbot.framework.plugin.api.util.SignatureUtilKt$singleMethodOrNull$2.invoke(SignatureUtil.kt:79)
at org.utbot.framework.plugin.api.util.SignatureUtilKt$singleMethodOrNull$2.invoke(SignatureUtil.kt:78)
at kotlin.sequences.TransformingSequence$iterator$1.next(Sequences.kt:210)
at kotlin.sequences.FilteringSequence$iterator$1.calcNext(Sequences.kt:170)
at kotlin.sequences.FilteringSequence$iterator$1.hasNext(Sequences.kt:194)
at kotlin.sequences.SequencesKt___SequencesKt.firstOrNull(_Sequences.kt:168)
at org.utbot.framework.plugin.api.util.SignatureUtilKt.singleMethodOrNull(SignatureUtil.kt:80)
at org.utbot.framework.plugin.api.util.SignatureUtilKt.singleExecutableIdOrNull(SignatureUtil.kt:102)
at org.utbot.framework.plugin.api.util.SignatureUtilKt.singleExecutableId(SignatureUtil.kt:94)
at org.utbot.framework.concrete.UtExecutionInstrumentation.invoke(UtExecutionInstrumentation.kt:126)
at org.utbot.framework.concrete.UtExecutionInstrumentation.invoke(UtExecutionInstrumentation.kt:96)
at org.utbot.instrumentation.process.InstrumentedProcessMainKt$setup$2.invoke(InstrumentedProcessMain.kt:128)
at org.utbot.instrumentation.process.InstrumentedProcessMainKt$setup$2.invoke(InstrumentedProcessMain.kt:124)
at org.utbot.rd.IdleWatchdog$wrapActiveCall$1$1.invoke(ClientProcessUtil.kt:96)
at org.utbot.rd.IdleWatchdog.wrapActive(ClientProcessUtil.kt:83)
at org.utbot.rd.IdleWatchdog$wrapActiveCall$1.invoke(ClientProcessUtil.kt:95)
at com.jetbrains.rd.framework.IRdEndpoint$set$1.invoke(TaskInterfaces.kt:182)
at com.jetbrains.rd.framework.IRdEndpoint$set$1.invoke(TaskInterfaces.kt:173)
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:12)
at com.jetbrains.rd.framework.impl.ProtocolContexts.readMessageContextAndInvoke(ProtocolContexts.kt:151)
at com.jetbrains.rd.framework.MessageBroker$invoke$2.invoke(MessageBroker.kt:56)
at com.jetbrains.rd.framework.MessageBroker$invoke$2.invoke(MessageBroker.kt:12)
at com.jetbrains.rd.util.threading.SingleThreadSchedulerBase$queue$1.run(SingleThreadScheduler.kt:41)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:750)
at com.jetbrains.rd.framework.RdTaskResult$Companion.read(TaskInterfaces.kt:30)
at com.jetbrains.rd.framework.impl.CallSiteWiredRdTask.onWireReceived(RdTask.kt:104)
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:12)
at com.jetbrains.rd.framework.impl.ProtocolContexts.readMessageContextAndInvoke(ProtocolContexts.kt:151)
at com.jetbrains.rd.framework.MessageBroker$invoke$2.invoke(MessageBroker.kt:56)
at com.jetbrains.rd.framework.MessageBroker$invoke$2.invoke(MessageBroker.kt:12)
at com.jetbrains.rd.framework.impl.RdCall$createResponseScheduler$1$queue$1.invoke(RdTask.kt:278)
at com.jetbrains.rd.framework.impl.RdCall$createResponseScheduler$1$queue$2.invokeSuspend(RdTask.kt:287)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:750)
at org.utbot.instrumentation.ConcreteExecutor.withProcess(ConcreteExecutor.kt:227)
at org.utbot.instrumentation.ConcreteExecutor$withProcess$1.invokeSuspend(ConcreteExecutor.kt)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:104)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:750)
Suppressed: kotlinx.coroutines.DiagnosticCoroutineContextException: [UtContext(classLoader=java.net.URLClassLoader@712625fd, hashCode=1387426343), StandaloneCoroutine{Cancelling}@3d71ad65, java.util.concurrent.ScheduledThreadPoolExecutor@24c1fb09[Running, pool size = 1, active threads = 1, queued tasks = 0, completed tasks = 44]]
Caused by: com.jetbrains.rd.util.reactive.RdFault: spoon.support.reflect.declaration.CtElementImpl, reason: java.lang.NoClassDefFoundError: spoon.support.reflect.declaration.CtElementImpl
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Class.java:2729)
at java.lang.Class.getDeclaredMethods(Class.java:2003)
at org.utbot.framework.plugin.api.util.SignatureUtilKt$singleMethodOrNull$2.invoke(SignatureUtil.kt:79)
at org.utbot.framework.plugin.api.util.SignatureUtilKt$singleMethodOrNull$2.invoke(SignatureUtil.kt:78)
at kotlin.sequences.TransformingSequence$iterator$1.next(Sequences.kt:210)
at kotlin.sequences.FilteringSequence$iterator$1.calcNext(Sequences.kt:170)
at kotlin.sequences.FilteringSequence$iterator$1.hasNext(Sequences.kt:194)
at kotlin.sequences.SequencesKt___SequencesKt.firstOrNull(_Sequences.kt:168)
at org.utbot.framework.plugin.api.util.SignatureUtilKt.singleMethodOrNull(SignatureUtil.kt:80)
at org.utbot.framework.plugin.api.util.SignatureUtilKt.singleExecutableIdOrNull(SignatureUtil.kt:102)
at org.utbot.framework.plugin.api.util.SignatureUtilKt.singleExecutableId(SignatureUtil.kt:94)
at org.utbot.framework.concrete.UtExecutionInstrumentation.invoke(UtExecutionInstrumentation.kt:126)
at org.utbot.framework.concrete.UtExecutionInstrumentation.invoke(UtExecutionInstrumentation.kt:96)
at org.utbot.instrumentation.process.InstrumentedProcessMainKt$setup$2.invoke(InstrumentedProcessMain.kt:128)
at org.utbot.instrumentation.process.InstrumentedProcessMainKt$setup$2.invoke(InstrumentedProcessMain.kt:124)
at org.utbot.rd.IdleWatchdog$wrapActiveCall$1$1.invoke(ClientProcessUtil.kt:96)
at org.utbot.rd.IdleWatchdog.wrapActive(ClientProcessUtil.kt:83)
at org.utbot.rd.IdleWatchdog$wrapActiveCall$1.invoke(ClientProcessUtil.kt:95)
at com.jetbrains.rd.framework.IRdEndpoint$set$1.invoke(TaskInterfaces.kt:182)
at com.jetbrains.rd.framework.IRdEndpoint$set$1.invoke(TaskInterfaces.kt:173)
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:12)
at com.jetbrains.rd.framework.impl.ProtocolContexts.readMessageContextAndInvoke(ProtocolContexts.kt:151)
at com.jetbrains.rd.framework.MessageBroker$invoke$2.invoke(MessageBroker.kt:56)
at com.jetbrains.rd.framework.MessageBroker$invoke$2.invoke(MessageBroker.kt:12)
at com.jetbrains.rd.util.threading.SingleThreadSchedulerBase$queue$1.run(SingleThreadScheduler.kt:41)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:750)
at com.jetbrains.rd.framework.RdTaskResult$Companion.read(TaskInterfaces.kt:30)
at com.jetbrains.rd.framework.impl.CallSiteWiredRdTask.onWireReceived(RdTask.kt:104)
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:12)
at com.jetbrains.rd.framework.impl.ProtocolContexts.readMessageContextAndInvoke(ProtocolContexts.kt:151)
at com.jetbrains.rd.framework.MessageBroker$invoke$2.invoke(MessageBroker.kt:56)
at com.jetbrains.rd.framework.MessageBroker$invoke$2.invoke(MessageBroker.kt:12)
at com.jetbrains.rd.framework.impl.RdCall$createResponseScheduler$1$queue$1.invoke(RdTask.kt:278)
at com.jetbrains.rd.framework.impl.RdCall$createResponseScheduler$1$queue$2.invokeSuspend(RdTask.kt:287)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
... 7 more
- In
InstrumentedProcess
:
18:43:24.478 | DEBUG | InstrumentedProcess | received invokeMethod request: spoon.support.reflect.code.CtAssignmentImpl, setAssigned(Lspoon/reflect/code/CtExpression;)Lspoon/reflect/code/CtAssignment;
18:43:24.478 | DEBUG | InstrumentedProcess | invokeMethod failure
18:43:24.478 | ERROR | InstrumentedProcess | | java.lang.NoClassDefFoundError: spoon.support.reflect.declaration.CtElementImpl
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Class.java:2729)
at java.lang.Class.getDeclaredMethods(Class.java:2003)
at org.utbot.framework.plugin.api.util.SignatureUtilKt$singleMethodOrNull$2.invoke(SignatureUtil.kt:79)
at org.utbot.framework.plugin.api.util.SignatureUtilKt$singleMethodOrNull$2.invoke(SignatureUtil.kt:78)
at kotlin.sequences.TransformingSequence$iterator$1.next(Sequences.kt:210)
at kotlin.sequences.FilteringSequence$iterator$1.calcNext(Sequences.kt:170)
at kotlin.sequences.FilteringSequence$iterator$1.hasNext(Sequences.kt:194)
at kotlin.sequences.SequencesKt___SequencesKt.firstOrNull(_Sequences.kt:168)
at org.utbot.framework.plugin.api.util.SignatureUtilKt.singleMethodOrNull(SignatureUtil.kt:80)
at org.utbot.framework.plugin.api.util.SignatureUtilKt.singleExecutableIdOrNull(SignatureUtil.kt:102)
at org.utbot.framework.plugin.api.util.SignatureUtilKt.singleExecutableId(SignatureUtil.kt:94)
at org.utbot.framework.concrete.UtExecutionInstrumentation.invoke(UtExecutionInstrumentation.kt:126)
at org.utbot.framework.concrete.UtExecutionInstrumentation.invoke(UtExecutionInstrumentation.kt:96)
at org.utbot.instrumentation.process.InstrumentedProcessMainKt$setup$2.invoke(InstrumentedProcessMain.kt:128)
at org.utbot.instrumentation.process.InstrumentedProcessMainKt$setup$2.invoke(InstrumentedProcessMain.kt:124)
at org.utbot.rd.IdleWatchdog$wrapActiveCall$1$1.invoke(ClientProcessUtil.kt:96)
at org.utbot.rd.IdleWatchdog.wrapActive(ClientProcessUtil.kt:83)
at org.utbot.rd.IdleWatchdog$wrapActiveCall$1.invoke(ClientProcessUtil.kt:95)
at com.jetbrains.rd.framework.IRdEndpoint$set$1.invoke(TaskInterfaces.kt:182)
at com.jetbrains.rd.framework.IRdEndpoint$set$1.invoke(TaskInterfaces.kt:173)
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:12)
at com.jetbrains.rd.framework.impl.ProtocolContexts.readMessageContextAndInvoke(ProtocolContexts.kt:151)
at com.jetbrains.rd.framework.MessageBroker$invoke$2.invoke(MessageBroker.kt:56)
at com.jetbrains.rd.framework.MessageBroker$invoke$2.invoke(MessageBroker.kt:12)
at com.jetbrains.rd.util.threading.SingleThreadSchedulerBase$queue$1.run(SingleThreadScheduler.kt:41)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:750)
The thing is that is you will debug concrete execution of first method in DefaultCoreFactory
you will see following exception in concrete execution:
java.lang.ExceptionInInitializerError
at spoon.Launcher.defineArgs(Launcher.java:214)
at spoon.Launcher.<clinit>(Launcher.java:145)
at spoon.support.StandardEnvironment.<init>(StandardEnvironment.java:87)
at spoon.support.reflect.declaration.CtElementImpl.<clinit>(CtElementImpl.java:93)
at spoon.support.DefaultCoreFactory.createParameterReference(DefaultCoreFactory.java:539)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.utbot.instrumentation.instrumentation.InvokeInstrumentation$invoke$2$result$1.invoke-IoAF18A(InvokeInstrumentation.kt:61)
at org.utbot.instrumentation.instrumentation.InvokeInstrumentation$invoke$2$result$1.invoke(InvokeInstrumentation.kt:59)
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.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.instrumentation.instrumentation.InvokeInstrumentation.invoke-BWLJW6A(InvokeInstrumentation.kt:59)
at org.utbot.instrumentation.instrumentation.InvokeInstrumentation.invoke(InvokeInstrumentation.kt:21)
at org.utbot.instrumentation.instrumentation.Instrumentation$DefaultImpls.invoke$default(Instrumentation.kt:21)
at org.utbot.framework.concrete.phases.InvocationContext$invoke$concreteResult$1.invoke(InvocationContext.kt:36)
at org.utbot.common.ThreadBasedExecutor$invokeWithTimeout$2.invoke(ThreadUtil.kt:56)
at org.utbot.common.ThreadBasedExecutor$invokeWithTimeout$1.invoke(ThreadUtil.kt:47)
at org.utbot.common.ThreadBasedExecutor$invokeWithTimeout$1.invoke(ThreadUtil.kt:43)
at kotlin.concurrent.ThreadsKt$thread$thread$1.run(Thread.kt:30)
Caused by: java.security.AccessControlException: access denied ("java.util.PropertyPermission" "com.martiansoftware.jsap.usenbsp" "read")
at java.security.AccessControlContext.checkPermission(AccessControlContext.java:472)
at java.security.AccessController.checkPermission(AccessController.java:886)
at java.lang.SecurityManager.checkPermission(SecurityManager.java:549)
at java.lang.SecurityManager.checkPropertyAccess(SecurityManager.java:1294)
at java.lang.System.getProperty(System.java:769)
at com.martiansoftware.jsap.JSAP.<clinit>(Unknown Source)
... 30 more
Additional context
If you change order of classes in step 4 - everything will work.
I believe it is required to correctly diagnose and signal that there is exception in static constructor from SecurityManager in Instrumeted process.
Metadata
Metadata
Assignees
Type
Projects
Status