A List of Papers
Reading papers may be hard, especially when essential background knowledge is missing. Ask your advisor (or peers) for help.
Studies
setuid
demystified. USENIX Security'02.- Learning from mistakes — A comprehensive study on real world concurrency bug characteristics. ASPLOS'08.
- Understanding integer overflow in C/C++. ICSE'12.
- All file systems are not created equal: On the complexity of crafting crash-consistent applications. OSDI'14.
- Ad hoc transactions in Web applications: The good, the bad, and the ugly. SIGMOD'22.
Compilers
- LLVM: A compilation framework for lifelong program analysis & transformation. CGO'04.
- QEMU, a fast and portable dynamic translator. USENIX ATC'05.
- Stochastic superoptimization. ASPLOS'13.
- Copy-and-patch compilation: A fast compilation algorithm for high-level languages and bytecode. OOPSLA'21.
Static Analysis and Checking
- Bugs as deviant behavior: A general approach to inferring errors in systems code. SOSP'01.
- Finding bugs is easy. OOPSLA'04.
- Pointer Analysis. NOW Books, 2015.
Dynamic Analysis and Trace
- Efficient path profiling. MICRO'96.
- ReVirt: Enabling intrusion analysis through virtual-machine logging and replay. OSDI'02.
- Valgrind: A framework for heavyweight dynamic binary instrumentation. PLDI'07.
- FastTrack: Efficient and precise dynamic race detection. PLDI'09.
- AddressSanitizer: A fast address sanity checker. USENIX ATC'12.
Debugging
- Simplifying and isolating failure-inducing input. IEEE Transactions on Software Engineering (TSE), 28(2), 2002.
- Bug isolation via remote program sampling. PLDI'03.
- Repair of boolean programs with an application to C. CAV'06.
- Automatically finding patches using genetic programming. ICSE'09.
Testing and Validation
- EXPLODE: A lightweight, general system for finding serious storage system errors. OSDI'06.
- KLEE: Unassisted and automatic generation of high-coverage tests for complex systems programs. OSDI'08.
- CrystalBall: Predicting and preventing inconsistencies in deployed distributed systems. NSDI'09.
- Compiler validation via equivalence modulo inputs. PLDI'14.
- IJON: Exploring deep state spaces via fuzzing. SP'20.
Verification
- The existence of refinement mappings. Theoretical Computer Science (TCS), 82(2), 1991.
- Proof-carrying code. POPL'97.
- Model checking for programming languages using VeriSoft. POPL'97.
- An extensible SAT-solver. SAT'03.
- Hyperkernel: Push-button verification of an OS kernel. SOSP'17.
Synthesis
- Synthesis: Dreams $\Rightarrow$ programs. IEEE Transactions on Software Engineering (TSE), 5(4), 1979.
- Dynamically discovering likely program invariants to support program evolution. IEEE Transactions on Software Engineering (TSE), 27(2), 2001.
- Combinatorial sketching for finite programs. ASPLOS'06.
- Scaling enumerative program synthesis via divide and conquer. TACAS'17.
- Multi-modal program inference: A marriage of pre-trained language models and component-based synthesis. OOPSLA'21.