Applying Formal Verification to Microkernel IPC at Meta

被引:5
|
作者
Carbonneaux, Quentin [1 ]
Zilberstein, Noam [2 ,3 ]
Klee, Christoph [2 ]
O'Hearn, Peter W. [4 ,5 ]
Nardelli, Francesco Zappa [1 ]
机构
[1] Meta, Paris, France
[2] Meta, Menlo Pk, CA USA
[3] Cornell Univ, Ithaca, NY 14853 USA
[4] Meta, London, England
[5] UCL, London, England
基金
英国工程与自然科学研究理事会;
关键词
circular queue; concurrency; program verification; separation logic; systems;
D O I
10.1145/3497775.3503681
中图分类号
TP31 [计算机软件];
学科分类号
081202 ; 0835 ;
摘要
We use Iris, an implementation of concurrent separation logic in the Coq proof assistant, to verify two queue data structures used for inter-process communication in an operating system under development. Our motivations are twofold. First, we wish to leverage formal verification to boost confidence in a delicate piece of industrial code that was subject to numerous revisions. Second, we aim to gain information on the cost-benefit tradeoff of applying a state-of-the-art formal verification tool in our industrial setting. On both fronts, our endeavor has been a success. The verification effort proved that the queue algorithms are correct and uncovered four algorithmic simplifications as well as bugs in client code. The simplifications involve the removal of two memory barriers, one atomic load, and one boolean check, all in a performance-sensitive part of the OS. Removing the redundant boolean check revealed unintended uses of uninitialized memory in multiple device drivers, which were fixed. The proof work was completed in person months, not years, by engineers with no prior familiarity with Iris. These findings are spurring further use of verification at Meta.
引用
收藏
页码:116 / 129
页数:14
相关论文
共 50 条
  • [31] Formal verification of synchronizers
    Kapschitz, T
    Ginosar, R
    [J]. CORRECT HARDWARE DESIGN AND VERIFICATION METHODS, PROCEEDINGS, 2005, 3725 : 359 - 362
  • [32] Formal Verification of HotStuff
    Jehl, Leander
    [J]. FORMAL TECHNIQUES FOR DISTRIBUTED OBJECTS, COMPONENTS, AND SYSTEMS, FORTE 2021, 2021, 12719 : 197 - 204
  • [33] Perspectives on Formal Verification
    Friedman, Harvey M.
    [J]. PROCEEDINGS OF THE 5TH ACM SIGPLAN CONFERENCE ON CERTIFIED PROGRAMS AND PROOFS (CPP'16), 2016, : 1 - 1
  • [34] FORMAL VERIFICATION OF MICROPROCESSORS
    SRIVAS, M
    BICKFORD, M
    [J]. COMPASS 89 : PROCEEDINGS OF THE FOURTH ANNUAL CONFERENCE ON COMPUTER ASSURANCE: SYSTEMS INTEGRITY, SOFTWARE SAFETY AND PROCESS SECURITY, 1989, : 93 - 102
  • [35] Applying an IPC network to identify the bioenergy technological frontier
    Bueno, Carolina da Silveira
    Ferreira Jardim da Silveira, Jose Maria
    Buainain, Antonio Marcio
    Soares Dal Poz, Maria Ester
    [J]. REVISTA BRASILEIRA DE INOVACAO, 2018, 17 (02): : 259 - 286
  • [36] On formal definition and analysis of formal verification processes
    Osterweil, Leon J.
    [J]. Lecture Notes in Computer Science (including subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics), 2014, 8373 : 35 - 52
  • [37] Specification and verification in the field: Applying formal methods to BPF, just-in-time compilers in the Linux kernel
    Nelson, Luke
    Van Geffen, Jacob
    Torlak, Emina
    Wang, Xi
    [J]. PROCEEDINGS OF THE 14TH USENIX SYMPOSIUM ON OPERATING SYSTEMS DESIGN AND IMPLEMENTATION (OSDI '20), 2020, : 41 - 61
  • [38] Pervasive Verification of an OS Microkernel In line Assembly, Memory Consumption, Concurrent Devices
    Alkassar, Eyad
    Paul, Wolfgang J.
    Starostin, Artem
    Tsyban, Alexandra
    [J]. VERIFIED SOFTWARE: THEORIES, TOOLS, EXPERIMENTS, 2010, 6217 : 71 - 85
  • [39] Applying Formal Methods in the Large
    Bolignano, Dominique
    [J]. INTERACTIVE THEOREM PROVING, ITP 2013, 2013, 7998 : 1 - 1
  • [40] APPLYING FORMAL SOFTWARE SYNTHESIS
    JULLIG, RK
    [J]. IEEE SOFTWARE, 1993, 10 (03) : 11 - 22