data-flow analysis using the most primitive domain fails for MySQL
Issue #111
resolved
Generated Mon Sep 11 22:18:37 CEST 2017
jar:file:/Users/Michael/Desktop/com_mysql.jdbc_5.1.5.jar!/com/mysql/jdbc/ServerPreparedStatement.class
Number of thrown exceptions: 1
com/mysql/jdbc/ServerPreparedStatement "public int[] executeBatch()"
Length: 529
anon$1 the interpretation failed
org.opalj.ai.InterpretationFailedException$ apply 81
org.opalj.ai.AI throwInterpretationFailedException$1 574
org.opalj.ai.AI continueInterpretation 2580
org.opalj.ai.AI continueInterpretation 381
org.opalj.ai.AI performInterpretation 357
org.opalj.ai.AI perform 328
org.opalj.ai.AI apply 195
org.opalj.ai.debug.InterpretMethodsAnalysis$$anonfun$1 apply$mcJ$sp 177
org.opalj.ai.debug.InterpretMethodsAnalysis$$anonfun$1 apply 174
org.opalj.ai.debug.InterpretMethodsAnalysis$$anonfun$1 apply 174
org.opalj.util.PerformanceEvaluation time 66
org.opalj.ai.debug.InterpretMethodsAnalysis$ org$opalj$ai$debug$InterpretMethodsAnalysis$$analyzeMethod$1 174
org.opalj.ai.debug.InterpretMethodsAnalysis$$anonfun$3$$anonfun$apply$1 apply 230
org.opalj.ai.debug.InterpretMethodsAnalysis$$anonfun$3$$anonfun$apply$1 apply 229
org.opalj.concurrent.package$$anonfun$parForeachArrayElement$1 apply$mcV$sp 240
org.opalj.concurrent.package$$anonfun$parForeachArrayElement$1 apply 235
org.opalj.concurrent.package$$anonfun$parForeachArrayElement$1 apply 235
scala.concurrent.impl.Future$PromiseCompletingRunnable liftedTree1$1 24
scala.concurrent.impl.Future$PromiseCompletingRunnable run 24
java.util.concurrent.ThreadPoolExecutor runWorker 1149
java.util.concurrent.ThreadPoolExecutor$Worker run 624
java.lang.Thread run 748
caused by:
ClassCastException org.opalj.ai.ValuesDomain$IllegalValue cannot be cast to org.opalj.ai.ValuesDomain$ReferenceValue
org.opalj.ai.domain.l0.TypeLevelReferenceValues$class asReferenceValue 486
org.opalj.ai.domain.l0.PrimitiveTACAIDomain asReferenceValue 42
org.opalj.ai.domain.l0.TypeLevelReferenceValues$class refIsNull 574
org.opalj.ai.domain.l0.PrimitiveTACAIDomain refIsNull 42
org.opalj.ai.AI$$anonfun$continueInterpretation$6 apply 1666
org.opalj.ai.AI$$anonfun$continueInterpretation$6 apply 1666
org.opalj.ai.AI ifXX$1 1192
org.opalj.ai.AI continueInterpretation 1666
org.opalj.ai.AI continueInterpretation 381
org.opalj.ai.AI performInterpretation 357
org.opalj.ai.AI perform 328
org.opalj.ai.AI apply 195
org.opalj.ai.debug.InterpretMethodsAnalysis$$anonfun$1 apply$mcJ$sp 177
org.opalj.ai.debug.InterpretMethodsAnalysis$$anonfun$1 apply 174
org.opalj.ai.debug.InterpretMethodsAnalysis$$anonfun$1 apply 174
org.opalj.util.PerformanceEvaluation time 66
org.opalj.ai.debug.InterpretMethodsAnalysis$ org$opalj$ai$debug$InterpretMethodsAnalysis$$analyzeMethod$1 174
org.opalj.ai.debug.InterpretMethodsAnalysis$$anonfun$3$$anonfun$apply$1 apply 230
org.opalj.ai.debug.InterpretMethodsAnalysis$$anonfun$3$$anonfun$apply$1 apply 229
org.opalj.concurrent.package$$anonfun$parForeachArrayElement$1 apply$mcV$sp 240
org.opalj.concurrent.package$$anonfun$parForeachArrayElement$1 apply 235
org.opalj.concurrent.package$$anonfun$parForeachArrayElement$1 apply 235
scala.concurrent.impl.Future$PromiseCompletingRunnable liftedTree1$1 24
scala.concurrent.impl.Future$PromiseCompletingRunnable run 24
java.util.concurrent.ThreadPoolExecutor runWorker 1149
java.util.concurrent.ThreadPoolExecutor$Worker run 624
java.lang.Thread run 748
Comments (3)
-
repo owner -
repo owner - changed status to resolved
fixed issue 111
→ <<cset 4d66ccd2040c>>
-
repo owner - removed version
Removing version: 0.8.16 (automated comment)
- Log in to comment
The reason – in the above case(!) – is the lacking understanding of the type hierarchy if the JDK is not loaded. If the JDK is not loaded, a "get field" which may throw a NullPointerException may lead to the execution of an "XXXHandler" (here: SQLExceptionHandler).... which is total non-sense and will lead to a corrupt state.
In other words, the above issue does not appear if the JDK is also loaded.