Abstract

Software verification is a type of activity focused on software quality control and detection of errors in software. Static verification is verification without the execution of software source code. Special software - tools for static verification - often work with program's source code. One of the tools that can be used for static verification is a tool called CPAchecker. The problem of the current memory model used by the tool is that if a function returning a pointer to program's memory lacks a body, arbitrary assumptions can be made about this function return value in the process of verification. Although possible, the assumptions are often also practically very improbable. Their usage may lead to a false alarm. In this paper we give an overview of the approach capable of resolving this issue and its formal specification in terms of path formulas based on the uninterpreted functions used by the tool for memory modeling. We also present results of benchmarking the corresponding implementation against existing memory model.

Highlights

  • Software verification is a type of activity focused on software quality control and detection of errors in software [1]

  • Static verification is a verification without the execution of software source code

  • It consists of the uninterpreted function G that is used for accessing a memory location in global region, a finite number of uninterpreted functions F, where each function F represents the state of the memory region corresponding to lvalues of the form b → f, i = 1, n and the uninterpreted

Read more

Summary

Introduction

Software verification is a type of activity focused on software quality control and detection of errors in software [1]. Static verification is a verification without the execution of software source code. ISP RAS, vol 29, issue 4, 2017, pp. Special software – tools for static verification – often work with program’s source code. Depending on the tools used for static verification it is possible to conduct analysis of the source code to search for errors in program’s behavior. One of the tools that can be used for static verification is a tool called CPAchecker. It takes program’s source code as an input, creates a CFA (control-flow automaton) and uses it to run the analysis. Its strong side is that the CPA (configurable program analysis) [2] concept allows to use a composition of several analyses for program verification. The tandem of Value Analysis and Predicate Analysis produces good results in terms of verification precision / verification time ratio

Definitions and notations
CPAchecker’s memory model
Memory model overview
Formal specification
Example
Experiments
False alarm set
SV-COMP’17 DeviceDrivers64
Conclusion
Full Text
Paper version not known

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call