NullPointerException in RecordDefUse due to JSR/Ret

Issue #141 resolved
errt created an issue

With the fixes for issue #140 applied, the following error occurs on galleon-2.3.0 (attached file) from XCorpus:

java.lang.NullPointerException
    at org.opalj.ai.domain.RecordDefUse.operandOrigin(RecordDefUse.scala:179)
    at org.opalj.ai.domain.RecordDefUse.operandOrigin$(RecordDefUse.scala:179)
    at org.opalj.ai.domain.l1.DefaultDomainWithCFGAndDefUse.operandOrigin(DefaultDomain.scala:83)
    at org.opalj.tac.TACAI$.operandUse$1(TACAI.scala:355)
    at org.opalj.tac.TACAI$.apply(TACAI.scala:856)
    at org.opalj.tac.DefaultTACAIKey$.computeAndCacheTAC$1(DefaultTACAIKey.scala:77)
    at org.opalj.tac.DefaultTACAIKey$.$anonfun$compute$1(DefaultTACAIKey.scala:94)
    at org.opalj.fpcf.analyses.L2PurityAnalysis.determinePurity(L2PurityAnalysis.scala:351)
    at org.opalj.fpcf.analyses.L2PurityAnalysis$.$anonfun$start$1(L2PurityAnalysis.scala:427)
    at org.opalj.fpcf.LockBasedPropertyStore.$anonfun$scheduleComputation$1(LockBasedPropertyStore.scala:1417)
    at org.opalj.fpcf.LockBasedPropertyStore$$anon$4.run(LockBasedPropertyStore.scala:1454)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)

Comments (10)

  1. Michael Eichberg repo owner

    The problem can be recreated using: AbstractInterpretationFramework/run -cp path\to\bin.zip -domain org.opalj.ai.domain.l1.DefaultDomainWithCFGAndDefUse -class org.lnicholls.galleon.togo.ToGo -method getRecordings

    (Note: the AI runs, but the def-use information for the second athrow is missing and this will crash the TAC conversion, because the underlying instruction is NOT dead!)

  2. errt reporter

    Attaching another class file (UpdatableResultSet.class) from the MySQL JDBC connector that also because of JSR/RET shows the same problem in method extractDefaultValues().

  3. Log in to comment