This is a nonexhaustive list of interesting papers and background materials.
Feel free to suggest another paper that interests you!
You might look through the proceedings of
ISSTA, ICSE, PLDI, FSE, ICST, ASPLOS, ICSM, ASE, ISMM, Middleware, ICPC,
POPL, Usenix Security, SAS, or WODA.
Debugging
- Simplifying and Isolating Failure Inducing Input
- HDD: Hierarchical Delta Debugging
- Empirical evaluation of the tarantula automatic fault-localization technique
- Isolating failure causes through test case generation
- Golden implementation driven software debugging
- F3: Fault Localization for Field Failures
- Locating Faults Through Automated Predicate Switching
- Isolating Cause-Effect Chains from Computer Programs
- Error Explanation with Distance Metrics
- Comparative Causality: Explaining The Differences Between Executions
- Towards Optimization-Safe Systems: Analyzing the Impact of Undefined Behavior
- Regression Tests to Expose Change Interaction Errors
- Lightweight Control-Flow Instrumentation and
Postmortem Analysis in Support of Debugging
- AddressSanitizer: A Fast Address Sanity Checker
Concurrency
- Eraser: A Dynamic Data Race Detector for Multithreaded Programs
- Time, Clocks, and the Ordering of Events in a Distributed System
- Hybrid Dynamic Data Race Detection
- Effective race detection for event-driven programs
- AVIO: Detecting Atomicity Violations via Access Interleaving Invariants
- RaceMob: crowdsourced data race detection
- Velodrome: a sound and complete dynamic atomicity checker for multithreaded
programs
- DoubleChecker: Efficient Sound and Precise Atomicity Checking
- Analyzing Concurrency Bugs using Dual Slicing
- MUVI: Automatically Inferring Multi-Variable Access
- ConMem: Detecting Crash-Triggering Concurrency Bugs through an Effect-Oriented
Approach
- CHESS: A Systematic Testing Tool for Concurrent Software
Test Generation & Property Checking
- Symbolic Execution and Program Testing
- DART: Directed Automated Random Testing
- CUTE: A Concolic Unit Testing Engine for C
- KLEE: Unassisted and Automatic Generation of High-Coverage Tests for Complex
Systems Programs
- SYNERGY: A New Algorithm for Property Checking
- Proofs from tests
- EvoSuite: automatic test suite generation for object-oriented software
- Whole Test Suite Generation
- Korat: Automated Testing Based on Java Predicates
- Test Generation through Programming in UDITA
Profiling
- Efficient Path Profiling
- Probabilistic Calling Context
- Precise Calling Context Encoding
- Efficient Context Sensitivity for Dynamic Analyses via Calling Context Uptrees
and Customized Memory Management
- Identifying Execution Points for Dynamic Analyses
- DeltaPath: Precise and Scalable Calling Context Encoding
Security
- Control Flow Integrity
- Securing software by enforcing data-flow integrity
- LIFT: A Low-Overhead Practical Information Flow Tracking System for Detecting
Security Attacks
- AEG: Automatic Exploit Generation
- Finding Security Vulnerabilities in Java Applications with Static Analysis
Distributed Systems
- Life, Death, and the Critical Transition: Detecting Liveness Bugs in Systems
Code
- Finding Latent Performance Bugs in Systems Implementations
- Gatling: Automatic Attack Discovery in Large-Scale Distributed Systems