Abstract
Software Fault Injection (SFI) techniques play a pivotal role in evaluating the dependability properties of a software system. Evaluating the dependability of software system against multiple fault scenarios is challenging, due to the combinatorial explosion and the advent of new fault models. These necessitate SFI tools that are programmable and easily extensible. This paper proposes FIDL, which stands for fault injection description language, which allows compiler-based fault injection tools to be extended with new fault models. FIDL is an Aspect-Oriented Programming language that dynamically weaves the fault models into the code of the fault injector. We implement FIDL using the LLFI fault injection framework and measure its overheads. We find that FIDL significantly reduces the complexity of fault models by 10x on average, while incurring 4–18% implementation overhead, which in turn increases the execution time of the injector by at most 7 % across five programs.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Similar content being viewed by others
Notes
- 1.
Pronounced Fiddle as it involves fiddling with the program.
- 2.
Available at: https://github.com/DependableSystemsLab/LLFI.
References
Aliabadi, M.R., Pattabiraman, K., Bidokhti, N.: Soft-LLFI: a comprehensive framework for software fault injection. In: ISSRE 2014, pp. 1–5 (2014)
Bienia, C., Kumar, S., Singh, J.P., Li, K.: The PARSEC benchmark suite: characterization and architecturalimplications. In: Parallel Architectures and Compilation Techniques, pp. 72–81 (2008)
Broadwell, P., Sastry, N., Traupman, J.: FIG: a prototype tool for online verification of recovery mechanisms. In: Workshop on Self-healing, Adaptive and Self-managed Systems (2002)
Cotroneo, D., Lanzaro, A., Natella, R., Barbosa, R.: Experimental analysis of binary-level software fault injection in complex software. In: EDCC 2012, pp. 162–172 (2012)
Cotroneo, D., Natella, R.: Fault injection for software certification. IEEE Trans. Secur. Priv. 11(4), 38–45 (2013)
Dawson, S., Jahanian, F., Mitton, T.: Experiments on six commercial TCP implementations using a software fault injection tool. Softw. Pract. Exper. 27(12), 1385–1410 (1997)
Filman, R., Elrad, T., Clarke, S., et al.: Aspect-Oriented Software Development. Addison-Wesley Professional, Boston (2004)
Giuffrida, C., Kuijsten, A., Tanenbaum, A.S.: EDFI: a dependable fault injection tool for dependability benchmarking experiments. In: PRDC 2013, pp. 31–40 (2013)
Gregg, B., Mauro, J.: DTrace: Dynamic Tracing in Oracle Solaris, Mac OS X, and FreeBSD. Prentice Hall Professional, Upper Saddle River (2011)
Henning, J.L.: SPEC CPU2000: measuring cpu performance in the new millennium. IEEE Trans. Comput. 33(7), 28–35 (2000)
Joshi, P., Gunawi, H.S., Sen, K.: PREFAIL: a programmable tool for multiple-failure injection. ACM SIGPLAN Not. 46, 171–188 (2011)
Juszczyk, L., Dustdar, S.: A programmble fault injection testbed generator for SOA. In: Weske, M., Yang, J., Fantinato, M., Maglio, P.P. (eds.) ICSOC 2010. LNCS, vol. 6470, pp. 411–425. Springer, Heidelberg (2010)
Lattner, C., Adve, V.: LLVM: a compilation framework for lifelong program analysis & transformation. In: CGO 2004, pp. 75–86 (2004)
Qining, L., Farahani, M., Wei, J., Thomas, A., Pattabiraman, K.: LLFI: an intermediate code-level fault injection tool for hardware faults. QRS 2015, 11–16 (2015)
Madeira, H., Costa, D., Vieira, M.: On the emulation of software faults by software fault injection. DSN 2000, 417–426 (2000)
Marinescu, P.D., George Candea, L.F.I.: A practical and general library-level fault injector. In: DSN 2009, pp. 379–388 (2009)
Murphy, G.C., Walker, R.J., Banlassad, E.L.A.: Evaluating emerging software development technologies: lessons learned from assessing aspect-oriented programming. IEEE Trans. Softw. Eng. 25(4), 438–455 (1999)
Schirmeier, H., Hoffmann, M., Kapitza, R., Lohmann, D., Spinczyk, O.: FAIL: towards a versatile fault-injection experiment framework. ARCS 2012, 1–5 (2012)
Stratton, J.A., Rodrigues, C., Sung, I.-J., Obeid, N., Chang, L.-W., Anssari, N., Liu, G.D., W Hwu, W.-M.: PARBOIL: a revised benchmark suite for scientific and commercial throughput computing. In: RHPC 2012 (2012)
Wang, J., Zhao, M., Zeng, Q., Wu, D., Liu, P.: Risk assessment of buffer heartbleed over-read vulnerabilities. In: DSN 2015 (2015)
Wei, J., Thomas, A., Li, G., Pattabiraman, K.: Quantifying the accuracy of high-level fault injection techniques for hardware faults. In: DSN 2014, pp. 375–382 (2014)
Winter, S., Sârbu, C., Suri, N., Murphy, B.: The impact of fault models on software robustness evaluations. In: ICSE 2011, pp. 51–60 (2011)
Zhou, F., Condit, J., Anderson, Z., Bagrak, I., Ennals, R., Harren, M., Necula, G., Brewer, E.: SafeDrive: safe and recoverable extensions using language-based techniques. In: OSDI, pp. 45–60 (2006)
Acknowledgements
This work was supported by the Natural Sciences and Engineering Research Council of Canada (NSERC), and a gift from Cisco Systems. We thank Nematollah Bidokhti for his valuable comments on this work.
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2016 Springer International Publishing Switzerland
About this paper
Cite this paper
Raiyat Aliabadi, M., Pattabiraman, K. (2016). FIDL: A Fault Injection Description Language for Compiler-Based SFI Tools. In: Skavhaug, A., Guiochet, J., Bitsch, F. (eds) Computer Safety, Reliability, and Security. SAFECOMP 2016. Lecture Notes in Computer Science(), vol 9922. Springer, Cham. https://doi.org/10.1007/978-3-319-45477-1_2
Download citation
DOI: https://doi.org/10.1007/978-3-319-45477-1_2
Published:
Publisher Name: Springer, Cham
Print ISBN: 978-3-319-45476-4
Online ISBN: 978-3-319-45477-1
eBook Packages: Computer ScienceComputer Science (R0)