-
Notifications
You must be signed in to change notification settings - Fork 3
Description
While using Androlog on an updated set of Android apps, I repeatedly encounter a large number of exceptions, including java.util.ConcurrentModificationException. This suggests a potential bug in either Androspecter or Soot.
Below, I provide a recurring stack trace in hopes of shedding light on the root cause of this issue.
Exception in thread "Thread-48" Exception in thread "Thread-35" Exception in thread "main" java.util.ConcurrentModificationException
at java.util.ArrayList$Itr.checkForComodification(ArrayList.java:909)
at java.util.ArrayList$Itr.next(ArrayList.java:859)
at soot.SootClass.getMethodsByNameAndParamCount(SootClass.java:1319)
at soot.FastHierarchy.getSignaturePolymorphicMethod(FastHierarchy.java:982)
at soot.FastHierarchy.resolveMethod(FastHierarchy.java:881)
at soot.FastHierarchy.resolveMethod(FastHierarchy.java:832)
at soot.SootMethodRefImpl.tryResolve(SootMethodRefImpl.java:229)
at soot.SootMethodRefImpl.resolve(SootMethodRefImpl.java:275)
at soot.SootMethodRefImpl.resolve(SootMethodRefImpl.java:207)
at soot.jimple.internal.AbstractInvokeExpr.getMethod(AbstractInvokeExpr.java:60)
at soot.jimple.validation.InvokeArgumentValidator.validate(InvokeArgumentValidator.java:61)
at soot.jimple.JimpleBody.validate(JimpleBody.java:132)
at soot.jimple.JimpleBody.validate(JimpleBody.java:114)
at com.jordansamhi.androspecter.instrumentation.Logger.addLogStatement(Logger.java:150)
at com.jordansamhi.androspecter.instrumentation.Logger.addLogToMethod(Logger.java:223)
at com.jordansamhi.androspecter.instrumentation.Logger.lambda$logAllMethods$2(Logger.java:245)
at com.jordansamhi.androspecter.instrumentation.Logger$1.internalTransform(Logger.java:104)
at soot.BodyTransformer.transform(BodyTransformer.java:47)
at soot.Transform.apply(Transform.java:126)
at soot.BodyPack.internalApply(BodyPack.java:49)
at soot.Pack.apply(Pack.java:126)
at soot.PackManager.runBodyPacks(PackManager.java:992)
at soot.PackManager.lambda$runBodyPacks$0(PackManager.java:667)
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:748)
java.util.ConcurrentModificationException
at java.util.ArrayList$Itr.checkForComodification(ArrayList.java:909)
at java.util.ArrayList$Itr.next(ArrayList.java:859)
at soot.SootClass.getMethodsByNameAndParamCount(SootClass.java:1319)
at soot.FastHierarchy.getSignaturePolymorphicMethod(FastHierarchy.java:982)
at soot.FastHierarchy.resolveMethod(FastHierarchy.java:881)
at soot.FastHierarchy.resolveMethod(FastHierarchy.java:832)
at soot.SootMethodRefImpl.tryResolve(SootMethodRefImpl.java:229)
at soot.SootMethodRefImpl.resolve(SootMethodRefImpl.java:275)
at soot.SootMethodRefImpl.resolve(SootMethodRefImpl.java:207)
at soot.jimple.internal.AbstractInvokeExpr.getMethod(AbstractInvokeExpr.java:60)
at soot.jimple.validation.InvokeArgumentValidator.validate(InvokeArgumentValidator.java:61)
at soot.jimple.JimpleBody.validate(JimpleBody.java:132)
at soot.jimple.JimpleBody.validate(JimpleBody.java:114)
at com.jordansamhi.androspecter.instrumentation.Logger.addLogStatement(Logger.java:150)
at com.jordansamhi.androspecter.instrumentation.Logger.addLogToMethod(Logger.java:223)
at com.jordansamhi.androspecter.instrumentation.Logger.lambda$logAllMethods$2(Logger.java:245)
at com.jordansamhi.androspecter.instrumentation.Logger$1.internalTransform(Logger.java:104)
at soot.BodyTransformer.transform(BodyTransformer.java:47)
at soot.Transform.apply(Transform.java:126)
at soot.BodyPack.internalApply(BodyPack.java:49)
at soot.Pack.apply(Pack.java:126)
at soot.PackManager.runBodyPacks(PackManager.java:992)
at soot.PackManager.lambda$runBodyPacks$0(PackManager.java:667)
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:748)
java.util.ConcurrentModificationException
at java.util.ArrayList$Itr.checkForComodification(ArrayList.java:909)
at java.util.ArrayList$Itr.next(ArrayList.java:859)
at soot.SootClass.getMethodsByNameAndParamCount(SootClass.java:1319)
at soot.FastHierarchy.getSignaturePolymorphicMethod(FastHierarchy.java:982)
at soot.FastHierarchy.resolveMethod(FastHierarchy.java:881)
at soot.FastHierarchy.resolveMethod(FastHierarchy.java:832)
at soot.SootMethodRefImpl.tryResolve(SootMethodRefImpl.java:229)
at soot.SootMethodRefImpl.resolve(SootMethodRefImpl.java:275)
at soot.SootMethodRefImpl.resolve(SootMethodRefImpl.java:207)
at soot.jimple.internal.AbstractInvokeExpr.getMethod(AbstractInvokeExpr.java:60)
at soot.jimple.validation.InvokeArgumentValidator.validate(InvokeArgumentValidator.java:61)
at soot.jimple.JimpleBody.validate(JimpleBody.java:132)
at soot.jimple.JimpleBody.validate(JimpleBody.java:114)
at com.jordansamhi.androspecter.instrumentation.Logger.addLogStatement(Logger.java:150)
at com.jordansamhi.androspecter.instrumentation.Logger.addLogToMethod(Logger.java:223)
at com.jordansamhi.androspecter.instrumentation.Logger.lambda$logAllMethods$2(Logger.java:245)
at com.jordansamhi.androspecter.instrumentation.Logger$1.internalTransform(Logger.java:104)
at soot.BodyTransformer.transform(BodyTransformer.java:47)
at soot.Transform.apply(Transform.java:126)
at soot.BodyPack.internalApply(BodyPack.java:49)
at soot.Pack.apply(Pack.java:126)
at soot.PackManager.runBodyPacks(PackManager.java:992)
at soot.PackManager.lambda$runBodyPacks$0(PackManager.java:667)
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:748)