FIDL: A Fault Injection Description Language for Compiler-Based SFI Tools

  • Maryam Raiyat AliabadiEmail author
  • Karthik Pattabiraman
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 9922)


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.


Fault Model Fault Injection Time Overhead High Level Abstraction Domain Specific Language 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.



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.


  1. 1.
    Aliabadi, M.R., Pattabiraman, K., Bidokhti, N.: Soft-LLFI: a comprehensive framework for software fault injection. In: ISSRE 2014, pp. 1–5 (2014)Google Scholar
  2. 2.
    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)Google Scholar
  3. 3.
    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)Google Scholar
  4. 4.
    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)Google Scholar
  5. 5.
    Cotroneo, D., Natella, R.: Fault injection for software certification. IEEE Trans. Secur. Priv. 11(4), 38–45 (2013)CrossRefGoogle Scholar
  6. 6.
    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)CrossRefGoogle Scholar
  7. 7.
    Filman, R., Elrad, T., Clarke, S., et al.: Aspect-Oriented Software Development. Addison-Wesley Professional, Boston (2004)Google Scholar
  8. 8.
    Giuffrida, C., Kuijsten, A., Tanenbaum, A.S.: EDFI: a dependable fault injection tool for dependability benchmarking experiments. In: PRDC 2013, pp. 31–40 (2013)Google Scholar
  9. 9.
    Gregg, B., Mauro, J.: DTrace: Dynamic Tracing in Oracle Solaris, Mac OS X, and FreeBSD. Prentice Hall Professional, Upper Saddle River (2011)Google Scholar
  10. 10.
    Henning, J.L.: SPEC CPU2000: measuring cpu performance in the new millennium. IEEE Trans. Comput. 33(7), 28–35 (2000)Google Scholar
  11. 11.
    Joshi, P., Gunawi, H.S., Sen, K.: PREFAIL: a programmable tool for multiple-failure injection. ACM SIGPLAN Not. 46, 171–188 (2011)CrossRefGoogle Scholar
  12. 12.
    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)CrossRefGoogle Scholar
  13. 13.
    Lattner, C., Adve, V.: LLVM: a compilation framework for lifelong program analysis & transformation. In: CGO 2004, pp. 75–86 (2004)Google Scholar
  14. 14.
    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)Google Scholar
  15. 15.
    Madeira, H., Costa, D., Vieira, M.: On the emulation of software faults by software fault injection. DSN 2000, 417–426 (2000)Google Scholar
  16. 16.
    Marinescu, P.D., George Candea, L.F.I.: A practical and general library-level fault injector. In: DSN 2009, pp. 379–388 (2009)Google Scholar
  17. 17.
    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)CrossRefGoogle Scholar
  18. 18.
    Schirmeier, H., Hoffmann, M., Kapitza, R., Lohmann, D., Spinczyk, O.: FAIL: towards a versatile fault-injection experiment framework. ARCS 2012, 1–5 (2012)Google Scholar
  19. 19.
    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)Google Scholar
  20. 20.
    Wang, J., Zhao, M., Zeng, Q., Wu, D., Liu, P.: Risk assessment of buffer heartbleed over-read vulnerabilities. In: DSN 2015 (2015)Google Scholar
  21. 21.
    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)Google Scholar
  22. 22.
    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)Google Scholar
  23. 23.
    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)Google Scholar

Copyright information

© Springer International Publishing Switzerland 2016

Authors and Affiliations

  1. 1.Electrical and Computer EngineeringUniversity of British ColumbiaVancouverCanada

Personalised recommendations