Errors running BugPicker

Issue #124 resolved
errt
created an issue

Running the BugPicker's Console class on OPAL, I get a large number of errors of several types.

Examples:

[error][string constants information] collecting string constants information failed
[error][string constants information] class scala.MatchError: LoadClass(ObjectType(java/lang/Object)) (of class org.opalj.br.instructions.LoadClass)
[error][string constants information]   org.opalj.br.analyses.StringConstantsInformationKey$.$anonfun$compute$2(StringConstantsInformationKey.scala:79)
[error][string constants information]   org.opalj.br.analyses.StringConstantsInformationKey$.$anonfun$compute$2$adapted(StringConstantsInformationKey.scala:75)
[error][string constants information]   org.opalj.br.Code.iterate(Code.scala:702)
[error][string constants information]   org.opalj.br.analyses.StringConstantsInformationKey$.$anonfun$compute$1(StringConstantsInformationKey.scala:75)
[error][string constants information]   org.opalj.br.analyses.StringConstantsInformationKey$.$anonfun$compute$1$adapted(StringConstantsInformationKey.scala:72)
[error][string constants information]   org.opalj.concurrent.package$.$anonfun$parForeachArrayElement$2(package.scala:240)
[error][string constants information]   scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:12)
[error][string constants information]   scala.concurrent.Future$.$anonfun$apply$1(Future.scala:655)
[error][string constants information]   scala.util.Success.$anonfun$map$1(Try.scala:251)
[error][string constants information]   scala.util.Success.map(Try.scala:209)
[error][string constants information]   scala.concurrent.Future.$anonfun$map$1(Future.scala:289)
[error][string constants information]   scala.concurrent.impl.Promise.liftedTree1$1(Promise.scala:29)
[error][string constants information]   scala.concurrent.impl.Promise.$anonfun$transform$1(Promise.scala:29)
[error][string constants information]   scala.concurrent.impl.CallbackRunnable.run(Promise.scala:60)
[error][string constants information]   java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
[error][string constants information]   java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
[error][string constants information]   java.lang.Thread.run(Thread.java:748)

Note that these errors are not restricted to LoadClass, but also appear for other types, including Class_W, Int, Int_W and Float.

