Academic Journal

Static Verification Tools for C Programs and Linux Device Drivers: A Survey

Bibliographic Details
Title: Static Verification Tools for C Programs and Linux Device Drivers: A Survey
Authors: Vadim Mutilin, Mikhail Mandrykin, Alexey Khoroshilov, Evgeny Novikov
Source: Труды Института системного программирования РАН, Vol 22, Iss 0 (2018)
Publisher Information: Institute for System Programming of the Russian Academy of Sciences, 2012.
Publication Year: 2012
Subject Terms: драйвер устройства, статический анализ, Electronic computers. Computer science, 0103 physical sciences, 0202 electrical engineering, electronic engineering, information engineering, операционная система linux, 02 engineering and technology, QA75.5-76.95, 01 natural sciences, верификация
Description: The survey considers methods and techniques used in modern static verification tools for C programs. It describes two main approaches Counter Example Guided Abstraction Refinement (CEGAR) and Bounded Model Checking (BMC) and techniques used to efficiently implement them such as Predicate Abstraction, Abstract Reachability Tree, Lazy Abstraction, Configurable Program Analysis, Explicit Analysis, Interpolation, and Shape Analysis. The paper also discusses current capabilities of the tools such as supported C programming language constructs, scalability, properties being checked, and trustworthiness of analysis results.We provide description of such static verification tools, as BLAST, CPAchecker, HSF(C), SATABS, SLAM, WOLVERINE, YOGI, CBMC, ESBMC, LLBMC, FSHELL and PREDATOR. This description shows techniques implemented in these tools and their current capabilities. The paper presents results of the 1st International Competition on Software Verification in category DeviceDrivers64 which contains verification tasks based on device drivers from Linux kernel 3.0.Specifics of device drivers verification are discussed and existing driver verification systems are described including Microsoft SDV for Windows operating system and DDVerify, Avinux and Linux Driver Verification for Linux.The paper concludes that BMC-based tools work well for programs of limited size and control flow complexity. Regarding verification of device drivers that means these tools are able to quickly find violations of properties being checked if paths to these violations are quite short, but they mostly fail to prove correctness and to find complicated bugs. CEGAR-based tools demonstrate better scalability, while they have problems with handling address arithmetic and complex memory structures. For future improvements in static verification of C programs and Linux device drivers we propose composition of various techniques and modularization of analysis.
Document Type: Article
Other literature type
ISSN: 2220-6426
2079-8156
DOI: 10.15514/ispras-2012-22-17
Access URL: http://ispras.ru/proceedings/docs/2012/22/isp_22_2012_293.pdf
https://doaj.org/article/3f36f1c8121d4dbbbc5a1ef48f7a881c
Rights: CC BY
Accession Number: edsair.doi.dedup.....8c29eabb9ee5b90a6f43b0d0595b624c
Database: OpenAIRE
Description
ISSN:22206426
20798156
DOI:10.15514/ispras-2012-22-17