CSC 591/791 Reliable Software Systems
Logistics Instructor: Guoliang Jin M & W 1:30-2:45PM, EBI 2015 guoliang_jin@ncsu.edu EBII 2258 M & W 1:30-2:45PM, EBI 2015 TA/Grade: None Web pages: http://people.engr.ncsu.edu/gjin2/Classes/591/Spring2016/index.html (still under construction) https://moodle1516-courses.wolfware.ncsu.edu/course/view.php?id=6593
Who Am I? Joined the Pack in Jan. 2015 Got my Ph.D. from UW-Madison in Dec. 2014 Interested in software system reliability Focus: detecting, diagnosing, and fixing various kinds of software bugs
Who Are You? Name Program Research/employment interests How does reliability relate to your interests? Particular topics you are interested in?
Course Structure Read and discuss papers on software reliability Papers from system, PL, and SE Read every paper and present 2 or 3 Write review once every week No textbook No exam Do a research-oriented project
General Policies Attend every class unless you have to miss it Arrive on tome unless you have to be late
Grade Components Paper presentations: 20% Paper reviews: 20% Class participation: 10% Final project: 50%
Paper Presentations: 20% Two papers on a related topic Each presentation: Around 25 min talk Around 10 min discussion Present 2-3 papers the whole semester You can also suggest papers to read Suggest papers together with your first review Then we finalize the list and assign presenters
Presentation Tips Practice your talk! Make sure the audience can follow you Use examples Do not just repeat the paper More tips will be posted online
Paper Reviews: 20% One paper review for one paper every week Limit yourself to 800 words Discuss the following aspects: Problem Solution The cool part The flaw Ideas for future work Problems in understanding the paper
Review Tips Submit your review on moodle no later than 11:59PM the day before class Don’t simply repeat the paper Check your spelling and grammer
Class Participation: 10% Attend each class Involved in the discussion
Final Project: 50% Group of one of two You are encouraged to propose your project Take the ownership of the project and push to get it published More details in two weeks
Topics: Program Analysis Approaches Static analysis Dynamic analysis Symbolic execution Concolic testing Delta debugging Statistical debugging
Topics: Concurrency Bugs Concurrency bug study Data race Atomicity Deadlock Automated fixing Record & replay Deterministic multithreading
Topic: Others Performance bugs C compiler bugs Memory bug detection and fixing Program invariants Logging Recovery Automated assignments grading Architecture support Mobil system debugging Distributed system debugging
Previous Work and Publications 1 Automated concurrency-bug fixing Automated Atomicity-Violation Fixing, PLDI '11 Automated Concurrency-Bug Fixing, OSDI '12 Production-run multi-threaded software failure diagnosis Instrumentation and Sampling Strategies for Cooperative Concurrency Bug Isolation, OOPSLA '10 Production-Run Software Failure Diagnosis via Hardware Performance Counters, ASPLOS '13 Leveraging the Short-Term Memory of Hardware to Diagnose Production-Run Software Failures, ASPLOS '14
Previous Work and Publications 2 Performance bug characteristics study and detection Understanding and Detecting Real-World Performance Bugs, PLDI '12 Performance bug patch validation Validating Library Usage Interactively, CAV '13 Concurrency bug detection ConSeq: Detecting Concurrency Bugs through Sequential Errors, ASPLOS '11
Previous Work and Publications 3 More studies What change history tells us about thread synchronization, FSE '15 Automatic Server Hang Bug Diagnosis: Feasible Reality or Pipe Dream? ICAC '15 Execution problem detection for cloud CloudSeer: Workflow Monitoring of Cloud Infrastructures via Interleaved Logs, ASPLOS '16
High-level Approach Use real-world data to guide the design of various tools Real-world bug study Real-world software evolution study Design end-to-end tool chains Bug understanding Bug detection Failure diagnosis Bug fixing
Review One and Suggest Topics Read “Checking System Rules Using System-Specific, Programmer-Written Compiler Extensions” Skim “A few Billion Lines of code Later using static Analysis to find Bugs in the Real World” Read “Towards Optimization-Safe Systems: Analyzing the Impact of Undefined Behavior” Skim LLVM tutorial http://llvm.org/docs/tutorial/index.html