CS 343
Syllabus
Static Bugfinding
March 29 (Tue)
March 31 (Thu)
- A Few Billion Lines of Code Later: Using Static Analysis to Find Bugs in the Real World ,
Al Bessey, Ken Block, Ben Chelf, Andy Chou, Bryan Fulton, Seth Hallem, Charles Henri-Gros, Asya Kamsky, Scott McPeak, and Dawson Engler
- Slides
Dynamic Analysis
April 5 (Tue)
April 7 (Thu)
April 12 (Tue)
- Valgrind: A Framework for Heavyweight Dynamic Binary Instrumentation,
Nicholas Nethercote and Julian Seward
- Example tool: Lackey (Unfortunate that writing a trivial tool is so complicated.)
April 14 (Thu)
- Pin: Building Customized Program Analysis Tools with Dynamic Instrumentation ,
Chi-Keung Luk, Robert Cohn, Robert Muth, Harish Patil, Artur Klauser, Geoff Lowney, Steven Wallace, Vijay Janapa Reddi, and Kim Hazelwood
- Optional: Pin User Manual
- Example PIN tool: cache simulator dcache.cpp dcache.H
-
- Comment: much, much simpler to write tools than Valgrind, but handles fewer corner cases.
-
Optimizing JITs
April 19 (Tue)
- Dynamo: A Transparent Dynamic Optimization System ,
Vasanth Bala, Evelyn Duesterwald, and Sanjeev Banerjia
April 21 (Thu)
- Trace-based Just-in-Time Type Specialization for Dynamic Languages ,
Andreas Gal, Brendan Eich, Mike Shaver, David Anderson, David Mandelin, Mohammad R. Haghighat, Blake Kaplan, Graydon Hoare, Boris Zbarsky, Jason Orendorff, Jesse Ruderman, Edwin Smith, Rick Reitmaier, Michael Bebenita, Mason Chang, and Michael Franz.
-
- Comment: Essentially identical to Dynamo with some simple extensions to handle dynamic types.
- Excellent discussion of trace-based vs method-based JITs and Tracemonkey --- it seems the Mozilla is going to use method-based as a fall-back.
Binary Translation
April 26 (Tue)
- FX!32: A Profile-Directed Binary Translator,
Anton Chernoff, Mark Herdeg, Ray Hookway, Chris Reeve, Norman Rubin, Tony Tye, S. Bharadwaj Yadavalli, and John Yates
- The Technology Behind Crusoe(tm) Processors,
Alexander Klaiber
-
- Optional: Binary Translation,
Richard L. Sites, Anton Chernoff, Matthew B. Kirk, Maurice P. Marks, and Scott G. Robinson
Midterm! April 28th
Dynamic Code Generation
May 3 (Tue)
Cool Hacks
May 5th (Thu)
May 10 (Tue)
Dynamic Bugfinding
May 12 (Thu)
- Finding and Understanding Bugs in C Compilers,
Xuejun Yang, Yang Chen, Eric Eide, and John Regehr
- Annotated copy.
- Optional: Interesting author discussion on undefined behavior
-
- Comment: seems good to combine this system with Collberg's.
May 17 (Tue)
Sandboxing
May 19 (Thu)
- Native Client: A Sandbox for Portable, Untrusted x86 Native Code,
Bennet Yee, David Sehr, Gregory Dardyk, J. Bradley Chen, Robert Muth, Tavis Ormandy, Shiki Okasaka, Neha Narula, and Nicholas Fullagar
- Annotated copy.
- A cool application of Native Client
Memory Management in C
May 24 (Tue)
May 26 (Thu)