An Optimized Memory Monitoring for Runtime Assertion Checking of C Programs

Runtime assertion checking provides a powerful, highly automatizable technique to detect violations of specified program properties. However, monitoring of annotations for pointers and memory locations (such as being valid, initialized, in a particular block, with a particular offset, etc.) is not straightforward and requires systematic instrumentation and monitoring of memory-related operations.

[1]  Mark Sullivan,et al.  Software defects and their impact on system availability-a study of field failures in operating systems , 1991, [1991] Digest of Papers. Fault-Tolerant Computing: The Twenty-First International Symposium.

[2]  Cyrille Comar,et al.  Integrating Formal Program Verication with Testing , 2012 .

[3]  Nikolai Kosmatov,et al.  Common specification language for static and dynamic analysis of C programs , 2013, SAC '13.

[4]  Paul H. J. Kelly,et al.  Backwards-Compatible Bounds Checking for Arrays and Pointers in C Programs , 1997, AADEBUG.

[5]  Todd M. Austin,et al.  Efficient detection of all pointer and array access errors , 1994, PLDI '94.

[6]  Flemming Nielson,et al.  Principles of Program Analysis , 1999, Springer Berlin Heidelberg.

[7]  Wojciech Szpankowski,et al.  Patricia tries again revisited , 1990, JACM.

[8]  Derek Bruening,et al.  AddressSanitizer: A Fast Address Sanity Checker , 2012, USENIX Annual Technical Conference.

[9]  A. M. Turing,et al.  Checking a large routine , 1989 .

[10]  Olatunji Ruwase,et al.  A Practical Dynamic Buffer Overflow Detector , 2004, NDSS.

[11]  Patrick Baudin,et al.  Caveat: a tool for software validation , 2002, Proceedings International Conference on Dependable Systems and Networks.

[12]  Marcello M. Bonsangue,et al.  Formal Methods for Components and Objects - 8th International Symposium, FMCO 2009, Eindhoven, The Netherlands, November 4-6, 2009. Revised Selected Papers , 2010, FMCO.

[13]  J. Filliâtre,et al.  ACSL: ANSI/ISO C Specification Language , 2008 .

[14]  Rob Johnson,et al.  CAWDOR: Compiler Assisted Worm Defense , 2012, 2012 IEEE 12th International Working Conference on Source Code Analysis and Manipulation.

[15]  S SohiGurindar,et al.  Efficient detection of all pointer and array access errors , 1994 .

[16]  Yutaka Oiwa,et al.  Implementation of the memory-safe full ANSI-C compiler , 2009, PLDI '09.

[17]  Yoonsik Cheon,et al.  A Runtime Assertion Checker for the Java Modeling Language (JML) , 2003, ICSE 2003.

[18]  George C. Necula,et al.  CCured: type-safe retrofitting of legacy software , 2005, TOPL.

[19]  Martin Leucker,et al.  A brief account of runtime verification , 2009, J. Log. Algebraic Methods Program..

[20]  Wei Xu,et al.  An efficient and backwards-compatible transformation to ensure memory safety of C programs , 2004, SIGSOFT '04/FSE-12.

[21]  Claude Marché,et al.  The Why/Krakatoa/Caduceus Platform for Deductive Program Verification , 2007, CAV.

[22]  Nikolai Kosmatov,et al.  Automating structural testing of C programs: Experience with PathCrawler , 2009, 2009 ICSE Workshop on Automation of Software Test.

[23]  簡聰富,et al.  物件導向軟體之架構(Object-Oriented Software Construction)探討 , 1989 .

[24]  Nicholas Nethercote,et al.  How to shadow every byte of memory used by a program , 2007, VEE '07.

[25]  Miguel Castro,et al.  Baggy Bounds Checking: An Efficient and Backwards-Compatible Defense against Out-of-Bounds Errors , 2009, USENIX Security Symposium.

[26]  Nikolai Kosmatov,et al.  Frama-C - A Software Analysis Perspective , 2012, SEFM.

[27]  Gary T. Leavens,et al.  How the design of JML accommodates both runtime assertion checking and formal verification , 2003, Sci. Comput. Program..

[28]  Dinakar Dhurjati,et al.  Backwards-compatible array bounds checking for C with very low overhead , 2006, ICSE.

[29]  Nikolai Kosmatov,et al.  A Lesson on Runtime Assertion Checking with Frama-C , 2013, RV.

[30]  David S. Rosenblum,et al.  A historical perspective on runtime assertion checking in software development , 2006, SOEN.

[31]  Gary T. Leavens,et al.  How the Design of JML Accomodates Both Runtime Assertion Checking and Formal Verification , 2002, FMCO.

[32]  Rajeev Barua,et al.  MemSafe: Ensuring the Spatial and Temporal Memory Safety of C at Runtime , 2010, 2010 10th IEEE Working Conference on Source Code Analysis and Manipulation.