Skip to main content

2019 | OriginalPaper | Buchkapitel

Reproducible Execution of POSIX Programs with DiOS

verfasst von : Petr Ročkai, Zuzana Baranová, Jan Mrázek, Katarína Kejstová, Jiří Barnat

Erschienen in: Software Engineering and Formal Methods

Verlag: Springer International Publishing

Aktivieren Sie unsere intelligente Suche, um passende Fachinhalte oder Patente zu finden.

search-config
loading …

Abstract

In this paper, we describe DiOS, a lightweight model operating system which can be used to execute programs that make use of POSIX APIs. Such executions are fully reproducible: running the same program with the same inputs twice will result in two exactly identical instruction traces, even if the program uses threads for parallelism.
DiOS is implemented almost entirely in portable C and C++: although its primary platform is DiVM, a verification-oriented virtual machine, it can be configured to also run in KLEE, a symbolic executor. Finally, it can be compiled into machine code to serve as a user-mode kernel.
Additionally, DiOS is modular and extensible. Its various components can be combined to match both the capabilities of the underlying platform and to provide services required by a particular program. New components can be added to cover additional system calls or APIs.
The experimental evaluation has two parts. DiOS is first evaluated as a component of a program verification platform based on DiVM. In the second part, we consider its portability and modularity by combining it with the symbolic executor KLEE.

Sie haben noch keine Lizenz? Dann Informieren Sie sich jetzt über unsere Produkte:

Springer Professional "Wirtschaft+Technik"

Online-Abonnement

Mit Springer Professional "Wirtschaft+Technik" erhalten Sie Zugriff auf:

  • über 102.000 Bücher
  • über 537 Zeitschriften

aus folgenden Fachgebieten:

  • Automobil + Motoren
  • Bauwesen + Immobilien
  • Business IT + Informatik
  • Elektrotechnik + Elektronik
  • Energie + Nachhaltigkeit
  • Finance + Banking
  • Management + Führung
  • Marketing + Vertrieb
  • Maschinenbau + Werkstoffe
  • Versicherung + Risiko

Jetzt Wissensvorsprung sichern!

Springer Professional "Technik"

Online-Abonnement

Mit Springer Professional "Technik" erhalten Sie Zugriff auf:

  • über 67.000 Bücher
  • über 390 Zeitschriften

aus folgenden Fachgebieten:

  • Automobil + Motoren
  • Bauwesen + Immobilien
  • Business IT + Informatik
  • Elektrotechnik + Elektronik
  • Energie + Nachhaltigkeit
  • Maschinenbau + Werkstoffe




 

Jetzt Wissensvorsprung sichern!

Springer Professional "Wirtschaft"

Online-Abonnement

Mit Springer Professional "Wirtschaft" erhalten Sie Zugriff auf:

  • über 67.000 Bücher
  • über 340 Zeitschriften

aus folgenden Fachgebieten:

  • Bauwesen + Immobilien
  • Business IT + Informatik
  • Finance + Banking
  • Management + Führung
  • Marketing + Vertrieb
  • Versicherung + Risiko




Jetzt Wissensvorsprung sichern!

Fußnoten
2
If execution A creates a file and leaves it around, execution B might get derailed when it tries to create the same file, or might detect its presence and behave differently.
 
3
The main exception is KLEE, where the execution stack is completely inaccessible to the program under test and only the virtual machine can access the information stored in it. See also Sect. 3.2.
 
4
A version of KLEE with fixes for those problems is available online, along with other supplementary material, from https://​divine.​fi.​muni.​cz/​2019/​dios/​.
 
5
The details of how this is done are discussed in the online supplementary material at https://​divine.​fi.​muni.​cz/​2019/​dios/​.
 
6
In DIVINE [1], a model checker based on DiVM, interrupt points are dynamically enabled when the executing thread performs a visible action. Thread identification is supplied by the scheduler in DiOS using a platform-specific (hypercall) interface.
 
7
For instance, on contemporary x86-64 processors, this interface is available via the syscall and sysret instructions.
 
