Tutorial: Using PinPlay for Reproducible Analysis and Replay Debugging

Also seePinPlay Tutorial at PLDI 2016 

PLDI2015 tutorial information:
When: Sunday, June 14, 2015 (morning)
Where: At PLDI in Portland, OR, USA. Room: A103 - A104, first floor, Oregon Convention Center
         You will need to install VirtualBox (www.virtualbox.org) and then 'import' the *.ova file downloaded.
              (default user name [automatic log in] ‘pinplay’, password is ‘password’)

 Reproducible dynamic analysis of parallel programs is hard mainly because their behavior changes from run to run. PinPlay is an execution capture and deterministic replay framework that enables reproducible dynamic analysis of x86 programs. PinPlay is based on the popular Pin dynamic instrumentation system and is distributed (for Linux) as an extended Pin kit at http://www.pinplay.org. The PinPlay kit provides a library that Pin tools can link in with small source changes. A PinPlay enabled Pin tool can act either as a recording tool creating a set of files called a ‘pinball’, or as a replaying tool consuming a pinball instead of a live binary. Replay-based analyses are guaranteed to be reproducible. A very useful example of reproducible analysis is replay-based debugging (see www.drdebug.org ) of multi-threaded programs. The pinball for a run of a program with a bug can be replayed with the replayer tool connected to a debugger (GDB). PinPlay guarantees that the same text/data addresses, and the same thread ordering is seen on each replay/debug session making cyclic debugging of multi-threaded programs a lot easier. 

The tutorial will provide a detailed description of PinPlay, instructions on writing PinPlay enabled Pin tools, and a demonstration of replay-based debugging with PinPlay. The replay debugging framework will be made available at the PinPlay web-site for anyone to tailor to their debugging needs.


 


Schedule (room A103 - A104, first floor, Oregon Convention Center):

Part I: 9AM -- 11AM

  • Intro 
  • Description of PinPlay 
  • Overview of PinADX
  • Application 1: Replay debugging (demo) 

         o Testimonial [Milind ]  

  • Application 2: Dynamic Program Slicing

  <  BREAK  11AM-11:20AM : 20 mins>

Part II: 11:20AM --12:30PM

  • Application 3: DCFG  [ Chuck ]
  • Advanced topic: Exposing & recording bugs (Maple) [ Cristiano ]
  • Wrap-up 

Topics to be covered:  

  •        Overview of Pin
  •          Description of PinPlay :
    o   How to make Pin tools PinPlay enabled
    o   Examples of reproducible analysis 
  •    Overview of PinADX (Pin’s Advanced Debugger Extension) :  how to write your own extended debugger commands
  • Applications of replay: replay-debugging, dynamic program slicing, dynamic control-flow graph (DCFG ) based analysis.
  •    Replay-debugging with PinPlay
    o   A small demo
    o   How to write custom replay debugging tools
    o   A case study/user testimonial
    o   Techniques for exposing/capturing bugs (e.g. Maple which is PinPlay enabled )