Verification of Safety Functions Implemented in Rust - a Symbolic Execution based approach

被引:0
|
作者
Lindner, Marcus [1 ]
Fitinghoff, Nils [1 ]
Eriksson, Johan [1 ]
Lindgren, Per [1 ]
机构
[1] Lulea Univ Technol, Lulea, Sweden
关键词
D O I
10.1109/indin41052.2019.8972014
中图分类号
TP3 [计算技术、计算机技术];
学科分类号
0812 ;
摘要
Symbolic execution allows us to observe and assert properties of program code executing under (partially) unknown inputs and state. In this work we present a case study demonstrating that safety functions implemented in the Rust programming language can be verified by an assertion based approach. To this end, we leverage on previous developments adopting LLVM-KLEE for symbolic execution of Rust programs. In particular we show that reliability can be ensured by proven absence of undefined behavior and that safety properties (expressed as assertions) can be ensured for all reachable paths of the underlying implementation (under symbolic inputs). Moreover, the verification (besides stating assertions) is fully automatic and can be applied without any changes made to the implementation. While assertions have the advantage of being familiar to the mainstream programmer, they lack the expressiveness of dedicated logic developed for model checking. The paper also discusses complexity issues arising from path/state explosion inherent to symbolic execution. The feasibility of the approach is demonstrated on a representative use case implementing a safety function (equality) from the PLCopen library. We obtain complete path- (466) and state- (8) coverage in under 2 seconds for the given example on an i7-7700 laptop computer.
引用
收藏
页码:432 / 439
页数:8
相关论文
共 50 条
  • [1] No Panic! Verification of Rust Programs by Symbolic Execution
    Lindner, Marcus
    Aparicius, Jorge
    Lindgren, Per
    2018 IEEE 16TH INTERNATIONAL CONFERENCE ON INDUSTRIAL INFORMATICS (INDIN), 2018, : 108 - 114
  • [2] Symbolic Execution based Verification of Compliance with the ISO 26262 Functional Safety Standard
    Ahmed, Mazen
    Safar, Mona
    2019 14TH IEEE INTERNATIONAL CONFERENCE ON DESIGN & TECHNOLOGY OF INTEGRATED SYSTEMS IN NANOSCALE ERA (DTIS 2019), 2019,
  • [3] Embedded Software Verification Using Symbolic Execution and Uninterpreted Functions
    David Currie
    Xiushan Feng
    Masahiro Fujita
    Alan J. Hu
    Mark Kwan
    Sreeranga Rajan
    International Journal of Parallel Programming, 2006, 34 : 61 - 91
  • [4] Embedded software verification using symbolic execution and uninterpreted functions
    Currie, D
    Feng, XS
    Fujita, M
    Hu, AJ
    Kwan, M
    Rajan, S
    INTERNATIONAL JOURNAL OF PARALLEL PROGRAMMING, 2006, 34 (01) : 61 - 91
  • [5] AN ISOLATION APPROACH TO SYMBOLIC EXECUTION-BASED VERIFICATION OF ADA TASKING PROGRAMS
    DILLON, LK
    JOURNAL OF SYSTEMS AND SOFTWARE, 1991, 14 (03) : 183 - 198
  • [6] Sound Gradual Verification with Symbolic Execution
    Zimmerman, Conrad
    Divincenzo, Jenna
    Aldrich, Jonathan
    PROCEEDINGS OF THE ACM ON PROGRAMMING LANGUAGES-PACMPL, 2024, 8 (POPL): : 2547 - 2576
  • [7] VERIFICATION OF PROTOCOLS USING SYMBOLIC EXECUTION
    BRAND, D
    JOYNER, WH
    COMPUTER NETWORKS AND ISDN SYSTEMS, 1978, 2 (4-5): : 351 - 360
  • [8] VERIFICATION OF SYNCHRONOUS SEQUENTIAL-MACHINES BASED ON SYMBOLIC EXECUTION
    COUDERT, O
    BERTHET, C
    MADRE, JC
    LECTURE NOTES IN COMPUTER SCIENCE, 1990, 407 : 365 - 373
  • [9] The Symbolic Execution Debugger (SED): a platform for interactive symbolic execution, debugging, verification and more
    Martin Hentschel
    Richard Bubel
    Reiner Hähnle
    International Journal on Software Tools for Technology Transfer, 2019, 21 : 485 - 513
  • [10] The Symbolic Execution Debugger (SED): a platform for interactive symbolic execution, debugging, verification and more
    Hentschel, Martin
    Bubel, Richard
    Haehnle, Reiner
    INTERNATIONAL JOURNAL ON SOFTWARE TOOLS FOR TECHNOLOGY TRANSFER, 2019, 21 (05) : 485 - 513