8
The list of system calls is only fixed relative to the host operating system. To allow the system call proxy component to function properly, the list needs to match what is available on the host. For instance, creat, uname or fdatasync are system calls on Linux but standard libc functions on OpenBSD.
 
9
This extraction is performed at DiOS build time, using hostabi.pl, which is part of the DiOS source distribution. The technical details are discussed in the online supplementary material.
 
10
All test programs are available online at http://​divine.​fi.​muni.​cz/​2019/​dios/​, including scripts to reproduce the results reported in this and in the following sections.
 
Literatur
3.
Zurück zum Zitat Cadar, C., Dunbar, D., Engler, D.R.: KLEE: unassisted and automatic generation of high-coverage tests for complex systems programs. In: OSDI, pp. 209–224. USENIX Association (2008) Cadar, C., Dunbar, D., Engler, D.R.: KLEE: unassisted and automatic generation of high-coverage tests for complex systems programs. In: OSDI, pp. 209–224. USENIX Association (2008)
6.
Zurück zum Zitat Inverso, O., Nguyen, T.L., Fischer, B., Torre, S.L., Parlato, G.: Lazy-CSeq: a context-bounded model checking tool for multi-threaded C-programs. In: 2015 30th IEEE/ACM International Conference on Automated Software Engineering (ASE), pp. 807–812 (2015). https://doi.org/10.1109/ASE.2015.108 Inverso, O., Nguyen, T.L., Fischer, B., Torre, S.L., Parlato, G.: Lazy-CSeq: a context-bounded model checking tool for multi-threaded C-programs. In: 2015 30th IEEE/ACM International Conference on Automated Software Engineering (ASE), pp. 807–812 (2015). https://​doi.​org/​10.​1109/​ASE.​2015.​108
10.
Zurück zum Zitat Kong, S., Tillmann, N., de Halleux, J.: Automated testing of environment-dependent programs-a case study of modeling the file system for Pex. In: 2009 Sixth International Conference on Information Technology: New Generations, pp. 758–762. IEEE (2009). https://doi.org/10.1109/ITNG.2009.80 Kong, S., Tillmann, N., de Halleux, J.: Automated testing of environment-dependent programs-a case study of modeling the file system for Pex. In: 2009 Sixth International Conference on Information Technology: New Generations, pp. 758–762. IEEE (2009). https://​doi.​org/​10.​1109/​ITNG.​2009.​80
16.
Zurück zum Zitat Musuvathi, M., Qadeer, S., Ball, T., Basler, G., Nainar, P.A., Neamtiu, I.: Finding and reproducing heisenbugs in concurrent programs. In: Symposium on Operating Systems Design and Implementation, USENIX (2008) Musuvathi, M., Qadeer, S., Ball, T., Basler, G., Nainar, P.A., Neamtiu, I.: Finding and reproducing heisenbugs in concurrent programs. In: Symposium on Operating Systems Design and Implementation, USENIX (2008)
19.
Zurück zum Zitat Yang, Y., Chen, X., Gopalakrishnan, G.: Inspect: a runtime model checker for multithreaded c programs. Technical report (2008) Yang, Y., Chen, X., Gopalakrishnan, G.: Inspect: a runtime model checker for multithreaded c programs. Technical report (2008)
20.
Zurück zum Zitat Štill, V., Ročkai, P., Barnat, J.: Using off-the-shelf exception support components in C++ verification. In: Software Quality, Reliability and Security (QRS), pp. 54–64 (2017) Štill, V., Ročkai, P., Barnat, J.: Using off-the-shelf exception support components in C++ verification. In: Software Quality, Reliability and Security (QRS), pp. 54–64 (2017)
Metadaten
Titel
Reproducible Execution of POSIX Programs with DiOS
verfasst von
Petr Ročkai
Zuzana Baranová
Jan Mrázek
Katarína Kejstová
Jiří Barnat
Copyright-Jahr
2019
DOI
https://doi.org/10.1007/978-3-030-30446-1_18

Premium Partner