Skip to content

High memory consumption for interior mutability function contract test  #3611

@zhassan-aws

Description

@zhassan-aws

This test: https://github.com/model-checking/kani/blob/main/tests/expected/function-contract/interior-mutability/whole-struct/refcell.rs

using the following command line invocation:

kani refcell.rs -Zfunction-contracts

with Kani version: 041beda

consumes more than 9 GB of memory and the solver instance includes a huge number of clauses/literals even though the size of the program expression is fairly small (~2K):

$ /usr/bin/time --verbose kani refcell.rs -Zfunction-contracts
...
Running with 16 object bits, 48 offset bits (user-specified)
Starting Bounded Model Checking
Runtime Symex: 0.0773892s
size of program expression: 2181 steps
slicing removed 1354 assignments
Generated 195 VCC(s), 37 remaining after simplification
Runtime Postprocess Equation: 0.000353808s
Passing problem to propositional reduction
converting SSA
Runtime Convert SSA: 19.0731s
Running propositional reduction
Post-processing
Runtime Post-process: 6.2e-06s
Solving with CaDiCaL 2.0.0
16918466 variables, 42087481 clauses
SAT checker: instance is SATISFIABLE
Runtime Solver: 4.70032s
Runtime decision procedure: 23.9866s
Running propositional reduction
Solving with CaDiCaL 2.0.0
16918467 variables, 42087482 clauses
SAT checker: instance is SATISFIABLE
Runtime Solver: 0.645725s
Runtime decision procedure: 0.860385s
Running propositional reduction
Solving with CaDiCaL 2.0.0
16918468 variables, 42087483 clauses
SAT checker: instance is SATISFIABLE
Runtime Solver: 0.643113s
Runtime decision procedure: 0.859491s
Running propositional reduction
Solving with CaDiCaL 2.0.0
16918469 variables, 42087484 clauses
SAT checker: instance is UNSATISFIABLE
Runtime Solver: 0.000550312s
Runtime decision procedure: 0.175352s
...

VERIFICATION:- SUCCESSFUL
Verification Time: 30.182495s

Complete - 1 successfully verified harnesses, 0 failures, 1 total.
	Command being timed: "kani refcell.rs -Zfunction-contracts"
	User time (seconds): 25.33
	System time (seconds): 8.08
	Percent of CPU this job got: 101%
	Elapsed (wall clock) time (h:mm:ss or m:ss): 0:33.07
	Average shared text size (kbytes): 0
	Average unshared data size (kbytes): 0
	Average stack size (kbytes): 0
	Average total size (kbytes): 0
	Maximum resident set size (kbytes): 9200340
	Average resident set size (kbytes): 0
	Major (requiring I/O) page faults: 0
	Minor (reclaiming a frame) page faults: 3457986
	Voluntary context switches: 1824
	Involuntary context switches: 99
	Swaps: 0
	File system inputs: 0
	File system outputs: 5496
	Socket messages sent: 0
	Socket messages received: 0
	Signals delivered: 0
	Page size (bytes): 4096
	Exit status: 0

Metadata

Metadata

Assignees

No one assigned

    Labels

    [C] BugThis is a bug. Something isn't working.[E] PerformanceTrack performance improvement (Time / Memory / CPU)

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions