PhD Research Talk: Debugging a Memory Manager
The design and implementation of debuggers targeted at memory managers is crucial given the ever-growing popularity of memory safe systems. Year after year, new managed systems are created and existing ones are constantly developed. This pattern results in an ever-growing need for debugging tools targeted at these systems. In this talk I will present a new dynamic debugging tool, Permchecker, for keeping track of read and write permissions of memory. Permchecker makes system-wide assertions about how memory is used. Permchecker is used to codify the distinction between code which is and is not allowed to access certain regions of memory based on the high-level semantics of the code in question. By itself Permchecker does not tend to locate the exact source of bugs. However it does definitively report the presence of explicit programmer-defined permission violations.
In this talk I will answer questions including: Why are existing techniques like printf debugging unsatisfactory? Why are existing automated debugging tools insufficient for the task of debugging a memory manager? How can we leverage system-specific knowledge in the debugging process? I will then present two Permchecker use cases with the Jikes RVM Java Virtual Machine (JVM). This shows how Permchecker detects real bugs in a non-trivial system previously requiring ad-hoc means of detection (sanity checks / assertions). I conclude with an analysis of Permchecker's performance compared to related tools and a discussion of research opportunities stemming from permissions based debugging of memory managed runtime systems.