This Article 
 Bibliographic References 
 Add to: 
Automatic Detection and Masking of Nonatomic Exception Handling
August 2004 (vol. 30 no. 8)
pp. 547-560
The development of robust software is a difficult undertaking and is becoming increasingly more important as applications grow larger and more complex. Although modern programming languages such as C++ and Java provide sophisticated exception handling mechanisms to detect and correct runtime error conditions, exception handling code must still be programmed with care to preserve application consistency. In particular, exception handling is only effective if the premature termination of a method due to an exception does not leave an object in an inconsistent state. We address this issue by introducing the notion of failure atomicity in the context of exceptions. We propose practical techniques to automatically detect and mask the nonatomic exception handling situations encountered during program execution. These techniques can be applied to applications written in various programming languages that support exceptions. We perform experimental evaluation on both C++ and Java applications to demonstrate the effectiveness of our techniques and measure the overhead that they introduce.

[1] T. Cargill, Exception Handling: A False Sense of Security C++ Report, vol. 6, no. 9, Nov.-Dec. 1994
[2] J.B. Goodenough, Exception Handling: Issues and a Proposed Notation Comm. ACM, vol. 18, no. 12, pp. 683-696, 1975.
[3] P.M. Melliar-Smith and B. Randell, Software Reliability: The Role of Programmed Exception Handling Proc. ACM Conf. Language Design for Reliable Software, pp. 95-100, 1977.
[4] J.X.B. Randell, The Evolution of the Recovery Block Concept Software Fault Tolerance, M. Lyu, ed., pp. 1-21, 1999.
[5] Exception Handling for a 21st Century Programming Language Proceedings ACM SIGAda Ada Letters, vol. 21, no. 3, 2001.
[6] Advances in Exception Handling Techniques. A. Romanovsky, C. Dony, J.L. Knudsen, and A. Tripathi, eds., Springer Verlag, 2001.
[7] S.E. Mitchell, A. Burns, and A.J. Wellings, Mopping Up Exceptions ACM SIGAda Ada Letters, vol. 21, no. 3, pp. 80-92, 2001.
[8] M. Lippert and C.V. Lopes, A Study on Exception Detection and Handling Using Aspect-Oriented Programming Proc. 22nd Int'l Conf. Software Eng., pp. 418-427, 2000.
[9] F. Cristian, Exception Handling and Tolerance of Software Faults Software Fault Tolerance, M. Lyu, ed., pp. 81-107, 1995.
[10] R. Maxion and R. Olszewski, Eliminating Exception Handling Errors with Dependability Cases: A Comparative, Empirical Study IEEE Trans. Software Eng., vol. 26, no. 9, pp. 888-906, Sept. 2000.
[11] J. Arlat et al., "Fault Injection for Dependability Validation: A Methodology and Some Applications," IEEE Trans. Software Eng., Feb. 1990, pp. 166-182.
[12] Z. Segall et al., “FIAT—Fault Injection Based Automated Testing Environment,” Proc. IEEE Int'l Symp. Fault-Tolerant Computing, pp. 102–107, 1988.
[13] J.L. Aidemark, J.P. Vinter, P. Folkesson, and J. Karlsson, GOOFI: A Generic Fault Injection Tool Proc. 2001 Int'l Conf. Dependable Systems and Networks (DSN-2001), pp. 83-88, 2001.
[14] N.P. Kropp, P.J. Koopman, and D.P. Siewiorek, Automated Robustness Testing of Off-the-Shelf Software Components Proc. Symp. Fault-Tolerant Computing (FTCS), pp. 230-239, 1998, .
[15] J.-C. Fabre, M. Rodriguez, J. Arlat, and J.-M. Sizun, Building Dependable Cots Microkernel-Based Systems Using Mafalda Proc. 2000 Pacific Rim Int'l Symp. Dependable Computing (PRDC '00), pp. 85-94, Dec. 2000.
[16] G. Kanawati, N. Kanawati, and J. Abraham, “FERRARI: A Tool for the Validation of System Dependability Properties,” Proc. IEEE Int'l Symp. Fault-Tolerant Computing, pp. 336–344, 1992.
[17] J. Carreira, H. Madeira, and J.G. Silva, Xception: A Technique for the Experimental Evaluation of Dependability in Modern Computers IEEE Trans. Software Eng., vol. 24, no. 2, pp. 125-136, Feb. 1998.
[18] S. Han, K. Shin, and H. Rosenberg, Doctor: An Integrated Software Fault Injection Environment for Distributed Real-Time Systems 1995, http://citeseer.nj.,automated.htmlhttp:/ / .
[19] P. Broadwell, N. Sastry, and J. Traupman, Fig: A Prototype Tool for Online Verification of Recovery Mechanisms Proc. ACM ICS SHAMAN Workshop, June 2002.
[20] C. Fetzer and Z. Xiao, An Automated Approach to Increasing the Robustness of C Libraries Proc. Int'l Conf. Dependable Systems and Networks, June 2002, .
[21] J. Gray and A. Reuter, Transaction Processing: Concepts and Techniques. Morgan Kaufmann, 1993.
[22] D. Skillicorn and D. Talia, Models and Languages for Parallel Computation ACM Computing Surveys, vol. 30, no. 2, pp. 123-169, 1998.
[23] T. Harris and K. Fraser, Language Support for Lightweight Transactions Proc. 2003 ACM SIGPLAN Conf. Object-Oriented Programming Systems, Languages and Applications (OOPSLA 2003), pp. 388-402, Oct. 2003.
[24] G. Kiczales, J. Lamping, A. Menhdhekar, C. Maeda, C. Lopes, J.-M. Loingtier, and J. Irwin, Aspect-Oriented Programming Proc. European Conf. Object-Oriented Programming, M. Ak it and S. Matsuoka, eds., vol. 1241, pp. 220-242, 1997.
[25] M. Goto, CINT C/C++ Interpreter rwrapper.pdf Cint.html, 2004.
[26] O. Spinczyk, A. Gal, and W. Schröder-Preikschat, AspectC++: An Aspect-Oriented Extension to C++ Proc. 40th Int'l Conf. Technology of Object-Oriented Languages and Systems (TOOLS Pacific 2002), Feb. 2002.
[27] J.S. Plank, M. Beck, G. Kingsley, and K. Li, Libckpt: Transparent Checkpointing Under Unix Proc. Usenix Winter Technical Conf., pp. 213-223, Jan. 1995.
[28] D.E. Lowell and P.M. Chen, Discount Checking: Transparent, Low-Overhead Recovery for General Applications Technical Report CSE-TR-410-99, Univ. of Michigan, Nov. 1998.
[29] The Apache Software Foundation, BCEL: Byte Code Engineering Library http://jakarta.apache.orgbcel, 2004.
[30] Regexp http://jakarta.apache.orgregexp, 2004.
[31] D. Lea, Collections , 2004.
[32] C. Fetzer and K. Högstedt, Self*: A Component Based Data-Flow Oriented Framework for Pervasive Dependability Proc. Eighth IEEE Int'l Workshop Object-Oriented Real-Time Dependable Systems (WORDS 2003), Jan. 2003.

Index Terms:
Software engineering, software/program verification, reliability, testing and debugging, error handling and recovery, reliability, testing tools.
Christof Fetzer, Pascal Felber, Karin H?gstedt, "Automatic Detection and Masking of Nonatomic Exception Handling," IEEE Transactions on Software Engineering, vol. 30, no. 8, pp. 547-560, Aug. 2004, doi:10.1109/TSE.2004.35
Usage of this product signifies your acceptance of the Terms of Use.