Manuel Rigger

School of Computing
National University of Singapore
COM2-3-29, 13 Computing Drive
Singapore 117417
Manuel Rigger is an Assistant Professor leading the TEST Lab, which is part of the PL/SE group at the School of Computing, National University of Singapore. He is working on software reliability, data-centric systems, and programming language implementation. In his recent work, he has been focusing on automatically testing Database Management Systems, part of which he found over 450 bugs in widely-used systems such as SQLite, MySQL, PostgreSQL, MariaDB, and CockroachDB. Prior to joining NUS, Manuel was a postdoc at the Advanced Software Technologies Lab at ETH Zurich, mentored by Zhendong Su. He completed his PhD at Johannes Kepler University Linz, mentored by Hanspeter Mössenböck, where he worked on the safe and efficient execution of unsafe languages (project Sulong). Part of his work was integrated into Oracle’s GraalVM to support the execution of LLVM IR on this platform.
Contact: rigger@nus.edu.sg
Project Links: [SQLancer] [Sulong] [Interview Questions for CS Faculty Jobs] [Getting Academic Positions (GAP) Interviewing Series]
News (all)
May 19, 2023 | Our paper “Detecting Transactional Bugs in Database Engines via Graph-Based Oracle Construction” was accepted at OSDI’23. |
Mar 10, 2023 | I was invited to serve on the ICSE 2024 Doctoral Symposium Program Committee. |
Feb 23, 2023 | Our ICSE 2023 paper “Testing Database Engines via Query Plan Guidance” was awarded an ACM SIGSOFT Distinguished Paper Award. |
Feb 14, 2023 | I gave a virtual talk at University of Melbourne today, hosted by Van-Thuan Pham. |
Feb 7, 2023 | I was invited to give a talk on SQLancer for Friday Hacks, organized by NUS Hackers and hosted by Devansh Shah. |
Main Projects
Selected Publications (all)
ICSE 2023 |
Testing Database Engines via Query Plan Guidance Jinsheng Ba, Manuel Rigger Proceedings of the 45th International Conference on Software Engineering, Melbourne, Australia [PDF] [GitHub] [Artifact] |
ASPLOS 2022 |
Finding Missed Optimizations through the Lens of Dead Code Elimination Theodoros Theodoridis, Manuel Rigger, Zhendong Su Proceedings of the 27th ACM International Conference on Architectural Support for Programming Languages and Operating Systems, Lausanne, Switzerland [PDF] [DOI] [YouTube] [Artifact] [GitHub] |
OSDI 2020 |
Testing Database Engines via Pivoted Query Synthesis Manuel Rigger, Zhendong Su 14th USENIX Symposium on Operating Systems Design and Implementation (OSDI 20), Banff, Alberta, Canada [PDF] [Artifact] [Page] [Slides (long)] [Slides (short)] |
OOPSLA 2020 |
Finding Bugs in Database Systems via Query Partitioning Manuel Rigger, Zhendong Su Proc. ACM Program. Lang. [PDF] [DOI] [Slides] [YouTube] [Artifact] |
ESEC/FSE 2020 |
Detecting Optimization Bugs in Database Engines via Non-Optimizing Reference Engine Construction Manuel Rigger, Zhendong Su Proceedings of the 2020 28th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering, Sacramento, California, United States [PDF] [DOI] [YouTube (Full)] [Slides (Teaser)] [Slides (Full)] [Reddit] [Artifact] |
ASPLOS 2018 |
Sulong, and Thanks for All the Bugs: Finding Errors in C Programs by Abstracting from the Native Execution Model Manuel Rigger, Roland Schatz, Rene Mayrhofer, Matthias Grimmer, Hanspeter Mössenböck Proceedings of the Twenty-Third International Conference on Architectural Support for Programming Languages and Operating Systems, Williamsburg, VA, USA [PDF] [Bibtex] [DOI] [Slides] [ACM authorizer link] |
Awards and Honours
Recent Service (all)
Organization
-
2024:
PLDI (Artifact Evaluation Co-Chair), ISSTA (Workshops Co-Chair)
-
2023:
PLDI (Artifact Evaluation Co-Chair), Dagstuhl Seminar on "Ensuring the Reliability and Robustness of Database Management Systems" (Co-organizer), MET
-
2022:
DBTest
-
2021:
OSDI (Artifact Evaluation Co-Chair), ISSTA (Artifact Evaluation Co-Chair), Dagstuhl Seminar on "Ensuring the Reliability and Robustness of Database Management Systems" (Co-organizer), ecoop-info (Mailing-List Moderator), VMIL (PC co-chair)
-
2020:
ECOOP (Artifact Evaluation Co-Chair)
PC Member
-
2024:
ICSE, ICSE DS
-
2022:
ESEC/FSE 🏆, ASPLOS, ICSE 🏆, ECOOP, MoreVMs, MET
-
2021:
VLDB (Demonstration Track), DBPL
-
2020:
POPL (Artifact Evaluation Committee), ASPLOS (External Review Committee Member), MPLR, DLS, MoreVMs
Recent Talks (all)
-
TAROT Summer School 2023: Towards Correct and Reliable Data-centric Systems (hosted by Mohammad Mousavi and Alastair Donaldson)
-
TU Darmstadt 2023: Towards Correct and Reliable Data-centric Systems (hosted by Carsten Binnig)
-
Friday Hacks
2023: SQLancer: Detecting Logic Bugs in Database Systems via Automated Testing
-
University of Melbourne 2023: Towards Correct and Reliable Data-centric Systems (hosted by Thuan Pham)
-
Chair of Distributed and Operating Systems @ Technical University of Munich (TUM) 2023: Towards Correct and Reliable Data-centric Systems (hosted by Pramod Bhatotia)
Teaching at NUS (all)
-
AY2022/2023 Semester 1: CS6218 "Ensuring the Correctness and Reliability of Data-Centric Systems" (Lecturer)
(Co-)supervised Theses
ETH Zurich Students
Master
-
Matteo Kamm: Testing Graph Databases using Predicate Partitioning
[GitHub]
-
Philippe Voinov: A Practical Structural Code Editor
[GitHub]
[Website]
-
Bernhard Kellermann: Finding Missed Optimizations in Query Optimizers of Relational Databases
[LinkedIn]
-
Juan Díaz Sada: Using Real-world Projects to Extract and Utilize SQL Test Cases
[GitHub]
[LinkedIn]
-
Jack Clark: Verifying Serializability Protocols With Version Order Recovery
[LinkedIn]
[GitHub]
-
Patrick Stäuble: Automatically Finding Logic Bugs in Document-Oriented Database Systems
[GitHub]
-
Dylan Wolff: Value Mutation Testing for SMT Solvers
[Website]
[Twitter]
[LinkedIn]
-
Hannes Pfammatter: Investigating the Effects of Unsafe Compiler Optimizations for Numerical Code
-
Lilian Boesch: Automatically Testing GraalVM
Bachelor
-
Tim Matter: Utilizing SMT Solvers for Database System Testing
-
Bachmann Jules: Detecting Correctness Regression Bugs in DBMS
-
Jonas Müntener: A Reduction Tool for SQL
[GitHub]
-
Attila Hirschi: Using Solvers to Provide Actionable Feedback to Developers for SQL Queries
[GitHub]
-
Andrin Bertschi: A PHP Implementation Built on GraalVM
[GitHub]
[Website]
[Twitter]
-
Antonio Russo: Incorporating Machine-level Coverage Information in Coverage-guided Fuzzing
Johannes Kepler University Linz Students
Master
-
Daniel Pekarek: A Truffle-based Interpreter for x86 Binary Code
-
Raphael Mosaner: On-stack Replacement in Truffle Interpreters for Non-structured Languages
[GitHub]
[paper]
[Twitter]
-
Josef Haider: An ECMAScript 2015-Compliant Automata-based Regular Expression Engine for Graal.js
-
Jacob Kreindl: Source-Level Debugging Support for an LLVM-IR Interpreter
[paper]
[website]
[Twitter]
Bachelor
-
Thomas Pointhuber: The Cicro Benchmarking Suite
[GitHub]
[website]
-
Florian Aufreiter: A Random Test Case Generator for Java Bytecode
[GitHub]
-
Sebastian Kloibhofer: A Class File Reducer for Debugging Java-Bytecode-Based Tools
[GitHub]
-
Daniel Pekarek: Implementing Inline Assembly Support for Sulong
-
Mario Kahlhofer: A Bytecode Interpreter for Lambdas and Streams in Java
[Twitter]
- 2024: PLDI (Artifact Evaluation Co-Chair), ISSTA (Workshops Co-Chair)
- 2023: PLDI (Artifact Evaluation Co-Chair), Dagstuhl Seminar on "Ensuring the Reliability and Robustness of Database Management Systems" (Co-organizer), MET
- 2022: DBTest
- 2021: OSDI (Artifact Evaluation Co-Chair), ISSTA (Artifact Evaluation Co-Chair), Dagstuhl Seminar on "Ensuring the Reliability and Robustness of Database Management Systems" (Co-organizer), ecoop-info (Mailing-List Moderator), VMIL (PC co-chair)
- 2020: ECOOP (Artifact Evaluation Co-Chair)
PC Member
-
2024:
ICSE, ICSE DS
-
2022:
ESEC/FSE 🏆, ASPLOS, ICSE 🏆, ECOOP, MoreVMs, MET
-
2021:
VLDB (Demonstration Track), DBPL
-
2020:
POPL (Artifact Evaluation Committee), ASPLOS (External Review Committee Member), MPLR, DLS, MoreVMs
Recent Talks (all)
-
TAROT Summer School 2023: Towards Correct and Reliable Data-centric Systems (hosted by Mohammad Mousavi and Alastair Donaldson)
-
TU Darmstadt 2023: Towards Correct and Reliable Data-centric Systems (hosted by Carsten Binnig)
-
Friday Hacks
2023: SQLancer: Detecting Logic Bugs in Database Systems via Automated Testing
-
University of Melbourne 2023: Towards Correct and Reliable Data-centric Systems (hosted by Thuan Pham)
-
Chair of Distributed and Operating Systems @ Technical University of Munich (TUM) 2023: Towards Correct and Reliable Data-centric Systems (hosted by Pramod Bhatotia)
Teaching at NUS (all)
-
AY2022/2023 Semester 1: CS6218 "Ensuring the Correctness and Reliability of Data-Centric Systems" (Lecturer)
(Co-)supervised Theses
ETH Zurich Students
Master
-
Matteo Kamm: Testing Graph Databases using Predicate Partitioning
[GitHub]
-
Philippe Voinov: A Practical Structural Code Editor
[GitHub]
[Website]
-
Bernhard Kellermann: Finding Missed Optimizations in Query Optimizers of Relational Databases
[LinkedIn]
-
Juan Díaz Sada: Using Real-world Projects to Extract and Utilize SQL Test Cases
[GitHub]
[LinkedIn]
-
Jack Clark: Verifying Serializability Protocols With Version Order Recovery
[LinkedIn]
[GitHub]
-
Patrick Stäuble: Automatically Finding Logic Bugs in Document-Oriented Database Systems
[GitHub]
-
Dylan Wolff: Value Mutation Testing for SMT Solvers
[Website]
[Twitter]
[LinkedIn]
-
Hannes Pfammatter: Investigating the Effects of Unsafe Compiler Optimizations for Numerical Code
-
Lilian Boesch: Automatically Testing GraalVM
Bachelor
-
Tim Matter: Utilizing SMT Solvers for Database System Testing
-
Bachmann Jules: Detecting Correctness Regression Bugs in DBMS
-
Jonas Müntener: A Reduction Tool for SQL
[GitHub]
-
Attila Hirschi: Using Solvers to Provide Actionable Feedback to Developers for SQL Queries
[GitHub]
-
Andrin Bertschi: A PHP Implementation Built on GraalVM
[GitHub]
[Website]
[Twitter]
-
Antonio Russo: Incorporating Machine-level Coverage Information in Coverage-guided Fuzzing
Johannes Kepler University Linz Students
Master
-
Daniel Pekarek: A Truffle-based Interpreter for x86 Binary Code
-
Raphael Mosaner: On-stack Replacement in Truffle Interpreters for Non-structured Languages
[GitHub]
[paper]
[Twitter]
-
Josef Haider: An ECMAScript 2015-Compliant Automata-based Regular Expression Engine for Graal.js
-
Jacob Kreindl: Source-Level Debugging Support for an LLVM-IR Interpreter
[paper]
[website]
[Twitter]
Bachelor
-
Thomas Pointhuber: The Cicro Benchmarking Suite
[GitHub]
[website]
-
Florian Aufreiter: A Random Test Case Generator for Java Bytecode
[GitHub]
-
Sebastian Kloibhofer: A Class File Reducer for Debugging Java-Bytecode-Based Tools
[GitHub]
-
Daniel Pekarek: Implementing Inline Assembly Support for Sulong
-
Mario Kahlhofer: A Bytecode Interpreter for Lambdas and Streams in Java
[Twitter]
- 2024: ICSE, ICSE DS
- 2022: ESEC/FSE 🏆, ASPLOS, ICSE 🏆, ECOOP, MoreVMs, MET
- 2021: VLDB (Demonstration Track), DBPL
- 2020: POPL (Artifact Evaluation Committee), ASPLOS (External Review Committee Member), MPLR, DLS, MoreVMs
Recent Talks (all)
-
TAROT Summer School 2023: Towards Correct and Reliable Data-centric Systems (hosted by Mohammad Mousavi and Alastair Donaldson)
-
TU Darmstadt 2023: Towards Correct and Reliable Data-centric Systems (hosted by Carsten Binnig)
-
Friday Hacks
2023: SQLancer: Detecting Logic Bugs in Database Systems via Automated Testing
-
University of Melbourne 2023: Towards Correct and Reliable Data-centric Systems (hosted by Thuan Pham)
-
Chair of Distributed and Operating Systems @ Technical University of Munich (TUM) 2023: Towards Correct and Reliable Data-centric Systems (hosted by Pramod Bhatotia)
Teaching at NUS (all)
- AY2022/2023 Semester 1: CS6218 "Ensuring the Correctness and Reliability of Data-Centric Systems" (Lecturer)
(Co-)supervised Theses
ETH Zurich Students
Master
-
Matteo Kamm: Testing Graph Databases using Predicate Partitioning
[GitHub]
-
Philippe Voinov: A Practical Structural Code Editor
[GitHub]
[Website]
-
Bernhard Kellermann: Finding Missed Optimizations in Query Optimizers of Relational Databases
[LinkedIn]
-
Juan Díaz Sada: Using Real-world Projects to Extract and Utilize SQL Test Cases
[GitHub]
[LinkedIn]
-
Jack Clark: Verifying Serializability Protocols With Version Order Recovery
[LinkedIn]
[GitHub]
-
Patrick Stäuble: Automatically Finding Logic Bugs in Document-Oriented Database Systems
[GitHub]
-
Dylan Wolff: Value Mutation Testing for SMT Solvers
[Website]
[Twitter]
[LinkedIn]
-
Hannes Pfammatter: Investigating the Effects of Unsafe Compiler Optimizations for Numerical Code
-
Lilian Boesch: Automatically Testing GraalVM
Bachelor
-
Tim Matter: Utilizing SMT Solvers for Database System Testing
-
Bachmann Jules: Detecting Correctness Regression Bugs in DBMS
-
Jonas Müntener: A Reduction Tool for SQL
[GitHub]
-
Attila Hirschi: Using Solvers to Provide Actionable Feedback to Developers for SQL Queries
[GitHub]
-
Andrin Bertschi: A PHP Implementation Built on GraalVM
[GitHub]
[Website]
[Twitter]
-
Antonio Russo: Incorporating Machine-level Coverage Information in Coverage-guided Fuzzing
Johannes Kepler University Linz Students
Master
-
Daniel Pekarek: A Truffle-based Interpreter for x86 Binary Code
-
Raphael Mosaner: On-stack Replacement in Truffle Interpreters for Non-structured Languages
[GitHub]
[paper]
[Twitter]
-
Josef Haider: An ECMAScript 2015-Compliant Automata-based Regular Expression Engine for Graal.js
-
Jacob Kreindl: Source-Level Debugging Support for an LLVM-IR Interpreter
[paper]
[website]
[Twitter]
Bachelor
-
Thomas Pointhuber: The Cicro Benchmarking Suite
[GitHub]
[website]
-
Florian Aufreiter: A Random Test Case Generator for Java Bytecode
[GitHub]
-
Sebastian Kloibhofer: A Class File Reducer for Debugging Java-Bytecode-Based Tools
[GitHub]
-
Daniel Pekarek: Implementing Inline Assembly Support for Sulong
-
Mario Kahlhofer: A Bytecode Interpreter for Lambdas and Streams in Java
[Twitter]
-
Matteo Kamm: Testing Graph Databases using Predicate Partitioning
[GitHub] -
Philippe Voinov: A Practical Structural Code Editor
[GitHub] [Website] -
Bernhard Kellermann: Finding Missed Optimizations in Query Optimizers of Relational Databases
[LinkedIn] -
Juan Díaz Sada: Using Real-world Projects to Extract and Utilize SQL Test Cases
[GitHub] [LinkedIn] -
Jack Clark: Verifying Serializability Protocols With Version Order Recovery
[LinkedIn] [GitHub] -
Patrick Stäuble: Automatically Finding Logic Bugs in Document-Oriented Database Systems
[GitHub] -
Dylan Wolff: Value Mutation Testing for SMT Solvers
[Website] [Twitter] [LinkedIn] - Hannes Pfammatter: Investigating the Effects of Unsafe Compiler Optimizations for Numerical Code
- Lilian Boesch: Automatically Testing GraalVM
Bachelor
-
Tim Matter: Utilizing SMT Solvers for Database System Testing
-
Bachmann Jules: Detecting Correctness Regression Bugs in DBMS
-
Jonas Müntener: A Reduction Tool for SQL
[GitHub]
-
Attila Hirschi: Using Solvers to Provide Actionable Feedback to Developers for SQL Queries
[GitHub]
-
Andrin Bertschi: A PHP Implementation Built on GraalVM
[GitHub]
[Website]
[Twitter]
-
Antonio Russo: Incorporating Machine-level Coverage Information in Coverage-guided Fuzzing
Johannes Kepler University Linz Students
Master
-
Daniel Pekarek: A Truffle-based Interpreter for x86 Binary Code
-
Raphael Mosaner: On-stack Replacement in Truffle Interpreters for Non-structured Languages
[GitHub]
[paper]
[Twitter]
-
Josef Haider: An ECMAScript 2015-Compliant Automata-based Regular Expression Engine for Graal.js
-
Jacob Kreindl: Source-Level Debugging Support for an LLVM-IR Interpreter
[paper]
[website]
[Twitter]
Bachelor
-
Thomas Pointhuber: The Cicro Benchmarking Suite
[GitHub]
[website]
-
Florian Aufreiter: A Random Test Case Generator for Java Bytecode
[GitHub]
-
Sebastian Kloibhofer: A Class File Reducer for Debugging Java-Bytecode-Based Tools
[GitHub]
-
Daniel Pekarek: Implementing Inline Assembly Support for Sulong
-
Mario Kahlhofer: A Bytecode Interpreter for Lambdas and Streams in Java
[Twitter]
- Tim Matter: Utilizing SMT Solvers for Database System Testing
- Bachmann Jules: Detecting Correctness Regression Bugs in DBMS
-
Jonas Müntener: A Reduction Tool for SQL
[GitHub] -
Attila Hirschi: Using Solvers to Provide Actionable Feedback to Developers for SQL Queries
[GitHub] -
Andrin Bertschi: A PHP Implementation Built on GraalVM
[GitHub] [Website] [Twitter] - Antonio Russo: Incorporating Machine-level Coverage Information in Coverage-guided Fuzzing
Johannes Kepler University Linz Students
Master
-
Daniel Pekarek: A Truffle-based Interpreter for x86 Binary Code
-
Raphael Mosaner: On-stack Replacement in Truffle Interpreters for Non-structured Languages
[GitHub]
[paper]
[Twitter]
-
Josef Haider: An ECMAScript 2015-Compliant Automata-based Regular Expression Engine for Graal.js
-
Jacob Kreindl: Source-Level Debugging Support for an LLVM-IR Interpreter
[paper]
[website]
[Twitter]
Bachelor
-
Thomas Pointhuber: The Cicro Benchmarking Suite
[GitHub]
[website]
-
Florian Aufreiter: A Random Test Case Generator for Java Bytecode
[GitHub]
-
Sebastian Kloibhofer: A Class File Reducer for Debugging Java-Bytecode-Based Tools
[GitHub]
-
Daniel Pekarek: Implementing Inline Assembly Support for Sulong
-
Mario Kahlhofer: A Bytecode Interpreter for Lambdas and Streams in Java
[Twitter]
- Daniel Pekarek: A Truffle-based Interpreter for x86 Binary Code
-
Raphael Mosaner: On-stack Replacement in Truffle Interpreters for Non-structured Languages
[GitHub] [paper] [Twitter] - Josef Haider: An ECMAScript 2015-Compliant Automata-based Regular Expression Engine for Graal.js
-
Jacob Kreindl: Source-Level Debugging Support for an LLVM-IR Interpreter
[paper] [website] [Twitter]
Bachelor
-
Thomas Pointhuber: The Cicro Benchmarking Suite
[GitHub]
[website]
-
Florian Aufreiter: A Random Test Case Generator for Java Bytecode
[GitHub]
-
Sebastian Kloibhofer: A Class File Reducer for Debugging Java-Bytecode-Based Tools
[GitHub]
-
Daniel Pekarek: Implementing Inline Assembly Support for Sulong
-
Mario Kahlhofer: A Bytecode Interpreter for Lambdas and Streams in Java
[Twitter]
-
Thomas Pointhuber: The Cicro Benchmarking Suite
[GitHub] [website] -
Florian Aufreiter: A Random Test Case Generator for Java Bytecode
[GitHub] -
Sebastian Kloibhofer: A Class File Reducer for Debugging Java-Bytecode-Based Tools
[GitHub] - Daniel Pekarek: Implementing Inline Assembly Support for Sulong
-
Mario Kahlhofer: A Bytecode Interpreter for Lambdas and Streams in Java
[Twitter]