soot-oss / soot

Soot - A Java optimization framework
GNU Lesser General Public License v2.1
2.85k stars 706 forks source link

ERROR heros.solver.CountingThreadPoolExecutor - Worker thread execution failed: null #1989

Open MM0n5Ter opened 1 year ago

MM0n5Ter commented 1 year ago

An error occurs when I am running my analysis. The message has nothing to do with my code, so I doubt it may relate to the lines below.

ProcessManifest manifest = new ProcessManifest(apkPath)
PackManager.v().runPacks();
this.sootClasses = Scene.v().getApplicationClasses();
for (SootClass clz : sootClasses) {
    ...
}

The error is below:

[Thread-1008] ERROR heros.solver.CountingThreadPoolExecutor - Worker thread execution failed: null
java.util.ConcurrentModificationException
    at java.base/java.util.ArrayList$Itr.checkForComodification(ArrayList.java:1013)
    at java.base/java.util.ArrayList$Itr.next(ArrayList.java:967)
    at soot.FastHierarchy.getSignaturePolymorphicMethod(FastHierarchy.java:932)
    at soot.FastHierarchy.resolveMethod(FastHierarchy.java:833)
    at soot.FastHierarchy.resolveMethod(FastHierarchy.java:785)
    at soot.SootMethodRefImpl.tryResolve(SootMethodRefImpl.java:227)
    at soot.SootMethodRefImpl.tryResolve(SootMethodRefImpl.java:213)
    at soot.toolkits.exceptions.UnitThrowAnalysis.mightThrow(UnitThrowAnalysis.java:304)
    at soot.toolkits.exceptions.UnitThrowAnalysis$ValueSwitch.caseInstanceInvokeExpr(UnitThrowAnalysis.java:1181)
    at soot.toolkits.exceptions.UnitThrowAnalysis$ValueSwitch.caseInterfaceInvokeExpr(UnitThrowAnalysis.java:998)
    at soot.jimple.internal.AbstractInterfaceInvokeExpr.apply(AbstractInterfaceInvokeExpr.java:121)
    at soot.toolkits.exceptions.UnitThrowAnalysis.mightThrow(UnitThrowAnalysis.java:296)
    at soot.dexpler.DalvikThrowAnalysis.access$600(DalvikThrowAnalysis.java:155)
    at soot.dexpler.DalvikThrowAnalysis$1.caseAssignStmt(DalvikThrowAnalysis.java:228)
    at soot.jimple.internal.JAssignStmt.apply(JAssignStmt.java:215)
    at soot.toolkits.exceptions.UnitThrowAnalysis.mightThrow(UnitThrowAnalysis.java:280)
    at soot.toolkits.exceptions.UnitThrowAnalysis.mightThrow(UnitThrowAnalysis.java:275)
    at soot.toolkits.graph.ExceptionalUnitGraph.buildExceptionDests(ExceptionalUnitGraph.java:277)
    at soot.toolkits.graph.ExceptionalUnitGraph.initialize(ExceptionalUnitGraph.java:220)
    at soot.toolkits.graph.ExceptionalUnitGraph.<init>(ExceptionalUnitGraph.java:127)
    at soot.toolkits.graph.ExceptionalUnitGraphFactory.newExceptionalUnitGraph(ExceptionalUnitGraphFactory.java:55)
    at soot.toolkits.graph.ExceptionalUnitGraphFactory.createExceptionalUnitGraph(ExceptionalUnitGraphFactory.java:50)
    at soot.toolkits.scalar.LocalSplitter.internalTransform(LocalSplitter.java:109)
    at soot.BodyTransformer.transform(BodyTransformer.java:52)
    at soot.BodyTransformer.transform(BodyTransformer.java:56)
    at soot.dexpler.DexBody.jimplify(DexBody.java:691)
    at soot.dexpler.DexMethod$1.getBody(DexMethod.java:120)
    at soot.SootMethod.retrieveActiveBody(SootMethod.java:446)
    at soot.PackManager.lambda$retrieveAllBodies$2(PackManager.java:1252)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
    at java.base/java.lang.Thread.run(Thread.java:833)