[error][internal, project configuration] resolving the method reference resulted in an exception: class scala.tools.asm.util.CheckClassAdapter{ /*non virtual*/ char getChar(java.lang.String,int)}
[error][internal, project configuration] class java.lang.StackOverflowError: null
[error][internal, project configuration]    org.opalj.ai.AI.continueInterpretation(AI.scala:502)
[error][internal, project configuration]    org.opalj.ai.AI.continueInterpretation(AI.scala:387)
[error][internal, project configuration]    org.opalj.ai.AI.performInterpretation(AI.scala:360)
[error][internal, project configuration]    org.opalj.ai.domain.l2.PerformInvocations.doInvoke(PerformInvocations.scala:84)
[error][internal, project configuration]    org.opalj.ai.domain.l2.PerformInvocations.doInvoke$(PerformInvocations.scala:76)
[error][internal, project configuration]    org.opalj.bugpicker.core.analyses.InvocationBugPickerAnalysisDomain.org$opalj$bugpicker$core$analyses$BasePerformInvocationBugPickerAnalysisDomain$$super$doInvoke(BugPickerAnalysisDomain.scala:205)
[error][internal, project configuration]    org.opalj.bugpicker.core.analyses.BasePerformInvocationBugPickerAnalysisDomain.doInvoke(BugPickerAnalysisDomain.scala:134)
[error][internal, project configuration]    org.opalj.bugpicker.core.analyses.BasePerformInvocationBugPickerAnalysisDomain.doInvoke$(BugPickerAnalysisDomain.scala:128)
[error][internal, project configuration]    org.opalj.bugpicker.core.analyses.InvocationBugPickerAnalysisDomain.doInvoke(BugPickerAnalysisDomain.scala:205)
[error][internal, project configuration]    org.opalj.bugpicker.core.analyses.InvocationBugPickerAnalysisDomain.doInvoke(BugPickerAnalysisDomain.scala:205)
[error][internal, project configuration]    org.opalj.ai.domain.l2.PerformInvocations.doInvoke(PerformInvocations.scala:176)
[error][internal, project configuration]    org.opalj.ai.domain.l2.PerformInvocations.doInvoke$(PerformInvocations.scala:161)
[error][internal, project configuration]    org.opalj.bugpicker.core.analyses.InvocationBugPickerAnalysisDomain.org$opalj$ai$domain$l2$PerformInvocationsWithRecursionDetection$$super$doInvoke(BugPickerAnalysisDomain.scala:205)
[error][internal, project configuration]    org.opalj.ai.domain.l2.PerformInvocationsWithRecursionDetection.doInvoke(PerformInvocationsWithRecursionDetection.scala:69)
[error][internal, project configuration]    org.opalj.ai.domain.l2.PerformInvocationsWithRecursionDetection.doInvoke$(PerformInvocationsWithRecursionDetection.scala:59)
[error][internal, project configuration]    org.opalj.bugpicker.core.analyses.InvocationBugPickerAnalysisDomain.org$opalj$bugpicker$core$analyses$BasePerformInvocationBugPickerAnalysisDomain$$super$doInvoke(BugPickerAnalysisDomain.scala:205)
[error][internal, project configuration]    org.opalj.bugpicker.core.analyses.BasePerformInvocationBugPickerAnalysisDomain.doInvoke(BugPickerAnalysisDomain.scala:162)
[error][internal, project configuration]    org.opalj.bugpicker.core.analyses.BasePerformInvocationBugPickerAnalysisDomain.doInvoke$(BugPickerAnalysisDomain.scala:156)
[error][internal, project configuration]    org.opalj.bugpicker.core.analyses.InvocationBugPickerAnalysisDomain.doInvoke(BugPickerAnalysisDomain.scala:205)
[error][internal, project configuration]    org.opalj.ai.cg.MethodCallsDomainWithMethodLockup.doNonVirtualInvoke(MethodCallsDomainWithMethodLookup.scala:152)
[error][internal, project configuration]    org.opalj.ai.cg.MethodCallsDomainWithMethodLockup.doNonVirtualInvoke$(MethodCallsDomainWithMethodLookup.scala:123)
[error][internal, project configuration]    org.opalj.bugpicker.core.analyses.InvocationBugPickerAnalysisDomain.doNonVirtualInvoke(BugPickerAnalysisDomain.scala:205)
[error][internal, project configuration]    org.opalj.ai.cg.MethodCallsDomainWithMethodLockup.invokestatic(MethodCallsDomainWithMethodLookup.scala:263)
[error][internal, project configuration]    org.opalj.ai.cg.MethodCallsDomainWithMethodLockup.invokestatic$(MethodCallsDomainWithMethodLookup.scala:246)
[error][internal, project configuration]    org.opalj.bugpicker.core.analyses.InvocationBugPickerAnalysisDomain.org$opalj$ai$domain$SpecialMethodsHandling$$super$invokestatic(BugPickerAnalysisDomain.scala:205)
[error][internal, project configuration]    org.opalj.ai.domain.SpecialMethodsHandling.invokestatic(SpecialMethodsHandling.scala:71)
[error][internal, project configuration]    org.opalj.ai.domain.SpecialMethodsHandling.invokestatic$(SpecialMethodsHandling.scala:58)
[error][internal, project configuration]    org.opalj.bugpicker.core.analyses.InvocationBugPickerAnalysisDomain.org$opalj$ai$domain$l2$PerformInvocations$$super$invokestatic(BugPickerAnalysisDomain.scala:205)
[error][internal, project configuration]    org.opalj.ai.domain.l2.PerformInvocations.fallback$4(PerformInvocations.scala:343)
[error][internal, project configuration]    org.opalj.ai.domain.l2.PerformInvocations.$anonfun$invokestatic$1(PerformInvocations.scala:345)
[error][internal, project configuration]    org.opalj.ai.domain.l2.PerformInvocations.testAndDoInvoke(PerformInvocations.scala:202)
[error][internal, project configuration]    org.opalj.ai.domain.l2.PerformInvocations.testAndDoInvoke$(PerformInvocations.scala:184)
[error][internal, project configuration]    org.opalj.bugpicker.core.analyses.InvocationBugPickerAnalysisDomain.testAndDoInvoke(BugPickerAnalysisDomain.scala:205)
[error][internal, project configuration]    org.opalj.ai.domain.l2.PerformInvocations.doInvokeNonVirtual(PerformInvocations.scala:233)
[error][internal, project configuration]    org.opalj.ai.domain.l2.PerformInvocations.doInvokeNonVirtual$(PerformInvocations.scala:216)
[error][internal, project configuration]    org.opalj.bugpicker.core.analyses.InvocationBugPickerAnalysisDomain.doInvokeNonVirtual(BugPickerAnalysisDomain.scala:205)
[error][internal, project configuration]    org.opalj.ai.domain.l2.PerformInvocations.invokestatic(PerformInvocations.scala:345)
[error][internal, project configuration]    org.opalj.ai.domain.l2.PerformInvocations.invokestatic$(PerformInvocations.scala:334)
[error][internal, project configuration]    org.opalj.bugpicker.core.analyses.InvocationBugPickerAnalysisDomain.org$opalj$ai$domain$l1$ClassValues$$super$invokestatic(BugPickerAnalysisDomain.scala:205)
[error][internal, project configuration]    org.opalj.ai.domain.l1.ClassValues.invokestatic(ClassValues.scala:209)
[error][internal, project configuration]    org.opalj.ai.domain.l1.ClassValues.invokestatic$(ClassValues.scala:177)
[error][internal, project configuration]    org.opalj.bugpicker.core.analyses.InvocationBugPickerAnalysisDomain.invokestatic(BugPickerAnalysisDomain.scala:205)
[error][internal, project configuration]    org.opalj.ai.AI.continueInterpretation(AI.scala:2183)
[error][internal, project configuration]    org.opalj.ai.AI.continueInterpretation(AI.scala:387)
[error][internal, project configuration]    org.opalj.ai.AI.performInterpretation(AI.scala:360)
[error][internal, project configuration]    org.opalj.ai.domain.l2.PerformInvocations.doInvoke(PerformInvocations.scala:84)
[error][internal, project configuration]    org.opalj.ai.domain.l2.PerformInvocations.doInvoke$(PerformInvocations.scala:76)
[...]

