Abstract
Safety transformations transform unsafe original software into safe software that, in contrast to the unsafe version, detects if its execution was incorrect due to execution errors. Especially transformations based on arithmetic codes such as an AN- or ANB-code apply complex and error-prone transformations, while at the same time aiming for safety- or mission-critical applications. Testing and error injection are used so far to ensure correctness and error detection capabilities. But both are incomplete and might miss errors that change functionality or reduce error detection rates. Our research provides tools for a complete analysis of AN-encoding safety transformations. This paper presents our analysis tools and results for the AN-encoded operations. While we were able to demonstrate functional correctness, we discovered bugs that prevent propagation of errors almost completely for AN-encoded divisions and reduce propagation significantly for logical bitwise operations.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
References
Ahrendt, W., Baar, T., Beckert, B., Bubel, R., Giese, M., Hähnle, R., Menzel, W., Mostowski, W., Roth, A., Schlager, S., Schmitt, P.H.: The KeY Tool. Software and System Modeling 4, 32–54 (2005)
Ahrendt, W., Beckert, B., Hähnle, R., Rümmer, P., Schmitt, P.H.: Verifying Object-Oriented Programs with KeY: A Tutorial. In: de Boer, F.S., Bonsangue, M.M., Graf, S., de Roever, W.-P. (eds.) FMCO 2006. LNCS, vol. 4709, pp. 70–101. Springer, Heidelberg (2007)
Avizienis, A.: Arithmetic Error Codes: Cost and Effectiveness Studies for Application in Digital System Design. In: IEEE Transactions on Computers, pp. 1322–1331 (1971)
Babic, D., Hu, A.J.: Calysto: scalable and precise extended static checking. In: Proceedings of the 30th International Conference on Software Engineering, ICSE 2008, pp. 211–220. ACM, New York (2008)
Borkar, S.: Designing Reliable Systems from Unreliable Components: The Challenges of Transistor Variability and Degradation. IEEE Micro. 25(6), 10–16 (2005)
Brummayer, R., Biere, A.: Boolector: An Efficient SMT Solver for Bit-Vectors and Arrays. In: Kowalewski, S., Philippou, A. (eds.) TACAS 2009. LNCS, vol. 5505, pp. 174–177. Springer, Heidelberg (2009)
Chang, J., Reis, G.A., August, D.I.: Automatic Instruction-Level Software-Only Recovery. In: Proceedings of the International Conference on Dependable Systems and Networks (DSN), pp. 83–92. IEEE Computer Society, Washington, DC (2006)
Clarke, E.M., Kroning, D., Lerda, F.: A Tool for Checking ANSI-C Programs. In: Jensen, K., Podelski, A. (eds.) TACAS 2004. LNCS, vol. 2988, pp. 168–176. Springer, Heidelberg (2004)
de Moura, L., Bjørner, N.S.: Z3: An Efficient SMT Solver. In: Ramakrishnan, C.R., Rehof, J. (eds.) TACAS 2008. LNCS, vol. 4963, pp. 337–340. Springer, Heidelberg (2008)
Griggio, A.: A Practical Approach to Satisfiability Modulo Linear Integer Arithmetic. Journal on Satisfiability, Boolean Modeling and Computation (JSAT) 8, 1–27 (2012)
Larsson, D., Hähnle, R.: Symbolic Fault Injection. In: 4th International Verification Workshop in connection with CADE-21, Bremen, Germany, pp. 85–103 (2007)
Lattner, C., Adve, V.: LLVM: A Compilation Framework for Lifelong Program Analysis & Transformation. In: Proceedings of the International Symposium on Code Generation and Optimization (CGO), p. 75. IEEE Computer Society, Washington, DC (2004)
Leroy, X.: Formal verification of a realistic compiler. Commun. ACM 52, 107–115 (2009)
The MathWorks. Code Verification and Run-Time Error Detection Through Abstract Interpretation. Technical report, The MathWorks (2012)
Merz, F., Falke, S., Sinz, C.: LLBMC: bounded model checking of C and C++ programs using a compiler IR. In: Joshi, R., Müller, P., Podelski, A. (eds.) VSTTE 2012. LNCS, vol. 7152, pp. 146–161. Springer, Heidelberg (2012)
Pattabiraman, K., Nakka, N., Kalbarczyk, Z., Iyer, R.: SymPLFIED: Symbolic program-level fault injection and error detection framework. In: IEEE International Conference on Dependable Systems and Networks With FTCS and DCC, DSN 2008, pp. 472–481 (June 2008)
Reis, G.A., Chang, J., August, D.I., Cohn, R., Mukherjee, S.S.: Configurable Transient Fault Detection via Dynamic Binary Translation. In: Proceedings of the 2nd Workshop on Architectural Reliability (2006)
Reis, G.A., Chang, J., Vachharajani, N., Rangan, R., August, D.I.: SWIFT: Software Implemented Fault Tolerance. In: Proceedings of the International Symposium on Code Generation and Optimization (CGO), pp. 243–254. IEEE Computer Society, Washington, DC (2005)
Schiffel, U., Schmitt, A., Süßkraut, M., Fetzer, C.: ANB- and aNBDmem-encoding: Detecting hardware errors in software. In: Schoitsch, E. (ed.) SAFECOMP 2010. LNCS, vol. 6351, pp. 169–182. Springer, Heidelberg (2010)
Schiffel, U., Schmitt, A., Süßkraut, M., Fetzer, C.: Software-Implemented Hardware Error Detection: Costs and Gains. In: The Third International Conference on Dependability, DEPEND 2010 (2010)
Fetzer, C., Schiffel, U., Süßkraut, M.: AN-encoding compiler: Building safety-critical systems with commodity hardware. In: Buth, B., Rabe, G., Seyfarth, T. (eds.) SAFECOMP 2009. LNCS, vol. 5775, pp. 283–296. Springer, Heidelberg (2009)
Seelemann, M.: Evaluation of Predicate-Complete Test Coverage and Symbolic Execution for Software Testing and Verification. Master’s thesis, Technische Universität Dresden (2010)
Svenningsson, R., Eriksson, H., Vinter, J., Törngren, M.: Generic fault modelling for fault injection. In: Aichernig, B.K., de Boer, F.S., Bonsangue, M.M. (eds.) FMCO 2010. LNCS, vol. 6957, pp. 287–296. Springer, Heidelberg (2011)
Wappler, U., Fetzer, C.: Hardware Failure Virtualization Via Software Encoded Processing. In: 5th IEEE International Conference on Industrial Informatics, INDIN 2007 (2007)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2013 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Schiffel, U. (2013). Safety Transformations: Sound and Complete?. In: Bitsch, F., Guiochet, J., Kaâniche, M. (eds) Computer Safety, Reliability, and Security. SAFECOMP 2013. Lecture Notes in Computer Science, vol 8153. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-40793-2_18
Download citation
DOI: https://doi.org/10.1007/978-3-642-40793-2_18
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-642-40792-5
Online ISBN: 978-3-642-40793-2
eBook Packages: Computer ScienceComputer Science (R0)