Exception in thread "main" java.util.ConcurrentModificationException
    at java.base/java.util.ArrayList$Itr.checkForComodification(ArrayList.java:1013)
    at java.base/java.util.ArrayList$Itr.next(ArrayList.java:967)
    at soot.FastHierarchy.getSignaturePolymorphicMethod(FastHierarchy.java:932)
    at soot.FastHierarchy.resolveMethod(FastHierarchy.java:833)
    at soot.FastHierarchy.resolveMethod(FastHierarchy.java:785)
    at soot.SootMethodRefImpl.tryResolve(SootMethodRefImpl.java:227)
    at soot.SootMethodRefImpl.tryResolve(SootMethodRefImpl.java:213)
    at soot.toolkits.exceptions.UnitThrowAnalysis.mightThrow(UnitThrowAnalysis.java:304)
    at soot.toolkits.exceptions.UnitThrowAnalysis$ValueSwitch.caseInstanceInvokeExpr(UnitThrowAnalysis.java:1181)
    at soot.toolkits.exceptions.UnitThrowAnalysis$ValueSwitch.caseInterfaceInvokeExpr(UnitThrowAnalysis.java:998)
    at soot.jimple.internal.AbstractInterfaceInvokeExpr.apply(AbstractInterfaceInvokeExpr.java:121)
    at soot.toolkits.exceptions.UnitThrowAnalysis.mightThrow(UnitThrowAnalysis.java:296)
    at soot.dexpler.DalvikThrowAnalysis.access$600(DalvikThrowAnalysis.java:155)
    at soot.dexpler.DalvikThrowAnalysis$1.caseAssignStmt(DalvikThrowAnalysis.java:228)
    at soot.jimple.internal.JAssignStmt.apply(JAssignStmt.java:215)
    at soot.toolkits.exceptions.UnitThrowAnalysis.mightThrow(UnitThrowAnalysis.java:280)
    at soot.toolkits.exceptions.UnitThrowAnalysis.mightThrow(UnitThrowAnalysis.java:275)
    at soot.toolkits.graph.ExceptionalUnitGraph.buildExceptionDests(ExceptionalUnitGraph.java:277)
    at soot.toolkits.graph.ExceptionalUnitGraph.initialize(ExceptionalUnitGraph.java:220)
    at soot.toolkits.graph.ExceptionalUnitGraph.<init>(ExceptionalUnitGraph.java:127)
    at soot.toolkits.graph.ExceptionalUnitGraphFactory.newExceptionalUnitGraph(ExceptionalUnitGraphFactory.java:55)
    at soot.toolkits.graph.ExceptionalUnitGraphFactory.createExceptionalUnitGraph(ExceptionalUnitGraphFactory.java:50)
    at soot.toolkits.scalar.LocalSplitter.internalTransform(LocalSplitter.java:109)
    at soot.BodyTransformer.transform(BodyTransformer.java:52)
    at soot.BodyTransformer.transform(BodyTransformer.java:56)
    at soot.dexpler.DexBody.jimplify(DexBody.java:691)
    at soot.dexpler.DexMethod$1.getBody(DexMethod.java:120)
    at soot.SootMethod.retrieveActiveBody(SootMethod.java:446)
    at soot.PackManager.lambda$retrieveAllBodies$2(PackManager.java:1252)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
    at java.base/java.lang.Thread.run(Thread.java:833)
Exception in thread "Thread-1008" java.util.ConcurrentModificationException
    at java.base/java.util.ArrayList$Itr.checkForComodification(ArrayList.java:1013)
    at java.base/java.util.ArrayList$Itr.next(ArrayList.java:967)
    at soot.FastHierarchy.getSignaturePolymorphicMethod(FastHierarchy.java:932)
    at soot.FastHierarchy.resolveMethod(FastHierarchy.java:833)
    at soot.FastHierarchy.resolveMethod(FastHierarchy.java:785)
    at soot.SootMethodRefImpl.tryResolve(SootMethodRefImpl.java:227)
    at soot.SootMethodRefImpl.tryResolve(SootMethodRefImpl.java:213)
    at soot.toolkits.exceptions.UnitThrowAnalysis.mightThrow(UnitThrowAnalysis.java:304)
    at soot.toolkits.exceptions.UnitThrowAnalysis$ValueSwitch.caseInstanceInvokeExpr(UnitThrowAnalysis.java:1181)
    at soot.toolkits.exceptions.UnitThrowAnalysis$ValueSwitch.caseInterfaceInvokeExpr(UnitThrowAnalysis.java:998)
    at soot.jimple.internal.AbstractInterfaceInvokeExpr.apply(AbstractInterfaceInvokeExpr.java:121)
    at soot.toolkits.exceptions.UnitThrowAnalysis.mightThrow(UnitThrowAnalysis.java:296)
    at soot.dexpler.DalvikThrowAnalysis.access$600(DalvikThrowAnalysis.java:155)
    at soot.dexpler.DalvikThrowAnalysis$1.caseAssignStmt(DalvikThrowAnalysis.java:228)
    at soot.jimple.internal.JAssignStmt.apply(JAssignStmt.java:215)
    at soot.toolkits.exceptions.UnitThrowAnalysis.mightThrow(UnitThrowAnalysis.java:280)
    at soot.toolkits.exceptions.UnitThrowAnalysis.mightThrow(UnitThrowAnalysis.java:275)
    at soot.toolkits.graph.ExceptionalUnitGraph.buildExceptionDests(ExceptionalUnitGraph.java:277)
    at soot.toolkits.graph.ExceptionalUnitGraph.initialize(ExceptionalUnitGraph.java:220)
    at soot.toolkits.graph.ExceptionalUnitGraph.<init>(ExceptionalUnitGraph.java:127)
    at soot.toolkits.graph.ExceptionalUnitGraphFactory.newExceptionalUnitGraph(ExceptionalUnitGraphFactory.java:55)
    at soot.toolkits.graph.ExceptionalUnitGraphFactory.createExceptionalUnitGraph(ExceptionalUnitGraphFactory.java:50)
    at soot.toolkits.scalar.LocalSplitter.internalTransform(LocalSplitter.java:109)
    at soot.BodyTransformer.transform(BodyTransformer.java:52)
    at soot.BodyTransformer.transform(BodyTransformer.java:56)
    at soot.dexpler.DexBody.jimplify(DexBody.java:691)
    at soot.dexpler.DexMethod$1.getBody(DexMethod.java:120)
    at soot.SootMethod.retrieveActiveBody(SootMethod.java:446)
    at soot.PackManager.lambda$retrieveAllBodies$2(PackManager.java:1252)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
    at java.base/java.lang.Thread.run(Thread.java:833)