On one system. it additionally raises a few of these (apparently one per thread?):

[error][class file reader] processing org/opalj/graphs/package$.class failed
[error][class file reader] class java.lang.ClassCastException: null
[error][class file reader]  org.opalj.br.instructions.Instruction.asGotoInstruction(Instruction.scala:107)
[error][class file reader]  org.opalj.br.instructions.Instruction.asGotoInstruction$(Instruction.scala:107)
[error][class file reader]  org.opalj.br.instructions.NOP$.asGotoInstruction(NOP.scala:40)
[error][class file reader]  org.opalj.br.reader.BytecodeOptimizer.$anonfun$optimizeInstructions$7(BytecodeOptimizer.scala:440)
[error][class file reader]  scala.runtime.java8.JFunction1$mcVI$sp.apply(JFunction1$mcVI$sp.java:12)
[error][class file reader]  scala.collection.immutable.Set$Set1.foreach(Set.scala:95)
[error][class file reader]  org.opalj.br.reader.BytecodeOptimizer.optimizeInstructions(BytecodeOptimizer.scala:421)
[error][class file reader]  org.opalj.br.reader.BytecodeOptimizer.optimizeInstructions$(BytecodeOptimizer.scala:138)
[error][class file reader]  org.opalj.br.reader.Java8FrameworkWithCaching.optimizeInstructions(Java8FrameworkWithCaching.scala:42)
[error][class file reader]  org.opalj.br.reader.BytecodeOptimizer.$anonfun$Method_Info$1(BytecodeOptimizer.scala:129)
[error][class file reader]  org.opalj.br.reader.BytecodeOptimizer.$anonfun$Method_Info$1$adapted(BytecodeOptimizer.scala:128)
[error][class file reader]  scala.Option.foreach(Option.scala:257)
[error][class file reader]  org.opalj.br.reader.BytecodeOptimizer.Method_Info(BytecodeOptimizer.scala:128)
[error][class file reader]  org.opalj.br.reader.BytecodeOptimizer.Method_Info$(BytecodeOptimizer.scala:121)
[error][class file reader]  org.opalj.br.reader.Java8FrameworkWithCaching.Method_Info(Java8FrameworkWithCaching.scala:42)
[error][class file reader]  org.opalj.br.reader.Java8FrameworkWithCaching.Method_Info(Java8FrameworkWithCaching.scala:42)
[error][class file reader]  org.opalj.bi.reader.MethodsReader.Method_Info(MethodsReader.scala:87)
[error][class file reader]  org.opalj.bi.reader.MethodsReader.Methods(MethodsReader.scala:77)
[error][class file reader]  org.opalj.bi.reader.MethodsReader.Methods$(MethodsReader.scala:74)
[error][class file reader]  org.opalj.br.reader.Java8FrameworkWithCaching.Methods(Java8FrameworkWithCaching.scala:42)
[error][class file reader]  org.opalj.br.reader.Java8FrameworkWithCaching.Methods(Java8FrameworkWithCaching.scala:42)
[error][class file reader]  org.opalj.bi.reader.ClassFileReader.ClassFile(ClassFileReader.scala:264)
[error][class file reader]  org.opalj.bi.reader.ClassFileReader.ClassFile$(ClassFileReader.scala:236)
[error][class file reader]  org.opalj.br.reader.Java8FrameworkWithCaching.ClassFile(Java8FrameworkWithCaching.scala:42)
[error][class file reader]  org.opalj.bi.reader.ClassFileReader.$anonfun$ClassFile$3(ClassFileReader.scala:325)
[error][class file reader]  org.opalj.io.package$.process(package.scala:170)
[error][class file reader]  org.opalj.bi.reader.ClassFileReader.ClassFile(ClassFileReader.scala:324)
[error][class file reader]  org.opalj.bi.reader.ClassFileReader.ClassFile$(ClassFileReader.scala:323)
[error][class file reader]  org.opalj.br.reader.Java8FrameworkWithCaching.ClassFile(Java8FrameworkWithCaching.scala:42)
[error][class file reader]  org.opalj.bi.reader.ClassFileReader.$anonfun$ClassFiles$2(ClassFileReader.scala:448)
[error][class file reader]  scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:12)
[error][class file reader]  scala.concurrent.Future$.$anonfun$apply$1(Future.scala:655)
[error][class file reader]  scala.util.Success.$anonfun$map$1(Try.scala:251)
[error][class file reader]  scala.util.Success.map(Try.scala:209)
[error][class file reader]  scala.concurrent.Future.$anonfun$map$1(Future.scala:289)
[error][class file reader]  scala.concurrent.impl.Promise.liftedTree1$1(Promise.scala:29)
[error][class file reader]  scala.concurrent.impl.Promise.$anonfun$transform$1(Promise.scala:29)
[error][class file reader]  scala.concurrent.impl.CallbackRunnable.run(Promise.scala:60)
[error][class file reader]  java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
[error][class file reader]  java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
[error][class file reader]  java.lang.Thread.run(Thread.java:745)

