The Community for Technology Leaders
RSS Icon
Subscribe
Issue No.01 - January-February (2011 vol.8)
pp: 44-57
Karthik Pattabiraman , Microsoft Research, Redmond
Zbigniew T. Kalbarczyk , Center for Reliable and High-Performance Computing, Urbana
Ravishankar K. Iyer , Center for Reliable and High-Performance Computing, Urbana
ABSTRACT
This paper presents a technique to derive and implement error detectors to protect an application from data errors. The error detectors are derived automatically using compiler-based static analysis from the backward program slice of critical variables in the program. Critical variables are defined as those that are highly sensitive to errors, and deriving error detectors for these variables provides high coverage for errors in any data value used in the program. The error detectors take the form of checking expressions and are optimized for each control-flow path followed at runtime. The derived detectors are implemented using a combination of hardware and software and continuously monitor the application at runtime. If an error is detected at runtime, the application is stopped so as to prevent error propagation and enable a clean recovery. Experiments show that the derived detectors achieve low-overhead error detection while providing high coverage for errors that matter to the application.
INDEX TERMS
Error checking, reliability, testing, and fault tolerance, reconfigurable hardware, software engineering (reliability), fault tolerance.
CITATION
Karthik Pattabiraman, Zbigniew T. Kalbarczyk, Ravishankar K. Iyer, "Automated Derivation of Application-Aware Error Detectors Using Static Analysis: The Trusted Illiac Approach", IEEE Transactions on Dependable and Secure Computing, vol.8, no. 1, pp. 44-57, January-February 2011, doi:10.1109/TDSC.2009.23
REFERENCES
[1] D. Evans, J. Guttag, J. Horning, and Y.-M. Tan, "LCLint: A Tool for Using Specifications to Check Code," Proc. Second ACM SIGSOFT Symp. Foundations Software Eng., 1994.
[2] M.D. Ernst, J. Cockrell, W.G. Griswold, and D. Notkin, "Dynamically Discovering Likely Program Invariants to Support Program Evolution," Proc. 21st Int'l Conf. Software Eng., 1999.
[3] J. Gray, "Why do Computers Stop and What Can Be Done About It," Proc. Symp. Reliable Distributed Systems, 1986.
[4] W. Gu, Z. Kalbarczyk, R. Iyer, and Z. Yang, "Characterization of Linux Kernel Behavior under Errors," Proc. Int'l Conf. Dependable Systems Networks, 2003.
[5] S. Chandra and P.M. Chen, "How Fail-Stop Are Faulty Programs?" Proc. 28th Ann. Int'l Symp. Fault-Tolerant Computing, 1998.
[6] L. Spainhower and W. Bartlett, "Commercial Fault Tolerance: A Tale of Two Systems," IEEE Trans. Dependable Secure Systems, vol. 1, no. 1, pp. 87-96, Jan.-Mar. 2004.
[7] N. Oh, P.P. Shirvani, and E.J. McCluskey, "Error Detection by Duplicated Instructions in Super-Scalar Processors," IEEE Trans. Reliability, vol. 51, no. 1, pp. 63-75, Mar. 2002.
[8] G.A. Reis, J. Chang, N. Vachharajani, R. Rangan, and D.I. August, "SWIFT: Software Implemented Fault Tolerance," Proc. Int'l Symp. Code Generation Optimization, 2005.
[9] R.K. Iyer, N.M. Nakka, Z.T. Kalbarczyk, and S. Mitra, "Recent Advances and New Avenues in Hardware-Level Reliability Support," IEEE Micro, vol. 25, no. 6, pp. 18-29, Nov./Dec. 2005.
[10] N. Nakka, K. Pattabiraman, and R. Iyer, "Processor-Level Selective Replication," Proc. 37th Ann. IEEE/IFIP Int'l Conf. Dependable Systems Networks, 2007.
[11] N. Nakka, Z. Kalbarczyk, R.K. Iyer, and J. Xu, "An Architectural Framework for Providing Reliability and Security Support," Proc. Int'l Conf. Dependable Systems Networks, 2004.
[12] R.K. Iyer, Z. Kalbarczyk, K. Pattabiraman, W. Healey, W.-M.W. Hwu, P. Klemperer, and R. Farivar, "Toward Application-Aware Security and Reliability," IEEE Security Privacy, vol. 5, no. 1, pp. 57-62, Jan./Feb. 2007.
[13] R.K. Iyer, "TRUSTED ILLIAC: A Configurable Hardware Framework for a Trusted Computing Base," Proc. 10th IEEE High Assurance Systems Eng. Symp. (HASE '07), 2007.
[14] A. Avizienis, J.C. Laprie, B. Randell, and C. Landwehr, "Basic Concepts and Taxonomy of Dependable and Secure Computing," IEEE Trans. Dependable Secure Computing, vol. 1, no. 1, pp. 11-33, Jan.-Mar. 2004.
[15] M. Sullivan and R. Chillarege, "Software Defects and Their Impact on System Availability—A Study of Field Failures in Operating Systems," Proc. 21st Symp. Fault-Tolerant Computing, 1991.
[16] W.R. Bush, J.D. Pincus, and D.J. Sielaff, "A Static Analyzer for Finding Dynamic Programming Errors," Software Practice Experience, vol. 30, no. 7, pp. 775-802, 2000.
[17] M. Das, S. Lerner, and M. Seigle, "ESP: Path-Sensitive Program Verification in Polynomial Time," Proc. ACM SIGPLAN 2002 Conf. Programming Language Design Implementation, 2002.
[18] S. Hangal and M.S. Lam, "Tracking Down Software Bugs Using Automatic Anomaly Detection," Proc. 24th Int'l Conf. Software Eng., 2002.
[19] M. Hiller, "Executable Assertions for Detecting Data Errors in Embedded Control Systems," Proc. Int'l Conf. Dependable Systems Networks (Formerly FTCS-30 and DCCA-8), 2000.
[20] K. Pattabiraman, G.P. Saggese, D. Chen, Z. Kalbarczyk, and R.K. Iyer, "Dynamic Derivation of Application-Specific Error Detectors and Their Implementation in Hardware," Proc. Sixth European Dependable Computing Conf., 2006.
[21] Z. Li and Y. Zhou, "PR-Miner: Automatically Extracting Implicit Programming Rules and Detecting Violations in Large Software Code," Proc. 13th ACM SIGSOFT Int'l Symp. Foundations Software Eng., 2005.
[22] D. Engler, D.Y. Chen, S. Hallem, A. Chou, and B. Chelf, "Bugs as Deviant Behavior: A General Approach to Inferring Errors in Systems Code," Proc. 18th ACM Symp. Operating Systems Principles, 2001.
[23] A. Benso, S. Chiusano, P. Prinetto, and L. Tagliaferri, "A C/C++ Source-to-Source Compiler for Dependable Applications," Proc. Int'l Conf. Dependable Systems Networks (Formerly FTCS-30 and DCCA-8), 2000.
[24] M. Kim, M. Viswanathan, S. Kannan, I. Lee, and O. Sokolsky, "Java-MaC: A Run-Time Assurance Approach for Java Programs," Formal Methods System Design, vol. 24, no. 2, pp. 129-155, 2004.
[25] K. Havelund and G. Rosu, "An Overview of the Runtime Verification Tool Java PathExplorer," Formal Methods System Design, vol. 24, no. 2, pp. 189-215, 2004.
[26] D. Dhurjati, S. Kowshik, and V. Adve, "SAFECode: Enforcing Alias Analysis for Weakly Typed Languages," Proc. ACM SIGPLAN Conf. Programming Language Design Implementation, 2006.
[27] R.W.M. Jones and P.H.J. Kelly, "Backwards-Compatible Bounds Checking for Arrays and Pointers in C Programs," Proc. Automated and Algorithmic Debugging, 1997.
[28] O. Ruwase and M.S. Lam, "A Practical Dynamic Buffer Overflow Detector," Proc. 11th Ann. Network Distributed System Security, 2004.
[29] S. Savage, M. Burrows, G. Nelson, P. Sobalvarro, and T. Anderson, "Eraser: A Dynamic Data Race Detector for Multithreaded Programs," ACM Trans. Computer Systems, vol. 15, no. 4, pp. 391-411, 1997.
[30] D. Engler and K. Ashcraft, "RacerX: Effective, Static Detection of Race Conditions and Deadlocks," ACM SIGOPS Operating System Rev., vol. 37, no. 5, pp. 237-252, 2003.
[31] N. Oh, P.P. Shirvani, and E.J. McCluskey, "Control-Flow Checking by Software Signatures," IEEE Trans. Reliability, vol. 51, no. 1, pp. 111-122, Mar. 2002.
[32] M. Abadi, M. Budiu, U.L. Erlingsson, and J. Ligatti, "Control-Flow Integrity," Proc. 12th ACM Conf. Computer Comm. Security, 2005.
[33] K. Pattabiraman, Z. Kalbarczyk, and R. Iyer, "Automated Derivation of Application-Aware Error Detectors Using Static Analysis," Proc. Int'l Online Testing Symp. (IOLTS), 2007.
[34] F. Tip, "A Survey of Program Slicing Techniques," J. Programming Languages, vol. 3, no. 3, pp. 121-189, 1995.
[35] K. Pattabiraman, Z. Kalbarczyk, and R.K. Iyer, "Application-Based Metrics for Strategic Placement of Detectors," Proc. Pacific Rim Dependable Computing, 2005.
[36] C. Lattner and V. Adve, "LLVM: A Compilation Framework for Lifelong Program Analysis & Transformation," Proc. Int'l Symp. Code Generation Optimization, 2004.
[37] R. Cytron, J. Ferrante, B.K. Rosen, M.N. Wegman, and F.K. Zadeck, "Efficiently Computing Static Single Assignment Form and the Control Dependence Graph," ACM Trans. Programming Languages Systems, vol. 13, no. 4, pp. 451-490, 1991.
[38] S.S. Muchnick, Advanced Compiler Design and Implementation, p. 856. Morgan Kaufmann Publishers, Inc., 1997.
[39] R.P. Weicker, "An Overview of Common Benchmarks," Computer, vol. 23, no. 12, pp. 65-75, Dec. 1990.
[40] M.C. Carlisle and A. Rogers, "Software Caching and Computation Migration in Olden," Proc. Fifth ACM SIGPLAN Symp. Principles Practice Parallel Programming, 1995.
22 ms
(Ver 2.0)

Marketing Automation Platform Marketing Automation Tool