-
Notifications
You must be signed in to change notification settings - Fork 52
Open
Description
I found a problem when asking for a model iterator in Mathsat5 using CPAchecker.
It takes about 600s to get to the error and this was executed using this branch and commit 7273036c8b6c3540acd15f45681b26cbd429038f.
Possibly related to #208 ?
bin/cpachecker --heap 10000M --benchmark --timelimit '900 s' --symbolicExecution-Cegar --option analysis.traversal.order=dfs --stats --spec test/sv-benchmarks/c/properties/unreach-call.prp --32 test/sv-benchmarks/c/hardness-nfm22/hardness_variablewrapping_wrapper-ap_file-14.i
--------------------------------------------------------------------------------
Running CPAchecker with Java heap of size 10000M.
Running CPAchecker with default stack size (1024k). Specify a larger value with --stack if needed.
Language C detected and set for analysis (CPAMain.detectFrontendLanguageIfNecessary, INFO)
Using the following resource limits: CPU-time limit of 900s (ResourceLimitChecker.fromConfiguration, INFO)
CPAchecker 4.0-668-g7273036c8b / symbolicExecution-Cegar (OpenJDK 64-Bit Server VM 21.0.6) started (CPAchecker.run, INFO)
Parsing CFA from file(s) "test/sv-benchmarks/c/hardness-nfm22/hardness_variablewrapping_wrapper-ap_file-14.i" (CPAchecker.parse, INFO)
line 136: Dead code detected: return 0; (CFACreationUtils.addEdgeToCFA, INFO)
Starting analysis ... (CPAchecker.runAlgorithm, INFO)
// ... removed some useless info ...
Error path found, starting counterexample check with CPACHECKER. (CounterexampleCheckAlgorithm.checkCounterexample, INFO)
Using predicate analysis with MathSAT5 version 5.6.10 (9293adc746be) (May 31 2023 12:38:06, gmp 6.2.0, gcc 7.5.0, 64-bit, reentrant). (CounterexampleCheck:PredicateCPA:PredicateCPA.<init>, INFO)
Error path found but identified as infeasible. (CounterexampleCheckAlgorithm.checkCounterexample, INFO)
Another infeasible counterexample found which could not be removed from the ARG. (ExceptionHandlingAlgorithm.handleExceptionWithErrorPath, INFO)
(not (bvslt ((_ sign_extend 16) (select *short_int@1 |signed_short_int_Array_0_arraysigned_short_int_Array_0Var3_Pointer#13@1|)) ((_ zero_extend 16) (select *short_int@1 |unsigned_short_int_Array_0_arrayunsigned_short_int_Array_0Var0_Pointer#14@1|))))
(bvslt |step::__CPAchecker_TMP_2#661@1| ((_ sign_extend 16) (select *short_int@1 |signed_short_int_Array_0_arraysigned_short_int_Array_0Var1_Pointer#11@1|)))
(= |signed_short_int_Array_0_arraysigned_short_int_Array_0Var1_Pointer#11@1| #b00000000000000000000000000000000)
(= #b00000000000000000000000000000010 ((_ zero_extend 16) (select *short_int@1 |unsigned_short_int_Array_0_arrayunsigned_short_int_Array_0Var0_Pointer#14@1|)))
(= |step::__CPAchecker_TMP_2#661@1| #b00000000000000000000000000000010)
(= (select *short_int@1 #b00000000000000000000000000000000) #b0000000000000010)
(= (select *short_int@1 |signed_short_int_Array_0_arraysigned_short_int_Array_0Var3_Pointer#13@1|) #b0000000000000010)
(= #b00000000000000000000000000000010 ((_ sign_extend 16) (select *short_int@1 #b00000000000000000000000000000000)))
Exception in thread "main" java.lang.IllegalArgumentException: MathSAT returned null
at org.sosy_lab.java_smt.solvers.mathsat5.Mathsat5NativeApi.msat_model_create_iterator(Native Method)
at org.sosy_lab.java_smt.solvers.mathsat5.Mathsat5Model.asList(Mathsat5Model.java:56)
at org.sosy_lab.java_smt.basicimpl.CachingModel.asList(CachingModel.java:40)
at org.sosy_lab.java_smt.api.BasicProverEnvironment.getModelAssignments(BasicProverEnvironment.java:112)
at org.sosy_lab.cpachecker.util.predicates.smt.BasicProverEnvironmentView.getModelAssignments(BasicProverEnvironmentView.java:71)
at org.sosy_lab.cpachecker.cpa.constraints.domain.ConstraintsSolver.checkUnsat(ConstraintsSolver.java:267)
at org.sosy_lab.cpachecker.cpa.constraints.ConstraintsTransferRelation.getIfSatisfiable(ConstraintsTransferRelation.java:335)
at org.sosy_lab.cpachecker.cpa.constraints.ConstraintsTransferRelation$ValueAnalysisStrengthenOperator.strengthen(ConstraintsTransferRelation.java:386)
at org.sosy_lab.cpachecker.cpa.constraints.ConstraintsTransferRelation.strengthen(ConstraintsTransferRelation.java:303)
at org.sosy_lab.cpachecker.cpa.value.symbolic.refiner.ValueTransferBasedStrongestPostOperator.strengthenConstraintsState(ValueTransferBasedStrongestPostOperator.java:204)
at org.sosy_lab.cpachecker.cpa.value.symbolic.refiner.ValueTransferBasedStrongestPostOperator.getStrongestPost(ValueTransferBasedStrongestPostOperator.java:111)
at org.sosy_lab.cpachecker.cpa.value.symbolic.refiner.ValueTransferBasedStrongestPostOperator.getStrongestPost(ValueTransferBasedStrongestPostOperator.java:43)
at org.sosy_lab.cpachecker.util.refinement.StrongestPostOperator.step(StrongestPostOperator.java:88)
at org.sosy_lab.cpachecker.util.refinement.GenericFeasibilityChecker.isFeasible(GenericFeasibilityChecker.java:94)
at org.sosy_lab.cpachecker.util.refinement.GenericFeasibilityChecker.isFeasible(GenericFeasibilityChecker.java:80)
at org.sosy_lab.cpachecker.util.refinement.GenericFeasibilityChecker.isFeasible(GenericFeasibilityChecker.java:32)
at org.sosy_lab.cpachecker.cpa.value.symbolic.refiner.ElementTestingSymbolicEdgeInterpolator.isPathFeasible(ElementTestingSymbolicEdgeInterpolator.java:182)
at org.sosy_lab.cpachecker.cpa.value.symbolic.refiner.ElementTestingSymbolicEdgeInterpolator$ValuesOnlyReducer.reduce(ElementTestingSymbolicEdgeInterpolator.java:210)
at org.sosy_lab.cpachecker.cpa.value.symbolic.refiner.ElementTestingSymbolicEdgeInterpolator$ConstraintsFirstReducer.reduce(ElementTestingSymbolicEdgeInterpolator.java:262)
at org.sosy_lab.cpachecker.cpa.value.symbolic.refiner.ElementTestingSymbolicEdgeInterpolator$AvoidConstraintsReducer.reduce(ElementTestingSymbolicEdgeInterpolator.java:288)
at org.sosy_lab.cpachecker.cpa.value.symbolic.refiner.ElementTestingSymbolicEdgeInterpolator.deriveInterpolant(ElementTestingSymbolicEdgeInterpolator.java:167)
at org.sosy_lab.cpachecker.cpa.value.symbolic.refiner.ElementTestingSymbolicEdgeInterpolator.deriveInterpolant(ElementTestingSymbolicEdgeInterpolator.java:46)
at org.sosy_lab.cpachecker.util.refinement.GenericPathInterpolator.performEdgeBasedInterpolation(GenericPathInterpolator.java:209)
at org.sosy_lab.cpachecker.util.refinement.GenericPathInterpolator.performInterpolation(GenericPathInterpolator.java:133)
at org.sosy_lab.cpachecker.util.refinement.GenericRefiner.performPathInterpolation(GenericRefiner.java:260)
at org.sosy_lab.cpachecker.util.refinement.GenericRefiner.obtainInterpolants(GenericRefiner.java:222)
at org.sosy_lab.cpachecker.util.refinement.GenericRefiner.performRefinementForPath(GenericRefiner.java:203)
at org.sosy_lab.cpachecker.cpa.value.symbolic.refiner.SymbolicValueAnalysisRefiner.performRefinementForPath(SymbolicValueAnalysisRefiner.java:250)
at org.sosy_lab.cpachecker.cpa.arg.AbstractARGBasedRefiner.performRefinementForPath(AbstractARGBasedRefiner.java:158)
at org.sosy_lab.cpachecker.cpa.arg.AbstractARGBasedRefiner.performRefinement(AbstractARGBasedRefiner.java:104)
at org.sosy_lab.cpachecker.core.algorithm.CEGARAlgorithm.refine(CEGARAlgorithm.java:307)
at org.sosy_lab.cpachecker.core.algorithm.CEGARAlgorithm.run(CEGARAlgorithm.java:253)
at org.sosy_lab.cpachecker.core.algorithm.counterexamplecheck.CounterexampleCheckAlgorithm.run(CounterexampleCheckAlgorithm.java:144)
at org.sosy_lab.cpachecker.core.algorithm.ExceptionHandlingAlgorithm.run(ExceptionHandlingAlgorithm.java:147)
at org.sosy_lab.cpachecker.core.algorithm.CounterexampleStoreAlgorithm.run(CounterexampleStoreAlgorithm.java:58)
at org.sosy_lab.cpachecker.core.CPAchecker.runAlgorithm(CPAchecker.java:534)
at org.sosy_lab.cpachecker.core.CPAchecker.run0(CPAchecker.java:393)
at org.sosy_lab.cpachecker.core.CPAchecker.run(CPAchecker.java:302)
at org.sosy_lab.cpachecker.cmdline.CPAMain.main(CPAMain.java:170)