Comments (7)

  1. Michael Eichberg repo owner

    Merge branch 'develop' into feature/MethodPurityAnalysis

    • develop: (254 commits) [fix] for method references using Boolean an exceptions was thrown when the code was rewritten [new] added method asBooleanType added hint regarding the usage of another domain fixed issue #127 [docs] improved [refactoring] improved the signature [todos] deleted an IMPROVE because there is nothing to improve [refactoring] we are now using toSet IntTrieSet methods are overridden improved the scaladoc fixes issue #124 fixed isIndexIsValid for array values forgotten commit.. improved asserts added several test cases related to array values and rnages refactored the ArrayValues domain and implemented sound support for tracking the length of arrays in common cases added remove regarding inefficient Option[Int] uses killed inefficient extractor added improve related to IntOption fixed comment ...

    → <<cset 131b7ac7d437>>

  2. Michael Eichberg repo owner

    Merge branch 'develop' into feature/VirtualFormalParameters

    • develop: (36 commits) improved handling for access flags [fix] for method references using Boolean an exceptions was thrown when the code was rewritten [new] added method asBooleanType added hint regarding the usage of another domain fixed issue #127 [docs] improved [refactoring] improved the signature [todos] deleted an IMPROVE because there is nothing to improve [refactoring] we are now using toSet IntTrieSet methods are overridden improved the scaladoc fixes issue #124 fixed isIndexIsValid for array values forgotten commit.. improved asserts added several test cases related to array values and rnages refactored the ArrayValues domain and implemented sound support for tracking the length of arrays in common cases added remove regarding inefficient Option[Int] uses killed inefficient extractor added improve related to IntOption ...

    → <<cset 776a6cb79781>>

  3. Log in to comment