PHALANX: parallel checking of expressive heap assertions

Unrestricted use of heap pointers makes software systems difficult to understand and to debug. To address this challenge, we developed PHALANX -- a practical framework for dynamically checking expressive heap properties such as ownership, sharing and reachability. PHALANX uses novel parallel algorithms to efficiently check a wide range of heap properties utilizing the available cores. PHALANX runtime is implemented on top of IBM's Java production virtual machine. This has enabled us to apply our new techniques to real world software. We checked expressive heap properties in various scenarios and found the runtime support to be valuable for debugging and program understanding. Further, our experimental results on DaCapo and other benchmarks indicate that evaluating heap queries using parallel algorithms can lead to significant performance improvements, often resulting in linear speedups as the number of cores increases. To encourage adoption by programmers, we extended an existing JML compiler to translate expressive JML assertions about the heap into their efficient implementation provided by PHALANX. To debug her program, a programmer can annotate it with expressive heap assertions in JML, that are efficiently checked by PHALANX.

[1]  Samuel Z. Guyer,et al.  GC assertions: using the garbage collector to check heap properties , 2008, MSPC '08.

[2]  Matthew J. Parkinson,et al.  jStar: towards practical verification for java , 2008, OOPSLA.

[3]  Michael D. Bond,et al.  Bell: bit-encoding online memory leak detection , 2006, ASPLOS XII.

[4]  Henry G. Baker,et al.  “Use-once” variables and linear objects: storage management, reflection and multi-threading , 1995, SIGP.

[5]  Shmuel Sagiv,et al.  TVLA: A System for Implementing Static Analyses , 2000, SAS.

[6]  Liam Roditty,et al.  A faster and simpler fully dynamic transitive closure , 2003, SODA '03.

[7]  Kathryn S. McKinley,et al.  Cork: dynamic memory leak detection for garbage-collected languages , 2007, POPL '07.

[8]  Reinhard Wilhelm,et al.  Parametric shape analysis via 3-valued logic , 1999, POPL '99.

[9]  Amer Diwan,et al.  The DaCapo benchmarks: java benchmarking development and analysis , 2006, OOPSLA '06.

[10]  Nick Mitchell,et al.  The Runtime Structure of Object Ownership , 2006, ECOOP.

[11]  Lars Ole Andersen,et al.  Program Analysis and Specialization for the C Programming Language , 2005 .

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

[13]  Alexander Aiken,et al.  Effective static race detection for Java , 2006, PLDI '06.

[14]  Doug Lea,et al.  Concurrent programming in Java - design principles and patterns , 1996, Java series.

[15]  Vinod Ganapathy,et al.  HeapMD: identifying heap-based bugs using anomaly detection , 2006, ASPLOS XII.

[16]  Jens Palsberg,et al.  Encapsulating objects with confined types , 2001, TOPL.

[17]  Alexander Aiken,et al.  How is aliasing used in systems software? , 2006, SIGSOFT '06/FSE-14.

[18]  Alan Burns,et al.  Concurrent programming , 1980, Operating Systems Engineering.

[19]  Peter Müller,et al.  Ownership transfer in universe types , 2007, OOPSLA.

[20]  Viktor Kuncak,et al.  Full functional verification of linked data structures , 2008, PLDI '08.

[21]  Feng Qian,et al.  An adaptive, region-based allocator for java , 2002, ISMM '02.

[22]  Eran Yahav,et al.  QVM: an efficient runtime for detecting defects in deployed systems , 2008, OOPSLA '08.

[23]  HauswirthMatthias,et al.  Low-overhead memory leak detection using adaptive statistical profiling , 2004 .

[24]  Nick Mitchell,et al.  The causes of bloat, the limits of health , 2007, OOPSLA.

[25]  Martin C. Rinard,et al.  ACM Conference on Object-Oriented Programming, Systems, Languages and Applications (OOPSLA), November 2002 Ownership Types for Safe Programming: Preventing Data Races and Deadlocks , 2022 .

[26]  James Noble,et al.  Ownership types for flexible alias protection , 1998, OOPSLA '98.

[27]  Taiichi Yuasa,et al.  Real-time garbage collection on general-purpose machines , 1990, J. Syst. Softw..

[28]  Craig Chambers,et al.  Alias annotations for program understanding , 2002, OOPSLA '02.

[29]  Eran Yahav,et al.  Modular Shape Analysis for Dynamically Encapsulated Programs , 2007, ESOP.

[30]  Wei-Ngan Chin,et al.  Runtime Checking for Separation Logic , 2008, VMCAI.

[31]  Maged M. Michael,et al.  Idempotent work stealing , 2009, PPoPP '09.

[32]  Brian Demsky,et al.  Efficient specification-assisted error localization , 2004 .

[33]  Peter W. O'Hearn,et al.  Compositional Shape Analysis by Means of Bi-Abduction , 2011, JACM.

[34]  Peter W. O'Hearn,et al.  Scalable Shape Analysis for Systems Code , 2008, CAV.

[35]  Anindya Banerjee,et al.  Ownership confinement ensures representation independence for object-oriented programs , 2002, JACM.

[36]  Eran Yahav,et al.  Chameleon: adaptive selection of collections , 2009, PLDI '09.

[37]  Bjarne Steensgaard,et al.  Points-to analysis in almost linear time , 1996, POPL '96.

[38]  Liuba Shrira,et al.  Ownership types for object encapsulation , 2003, POPL '03.

[39]  John Hogg,et al.  Islands: aliasing protection in object-oriented languages , 1991, OOPSLA '91.

[40]  Hanbing Liu,et al.  Java Program Verification via a JVM Deep Embedding in ACL2 , 2004, TPHOLs.

[41]  David Gerard Clarke,et al.  Object ownership and containment , 2003 .