Skip to content

MathSAT5 Returns Null for msat_model_create_iterator() #481

Description

@baierd

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)

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions