Demo Data from SIGIR 2026 / reviewers in the wild / expert
Manuel Rigger
dblp:133/8711
· DBLP profile ↗
35ranked-venue papers
9as first author
26since 2021 · last 2026
0000-0001-8303-2099ORCID · verified
Domains — the database's venue-derived domains; a paper can count in several
Software engineering, systems software and programming languages · 24 · 6 first-author · 17 since 2021Databases, data management, data science and information retrieval · 7 · 1 first-author · 7 since 2021Systems, architecture and hardware · 5 · 2 first-author · 3 since 2021Security and privacy · 2 · 1 first-author · 1 since 2021
Expertise — from the expertise taxonomy: the topics of the expert's papers under the CCF categories. A weight counts papers with recency: 1 for a paper about the topic, 0.3 when the topic is its context, halved every five years.
| Software engineering, system software, and programming languages
28 papers |
Software testing · 68% Software maintenance and evolution · 12% Compilers and program optimization · 6% | |
| Databases, data mining, and information retrieval
15 papers |
Query processing and optimization · 31% Database system architecture and tuning · 20% Transaction processing and concurrency control · 20% |
Topics — the 30 heaviest of 61, each with the papers that count most for it
| Topic | Weight | Papers | Last | Evidence papers |
|---|---|---|---|---|
Software testing
database testing |
5.1 | 7 | 2025 | Towards a Unified Query Plan Representation · ICDE 2025 Finding Logic Bugs in Spatial Database Engines via Affine Equivalent Inputs · Proc. ACM Manag. Data 2024 Keep It Simple: Testing Databases via Differential Query Plans · Proc. ACM Manag. Data 2024 |
Software testing
differential testing |
3.6 | 5 | 2025 | On the Mistaken Assumption of Interchangeable Deep Reinforcement Learning Implementations · ICSE 2025 Finding Cross-Rule Optimization Bugs in Datalog Engines · Proc. ACM Program. Lang. 2024 Keep It Simple: Testing Databases via Differential Query Plans · Proc. ACM Manag. Data 2024 |
Software testing
metamorphic testing |
3.3 | 4 | 2025 | Constant Optimization Driven Database System Testing · Proc. ACM Manag. Data 2025 Finding Logic Bugs in Graph-processing Systems via Graph-cutting · Proc. ACM Manag. Data 2025 Finding Logic Bugs in Spatial Database Engines via Affine Equivalent Inputs · Proc. ACM Manag. Data 2024 |
Software testing › database testing
database system testing |
2.5 | 4 | 2026 | Scaling Automated Database System Testing · ASPLOS (2) 2026 Constant Optimization Driven Database System Testing · Proc. ACM Manag. Data 2025 Detecting optimization bugs in database engines via non-optimizing reference engine construction · ESEC/SIGSOFT FSE 2020 |
Software testing
automated testing |
2.4 | 3 | 2026 | Scaling Automated Database System Testing · ASPLOS (2) 2026 Keep It Simple: Testing Databases via Differential Query Plans · Proc. ACM Manag. Data 2024 Testing Database Engines via Query Plan Guidance · ICSE 2023 |
Software testing
test oracle |
2.4 | 3 | 2026 | Scaling Automated Database System Testing · ASPLOS (2) 2026 Finding Cross-Rule Optimization Bugs in Datalog Engines · Proc. ACM Program. Lang. 2024 Testing Graph Database Engines via Query Partitioning · ISSTA 2023 |
Software testing › fault detection
logic bug detection |
2.4 | 3 | 2025 | Constant Optimization Driven Database System Testing · Proc. ACM Manag. Data 2025 Finding Logic Bugs in Graph-processing Systems via Graph-cutting · Proc. ACM Manag. Data 2025 Testing Graph Database Engines via Query Partitioning · ISSTA 2023 |
Software maintenance and evolution
build systems |
1.6 | 2 | 2025 | Automatic Fixing of Missing Dependency Errors · ASE 2025 Detecting Build Dependency Errors in Incremental Builds · ISSTA 2024 |
Database system architecture and tuning › DBMS bug detection
logic bug detection |
1.4 | 3 | 2024 | Detecting Logic Bugs in Graph Database Management Systems via Injective and Surjective Graph Query Transformation · ICSE 2024 Finding bugs in database systems via query partitioning · Proc. ACM Program. Lang. 2020 Keep It Simple: Testing Databases via Differential Query Plans · Proc. ACM Manag. Data 2024 |
Query processing and optimization
query execution |
1.3 | 3 | 2025 | Towards a Unified Query Plan Representation · ICDE 2025 CERT: Finding Performance Issues in Database Systems Through the Lens of Cardinality Estimation · ICSE 2024 Testing Database Engines via Query Plan Guidance · ICSE 2023 |
Software testing
test generation |
1.1 | 2 | 2023 | Testing Database Engines via Query Plan Guidance · ICSE 2023 Testing Database Engines via Pivoted Query Synthesis · OSDI 2020 |
Graph data management
graph database |
1.0 | 2 | 2025 | Detecting Logic Bugs in Graph Database Management Systems via Injective and Surjective Graph Query Transformation · ICSE 2024 Finding Logic Bugs in Graph-processing Systems via Graph-cutting · Proc. ACM Manag. Data 2025 |
Software maintenance and evolution › build systems
incremental build |
1.0 | 2 | 2025 | Detecting Build Dependency Errors in Incremental Builds · ISSTA 2024 Automatic Fixing of Missing Dependency Errors · ASE 2025 |
Query processing and optimization
query optimization |
1.0 | 2 | 2024 | CERT: Finding Performance Issues in Database Systems Through the Lens of Cardinality Estimation · ICSE 2024 Keep It Simple: Testing Databases via Differential Query Plans · Proc. ACM Manag. Data 2024 |
Software testing
compiler testing |
0.9 | 2 | 2024 | Finding Cross-Rule Optimization Bugs in Datalog Engines · Proc. ACM Program. Lang. 2024 Understanding GCC builtins to develop better tools · ESEC/SIGSOFT FSE 2019 |
Data models and query languages
graph query language |
0.9 | 1 | 2025 | Flexible and Expressive Typed Path Patterns for GQL · Proc. ACM Program. Lang. 2025 |
Query processing and optimization › query planning
query plan representation |
0.9 | 1 | 2025 | Towards a Unified Query Plan Representation · ICDE 2025 |
Debugging and program repair
automated program repair |
0.9 | 1 | 2025 | Automatic Fixing of Missing Dependency Errors · ASE 2025 |
Software testing
fuzzing |
0.9 | 1 | 2025 | Fuzzing the PHP Interpreter via Dataflow Fusion · USENIX Security Symposium 2025 |
Systems and software security
memory safety |
0.8 | 2 | 2021 | SANRAZOR: Reducing Redundant Sanitizer Checks in C/C++ Programs · OSDI 2021 Sulong, and Thanks for All the Bugs: Finding Errors in C Programs by Abstracting from the Native Execution Model · ASPLOS 2018 |
Query processing and optimization
cardinality estimation |
0.8 | 1 | 2024 | CERT: Finding Performance Issues in Database Systems Through the Lens of Cardinality Estimation · ICSE 2024 |
Data mining › anomaly detection › outlier detection
isolation-based anomaly detection |
0.8 | 1 | 2024 | Validating Database System Isolation Level Implementations with Version Certificate Recovery · EuroSys 2024 |
Transaction processing and concurrency control
isolation level verification |
0.8 | 1 | 2024 | Validating Database System Isolation Level Implementations with Version Certificate Recovery · EuroSys 2024 |
Transaction processing and concurrency control › serializability
serializability violation detection |
0.8 | 1 | 2024 | Validating Database System Isolation Level Implementations with Version Certificate Recovery · EuroSys 2024 |
Transaction processing and concurrency control
transaction isolation |
0.8 | 1 | 2024 | Validating Database System Isolation Level Implementations with Version Certificate Recovery · EuroSys 2024 |
Program analysis › static analysis
bug detection |
0.8 | 1 | 2024 | Inconsistencies in TeX-Produced Documents · ISSTA 2024 |
Software maintenance and evolution › build systems
build dependency error detection |
0.8 | 1 | 2024 | Detecting Build Dependency Errors in Incremental Builds · ISSTA 2024 |
Programming languages and type systems › logic programming
datalog |
0.8 | 1 | 2024 | Finding Cross-Rule Optimization Bugs in Datalog Engines · Proc. ACM Program. Lang. 2024 |
Debugging and program repair › performance debugging
performance bug detection |
0.8 | 1 | 2024 | CERT: Finding Performance Issues in Database Systems Through the Lens of Cardinality Estimation · ICSE 2024 |
Software maintenance and evolution
software ecosystems |
0.8 | 1 | 2024 | Inconsistencies in TeX-Produced Documents · ISSTA 2024 |
Methods — techniques the papers use, named apart from their topics
differential testing · 7.4black-box testing · 2.8interaction-based learning · 2.0adaptive SQL generation · 2.0constant propagation · 1.7constant folding · 1.7case study · 1.7query partitioning · 1.1type safety proof · 0.9graph-cutting · 0.9graph cutting · 0.9gradual typing · 0.9automatic prompt generation · 0.9transprecision computing · 0.4sparse matrix representation · 0.4SIMD vectorization · 0.4
| Year | Publication | Venue | Position |
|---|---|---|---|
| 2026 | Scaling Automated Database System TestingabstractRecently, various automated testing approaches have been proposed that use specialized test oracles to find hundreds of logic bugs in mature, widely-used Database Management Systems (DBMSs). These test oracles require database and query generators, which must account for the often significant differences between the SQL dialects of these systems. Since it can take weeks to implement such generators, many DBMS developers are unlikely to invest the time to adopt such automated testing approaches. In short, existing approaches fail to scale to the plethora of DBMSs. In this work, we present both a vision and a platform, SQLancer++, to apply test oracles to any SQL-based DBMS that supports a subset of common SQL features. Our technical core contribution is a novel architecture for an adaptive SQL statement generator. This adaptive SQL generator generates SQL statements with various features, some of which might not be supported by the given DBMS, and then learns through interaction with the DBMS, which of these are understood by the DBMS. Thus, over time, the generator will generate mostly valid SQL statements. We evaluated SQLancer++ across 18 DBMSs and discovered a total of 196 unique, previously unknown bugs, of which 180 were fixed after we reported them. While SQLancer++ is the first major step towards scaling automated DBMS testing, various follow-up challenges remain. Suyang Zhong, Manuel Rigger |
ASPLOS (2) | 2 |
| 2025 | Towards a Unified Query Plan RepresentationabstractIn database systems, a query plan is a series of concrete internal steps to execute a query. Multiple testing approaches utilize query plans for finding bugs. However, query plans are represented in a database-specific manner, so implementing these testing approaches requires a non-trivial effort, hindering their adoption. We envision that a unified query plan representation can facilitate the implementation of these approaches. In this paper, we present an exploratory case study to investigate query plan representations in nine widely-used database systems. Our study shows that query plan representations consist of three conceptual components: operations, properties, and formats, which enable us to design a unified query plan representation. Based on it, existing testing methods can be efficiently adopted, finding 17 previously unknown and unique bugs. Additionally, the unified query plan representation can facilitate other applications. Existing visualization tools can support multiple database systems based on the unified query plan representation with moderate implementation effort, and comparing unified query plans across database systems provides actionable insights to improve their performance. We expect that the unified query plan representation will enable the exploration of additional application scenarios. Jinsheng Ba, Manuel Rigger |
ICDE | 2 |
| 2025 | On the Mistaken Assumption of Interchangeable Deep Reinforcement Learning ImplementationsabstractDeep Reinforcement Learning (DRL) is a paradigm of artificial intelligence where an agent uses a neural network to learn which actions to take in a given environment. DRL has recently gained traction from being able to solve complex environments like driving simulators, 3D robotic control, and multiplayer-online-battle-arena video games. Numerous implementations of the state-of-the-art algorithms responsible for training these agents, like the Deep Q-Network (DQN) and Proximal Policy Optimization (PPO) algorithms, currently exist. However, studies make the mistake of assuming implementations of the same algorithm to be consistent and thus, interchangeable. In this paper, through a differential testing lens, we present the results of studying the extent of implementation inconsistencies, their effect on the implementations' performance, as well as their impact on the conclusions of prior studies under the assumption of interchangeable implementations. The outcomes of our differential tests showed significant discrepancies between the tested algorithm implementations, indicating that they are not interchangeable. In particular, out of the five PPO implementations tested on 56 games, three implementations achieved superhuman performance for 50% of their total trials while the other two implementations only achieved superhuman performance for less than 15% of their total trials. Furthermore, the performance among the high-performing PPO implementations was found to differ significantly in nine games. As part of a meticulous manual analysis of the implementations' source code, we analyzed implementation discrepancies and determined that code-level inconsistencies primarily caused these discrepancies. Lastly, we replicated a study and showed that this assumption of implementation interchangeability was sufficient to flip experiment outcomes. Therefore, this calls for a shift in how implementations are being used. In addition, we recommend for (1) replicability studies for studies mistakenly assuming implementation interchangeability, (2) DRL researchers and practitioners to adopt the differential testing methodology proposed in this paper to combat implementation inconsistencies, and (3) the use of large environment suites. Rajdeep Singh Hundal, Yan Xiao 0002, Xiaochun Cao, Jin Song Dong 0001, Manuel Rigger |
ICSE | 5 |
| 2025 | Automatic Fixing of Missing Dependency ErrorsabstractMany build systems, such as Make, rely on build scripts that are written by users to specify dependencies. As a serious dependency error in Makefiles, Missing Dependencies (MDs) can result in compiling and linking outdated artifacts in incremental builds, preventing software project updates from being applied correctly. Many studies have explored the detection of MDs. Automatically fixing those missing build dependency errors has become an apparent but challenging task. The challenges mainly result from Makefiles having complex semantics and project maintainers declaring dependencies in a variety of ways. To address these challenges, we propose a new approach to fixing MDs called MDfixer. The core idea of MDfixer is to identify the dependency declaration style in a Makefile and generate patches for the same declaration style based on declaration graphs and automatic prompt generation. Specifically, MDfixer locates dependency declarations for targets that have errors in the Makefile based on error reports, and then builds a declaration graph for each build target with errors and identifies the target’s declaration style based on a distance metric between the target and the dependencies. Based on the declaration graph and automatic prompt generation, MDfixer generates patches with the same style for the dependencies that need to be added. We evaluated the effectiveness and efficiency of MDfixer with 35 well-known projects. The evaluation results show that MDfixer can fix all MDs. We submitted fixes for 2,786 individual dependency issues across 17 projects, with 11 of them merging our pull requests, resulting in a total of 2,099 errors being fixed. MDfixer consumes an average time of 3.31 min for fixing a project, with a median of 62.999s. It can assist practitioners in the effective and efficient fixing of MDs. He Zhang 0001, Lanxin Yang, Yue Li 0047, Chenxing Zhong, Manuel Rigger |
ASE | 6 |
| 2025 | Fuzzing the PHP Interpreter via Dataflow Fusion
Yuancheng Jiang, Chuqi Zhang, Bonan Ruan, Jiahao Liu 0005, Manuel Rigger, Roland H. C. Yap, Zhenkai Liang |
USENIX Security Symposium | 5 |
| 2025 | Finding Logic Bugs in Graph-processing Systems via Graph-cuttingabstractGraph-processing systems, including Graph Database Management Systems (GDBMSes) and graph libraries, are designed to analyze and manage graph data efficiently. They are widely used in applications such as social networks, recommendation systems, and fraud detection. However, logic bugs in these systems can lead to incorrect results, compromising the reliability of applications. While recent research has explored testing techniques specialized for GDBMSes, it is unclear how to adapt them to graph-processing systems in general. This paper proposes G raph - cutting , a universal approach for detecting logic bugs in both GDBMSes and various algorithms in graph libraries. Our key idea is inspired by the observation that certain graph patterns are critical for various graph-processing tasks. Dividing graph data into subgraphs that preserve those patterns establishes a natural relationship between query results on the original graph and its subgraphs, allowing for the detection of logic bugs when this relationship is violated. We implemented Graph-cutting as a tool, GSlicer, and evaluated it on 3 popular graph-processing systems, NetworkX, Neo4j, and Kùzu. GSlicer detected 39 unique and previously unknown bugs, out of which 34 have been fixed and confirmed by developers. At least 8 logic bugs detected by GSlicer cannot be detected by baseline strategies. Additionally, by leveraging just a few concrete relationships, Graph-cutting can cover over 100 APIs in NetworkX. We expect this technique to be widely applicable and that it can be used to improve the quality of graph-processing systems broadly. Qiuyang Mang, Jinsheng Ba, Pinjia He, Manuel Rigger |
Proc. ACM Manag. Data | 4 |
| 2025 | Constant Optimization Driven Database System TestingabstractLogic bugs are bugs that can cause database management systems (DBMSs) to silently produce incorrect results for given queries. Such bugs are severe, because they can easily be overlooked by both developers and users, and can cause applications that rely on the DBMSs to malfunction. In this work, we propose Constant-Optimization-Driven Database Testing (CODDTest) as a novel approach for detecting logic bugs in DBMSs. This method draws inspiration from two well-known optimizations in compilers: constant folding and constant propagation. Our key insight is that for a certain database state and query containing a predicate, we can apply constant folding on the predicate by replacing an expression in the predicate with a constant, anticipating that the results of this predicate remain unchanged; any discrepancy indicates a bug in the DBMS. We evaluated CODDTest on five mature and extensively-tested DBMSs--SQLite, MySQL, CockroachDB, DuckDB, and TiDB--and found 45 unique, previously unknown bugs in them. Out of these, 24 are unique logic bugs. Our manual analysis of the state-of-the-art approaches indicates that 11 logic bugs are detectable only by CODDTest. We believe that CODDTest is easy to implement, and can be widely adopted in practice. Chi Zhang 0073, Manuel Rigger |
Proc. ACM Manag. Data | 2 |
| 2025 | Flexible and Expressive Typed Path Patterns for GQLabstractGraph databases have become an important data management technology across various domains, including biology, sociology, industry ( e.g . fraud detection, supply chain management, financial services), and investigative journalism, due to their ability to efficiently store and query large-scale knowledge graphs and networks. Recently, the Graph Query Language (GQL) was introduced as a new ISO standard providing a unified framework for querying graphs. However, this initial specification lacks a formal type system for query validation. As a result, queries can fail at runtime due to type inconsistencies or produce empty results without prior warning. Solving this issue would help users write correct queries, especially on large datasets. To address this gap, we introduce a formal type model for a core fragment of GQL extended with property-based filtering and imprecise types both in the schema and the queries. This model, named FPPC, enables static detection of semantically incorrect and stuck queries, improving user feedback. We establish key theoretical properties, including emptiness (detecting empty queries due to type mismatches) and type safety (guaranteeing that well-typed queries do not fail at runtime). Additionally, we prove a gradual guarantee , ensuring that removing type annotations either does not introduce static type errors or only increases the result set. By integrating imprecision into GQL, FPPC offers a flexible solution for handling schema evolution and incomplete type information. This work contributes to making GQL more robust, improving both its usability and its formal foundation. Wenjia Ye, Matías Toro, Tomás Diaz, Bruno C. d. S. Oliveira, Manuel Rigger, Claudio Gutierrez 0001, Domagoj Vrgoc |
Proc. ACM Program. Lang. | 5 |
| 2024 | Validating Database System Isolation Level Implementations with Version Certificate RecoveryabstractTransactions are a key feature of database systems and isolation levels specify the behavior of concurrently executing transactions. Ensuring their correct behavior is crucial. Recently, many isolation anomalies have been found in production database systems. Checkers can be used to validate that a particular execution conforms to a desired isolation level. However, state-of-the-art checkers cannot handle predicate operations, which are both common in real-world workloads and essential for distinguishing between the repeatable read and serializable isolation levels. In this work, we address this issue by proposing an efficient white-box checker, Emme. Our key idea is to use information that is easily provided by database systems to efficiently check the isolation level of a given transaction history. We present version certificate recovery, a method of recovering the version order and each operation's version from the database system under test. For efficiency, we also propose the concept of an expected serialization order, which obviates the need to define and recover a version certificate for many serializable concurrency control protocols. We have implemented version certificate recovery for three widely used database systems---PostgreSQL, CockroachDB, and TiDB. We demonstrate that Emme is 1.2-3.6× faster than Elle, a state-of-the-art checker. Using the expected serialization order, we obtain a further speedup of 34-430× compared to Emme when checking histories containing predicate operations. We show that our approach can identify invalid histories that cannot be detected by Elle and also show that it can find realistic bugs purposely introduced by an engineer. Jack Clark, Alastair F. Donaldson, John Wickerson, Manuel Rigger |
EuroSys | 4 |
| 2024 | CERT: Finding Performance Issues in Database Systems Through the Lens of Cardinality EstimationabstractDatabase Management Systems (DBMSs) process a given query by creating a query plan, which is subsequently executed, to compute the query's result. Deriving an efficient query plan is challenging, and both academia and industry have invested decades into researching query optimization. Despite this, DBMSs are prone to performance issues, where a DBMS produces an unexpectedly inefficient query plan that might lead to the slow execution of a query. Finding such issues is a longstanding problem and inherently difficult, because no ground truth information on an expected execution time exists. In this work, we propose Cardinality Estimation Restriction Testing (CERT), a novel technique that finds performance issues through the lens of cardinality estimation. Given a query on a database, CERT derives a more restrictive query (e.g., by replacing a LEFT JOIN with an INNER JOIN), whose estimated number of rows should not exceed the estimated number of rows for the original query. CERT tests cardinality estimation specifically, because it was shown to be the most important part for query optimization; thus, we expect that finding and fixing cardinality-estimation issues might result in the highest performance gains. In addition, we found that other kinds of query optimization issues can be exposed by unexpected estimated cardinalities, which can also be found by CERT. CERT is a black-box technique that does not require access to the source code; DBMSs expose query plans via the EXPLAIN statement. CERT eschews executing queries, which is costly and prone to performance fluctuations. We evaluated CERT on three widely used and mature DBMSs, MySQL, TiDB, and CockroachDB. CERT found 13 unique issues, of which 2 issues were fixed and 9 confirmed by the developers. We expect that this new angle on finding performance bugs will help DBMS developers in improving DMBSs' performance. Jinsheng Ba, Manuel Rigger |
ICSE | 2 |
| 2024 | Detecting Logic Bugs in Graph Database Management Systems via Injective and Surjective Graph Query TransformationabstractGraph Database Management Systems (GDBMSs) store graphs as data. They are used naturally in applications such as social networks, recommendation systems and program analysis. However, they can be affected by logic bugs, which cause the GDBMSs to compute incorrect results and subsequently affect the applications relying on them. In this work, we propose injective and surjective Graph Query Transformation (GQT) to detect logic bugs in GDBMSs. Given a query Q, we derive a mutated query Q', so that either their result sets are: (i) semantically equivalent; or (ii) variant based on the mutation to be either a subset or superset of each other. When the expected relationship between the results does not hold, a logic bug in the GDBMS is detected. The key insight to mutate Q is that the graph pattern in graph queries enables systematic query transformations derived from injective and surjective mappings of the directed edge sets between Q and Q'. We implemented injective and surjective Graph Query Transformation (GQT) as a tool called GraphGenie and evaluated it on 6 popular and mature GDBMSs. GraphGenie has found 25 unknown bugs, comprising 16 logic bugs, 3 internal errors, and 6 performance issues. Our results demonstrate the practicality and effectiveness of GraphGenie in detecting logic bugs in GDBMSs which has the potential for improving the reliability of applications relying on these GDBMSs. Yuancheng Jiang, Jiahao Liu 0005, Jinsheng Ba, Roland H. C. Yap, Zhenkai Liang, Manuel Rigger |
ICSE | 6 |
| 2024 | Finding XPath Bugs in XML Document Processors via Differential TestingabstractExtensible Markup Language (XML) is a widely used file format for data storage and transmission. Many XML processors support XPath, a query language that enables the extraction of elements from XML documents. These systems can be affected by logic bugs, which are bugs that cause the processor to return incorrect results. In order to tackle such bugs, we propose a new approach, which we realized as a system called XPress. As a test oracle, XPress relies on differential testing, which compares the results of multiple systems on the same test input, and identifies bugs through discrepancies in their outputs. As test inputs, XPress generates both XML documents and XPath queries. Aiming to generate meaningful queries that compute non-empty results, XPress selects a so-called targeted node to guide the XPath expression generation process. Using the targeted node, XPress generates XPath expressions that reference existing context related to the targeted node, such as its tag name and attributes, while also guaranteeing that a predicate evaluates to true before further expanding the query. We tested our approach on six mature XML processors, BaseX, eXist-DB, Saxon, PostgreSQL, libXML2, and a commercial database system. In total, we have found 27 unique bugs in these systems, of which 25 have been verified by the developers, and 20 of which have been fixed. XPress is efficient, as it finds 12 unique bugs in BaseX in 24 hours, which is 2× as fast as naive random generation. We expect that the effectiveness and simplicity of our approach will help to improve the robustness of many XML processors. Manuel Rigger |
ICSE | 2 |
| 2024 | Detecting Build Dependency Errors in Incremental BuildsabstractIncremental and parallel builds performed by build tools such as Make are the heart of modern C/C++ software projects. Their correct and efficient execution depends on build scripts. However, build scripts are prone to errors. The most prevalent errors are missing dependencies (MDs) and redundant dependencies (RDs). The state-of-the-art methods for detecting these errors rely on clean builds (i.e., full builds of a subset of software configurations in a clean environment), which is costly and takes up to a few hours for large-scale projects. To address these challenges, we propose a novel approach called EChecker to detect build dependency errors in the context of incremental builds. The core idea of EChecker is to automatically update actual build dependencies by inferring them from C/C++ pre-processor directives and Makefile changes from new commits, which avoids clean builds when possible. EChecker achieves higher efficiency than the methods that rely on clean builds while maintaining effectiveness. We selected 12 representative projects, with their sizes ranging from small to large, with 240 commits (20 commits for each project), based on which we evaluated the effectiveness and efficiency of EChecker. We compared the evaluation results with a state-of-the-art build dependency error detection tool. The evaluation shows that the F-1 score of EChecker improved by 0.18 over the state-of-the-art method. EChecker increases the build dependency error detection efficiency by an average of 85.14 times (with a median of 16.30 times). The results demonstrate that EChecker can support practitioners in detecting build dependency errors efficiently. Shanshan Li 0002, He Zhang 0001, Yang Zhang 0157, Guoping Rong, Manuel Rigger |
ISSTA | 6 |
| 2024 | Inconsistencies in TeX-Produced DocumentsabstractTeX is a widely-used typesetting system adopted by most publishers and professional societies. While TeX is responsible for generating a significant number of documents, irregularities in the TeX ecosystem may produce inconsistent documents. These inconsistencies may occur across different TeX engines or different versions of TeX distributions, resulting in failures to adhere to formatting specifications, or the same document rendering differently for different authors. In this work, we investigate and quantify the robustness of the TeX ecosystem through a large-scale study of 432 documents. We developed an automated pipeline to evaluate the cross-engine and cross-version compatibility of the TeX ecosystem. We found significant inconsistencies in the outputs of different TeX engines: only 0.2% of documents compiled to identical output with XeTeX and PDFTeX due to a lack of cross-engine support in popular LaTeX packages and classes used in academic conferences. A smaller—yet significant—extent of inconsistencies was found across different TeX Live distributions, with only 42.1% of documents producing the same output from 2020 to 2023. Our automated pipeline additionally reduces the human effort in bug-finding: from a sample of 10 unique root causes of inconsistencies, we identified two new bugs in LaTeX packages and five existing bugs that were fixed independently of this study. We also observed potentially unintended inconsistencies across different TeX Live distributions beyond the updates listed in changelogs. We expect that this study will help authors of TeX documents to avoid unexpected outcomes by understanding how they may be affected by the often undocumented subtleties of the TeX ecosystem, while benefiting developers by demonstrating how different implementations result in unintended inconsistencies. Jovyn Tan, Manuel Rigger |
ISSTA | 2 |
| 2024 | Keep It Simple: Testing Databases via Differential Query PlansabstractQuery optimizers perform various optimizations, many of which have been proposed to optimize joins. It is pivotal that these optimizations are correct, meaning that they should be extensively tested. Besides manually written tests, automated testing approaches have gained broad adoption. Such approaches semi-randomly generate databases and queries. More importantly, they provide a so-called test oracle that can deduce whether the system's result is correct. Recently, researchers have proposed a novel testing approach called Transformed Query Synthesis (TQS) specifically designed to find logic bugs in join optimizations. TQS is a sophisticated approach that splits a given input table into several sub-tables and validates the results of the queries that join these sub-tables by retrieving the given table. We studied TQS's bug reports, and found that 14 of 15 unique bugs were reported by showing discrepancies in executing the same query with different query plans. Therefore, in this work, we propose a simple alternative approach to TQS. Our approach enforces different query plans for the same query and validates that the results are consistent. We refer to this approach as Differential Query Plan (DQP) testing. DQP can reproduce 14 of the 15 unique bugs found by TQS, and found 26 previously unknown and unique bugs. These results demonstrate that a simple approach with limited novelty can be as effective as a complex, conceptually appealing approach. Additionally, DQP is complementary to other testing approaches for finding logic bugs. 81% of the logic bugs found by DQP cannot be found by NoREC and TLP, whereas DQP overlooked 86% of the bugs found by NoREC and TLP. We hope that the practicality of our approach---we implemented in less than 100 lines of code per system---will lead to its wide adoption. Jinsheng Ba, Manuel Rigger |
Proc. ACM Manag. Data | 2 |
| 2024 | Finding Logic Bugs in Spatial Database Engines via Affine Equivalent InputsabstractSpatial Database Management Systems (SDBMSs) aim to store, manipulate, and retrieve spatial data . SDBMSs are employed in various modern applications, such as geographic information systems, computer-aided design tools, and location-based services. However, the presence of logic bugs in SDBMSs can lead to incorrect results, substantially undermining the reliability of these applications. Detecting logic bugs in SDBMSs is challenging due to the lack of ground truth for identifying incorrect results. In this paper, we propose an automated geometry-aware generator to generate high-quality SQL statements for SDBMSs and a novel concept named Affine Equivalent Inputs (AEI) to validate the results of SDBMSs. We implemented them as a tool named Spatter ( Spat ial DBMS Tes ter ) for finding logic bugs in four popular SDBMSs: PostGIS, DuckDB Spatial, MySQL, and SQL Server. Our testing campaign detected 34 previously unknown and unique bugs in these SDBMSs, of which 30 have been confirmed, and 18 have already been fixed. Our testing efforts have been well appreciated by the developers. Experimental results demonstrate that the geometry-aware generator significantly outperforms a naive random-shape generator in detecting unique bugs, and AEI can identify 14 logic bugs in SDBMSs that were totally overlooked by previous methodologies. Wenjing Deng, Qiuyang Mang, Chengyu Zhang 0001, Manuel Rigger |
Proc. ACM Manag. Data | 4 |
| 2024 | Understanding and Reusing Test Suites Across Database SystemsabstractDatabase Management System (DBMS) developers have implemented extensive test suites to test their DBMSs. For example, the SQLite test suites contain over 92 million lines of code. Despite these extensive efforts, test suites are not systematically reused across DBMSs, leading to wasted effort. Integration is challenging, as test suites use various test case formats and rely on unstandardized test runner features. We present a unified test suite, SQuaLity, in which we integrated test cases from three widely-used DBMSs, SQLite, PostgreSQL, and DuckDB. In addition, we present an empirical study to determine the potential of reusing these systems' test suites. Our results indicate that reusing test suites is challenging: First, test formats and test runner commands vary widely; for example, SQLite has 4 test runner commands, while MySQL has 112 commands with additional features, to, for example, execute file operations or interact with a shell. Second, while some test suites contain mostly standard-compliant statements (e.g., 99% in SQLite), other test suites mostly test non-standardized functionality (e.g., 31% of statements in the PostgreSQL test suite are nonstandardized). Third, test reuse is complicated by various explicit and implicit dependencies, such as the need to set variables and configurations, certain test cases requiring extensions not present by default, and query results depending on specific clients. Despite the above findings, we have identified 3 crashes, 3 hangs, and multiple compatibility issues across four different DBMSs by executing test suites across DBMSs, indicating the benefits of reuse. Overall, this work represents the first step towards test-case reuse in the context of DBMSs, and we hope that it will inspire follow-up work on this important topic. Suyang Zhong, Manuel Rigger |
Proc. ACM Manag. Data | 2 |
| 2024 | Finding Cross-Rule Optimization Bugs in Datalog EnginesabstractDatalog is a popular and widely-used declarative logic programming language. Datalog engines apply many cross-rule optimizations; bugs in them can cause incorrect results. To detect such optimization bugs, we propose an automated testing approach called Incremental Rule Evaluation (IRE), which synergistically tackles the test oracle and test case generation problem. The core idea behind the test oracle is to compare the results of an optimized program and a program without cross-rule optimization; any difference indicates a bug in the Datalog engine. Our core insight is that, for an optimized, incrementally-generated Datalog program, we can evaluate all rules individually by constructing a reference program to disable the optimizations that are performed among multiple rules. Incrementally generating test cases not only allows us to apply the test oracle for every new rule generated—we also can ensure that every newly added rule generates a non-empty result with a given probability and eschew recomputing already-known facts. We implemented IRE as a tool named Deopt, and evaluated Deopt on four mature Datalog engines, namely Soufflé, CozoDB, μZ, and DDlog, and discovered a total of 30 bugs. Of these, 13 were logic bugs, while the remaining were crash and error bugs. Deopt can detect all bugs found by queryFuzz, a state-of-the-art approach. Out of the bugs identified by Deopt, queryFuzz might be unable to detect 5. Our incremental test case generation approach is efficient; for example, for test cases containing 60 rules, our incremental approach can produce 1.17× (for DDlog) to 31.02× (for Soufflé) as many valid test cases with non-empty results as the naive random method. We believe that the simplicity and the generality of the approach will lead to its wide adoption in practice. Chi Zhang 0073, Linzhang Wang, Manuel Rigger |
Proc. ACM Program. Lang. | 3 |
| 2023 | Testing Database Engines via Query Plan GuidanceabstractDatabase systems are widely used to store and query data. Test oracles have been proposed to find logic bugs in such systems, that is, bugs that cause the database system to compute an incorrect result. To realize a fully automated testing approach, such test oracles are paired with a test case generation technique; a test case refers to a database state and a query on which the test oracle can be applied. In this work, we propose the concept of Query Plan Guidance (QPG) for guiding automated testing towards “interesting” test cases. SQL and other query languages are declarative. Thus, to execute a query, the database system translates every operator in the source language to one of the potentially many so-called physical operators that can be executed; the tree of physical operators is referred to as the query plan. Our intuition is that by steering testing towards exploring a variety of unique query plans, we also explore more interesting behaviors-some of which are potentially incorrect. To this end, we propose a mutation technique that gradually applies promising mutations to the database state, causing the DBMS to create potentially unseen query plans for subsequent queries. We applied our method to three mature, widely-used, and extensively-tested database systems-SQLite, TiDB, and CockroachDB-and found 53 unique, previously unknown bugs. Our method exercises$4.85-408.48\times$more unique query plans than a naive random generation method and$7.46\times$more than a code coverage guidance method. Since most database systems-including commercial ones-expose query plans to the user, we consider QPG a generally applicable, black-box approach and believe that the core idea could also be applied in other contexts (e.g., to measure the quality of a test suite). Jinsheng Ba, Manuel Rigger |
ICSE | 2 |
| 2023 | Testing Graph Database Engines via Query PartitioningabstractGraph Database Management Systems (GDBMSs) store data as graphs and allow the efficient querying of nodes and their relationships. Logic bugs are bugs that cause a GDBMS to return an incorrect result for a given query (e.g., by returning incorrect nodes or relationships). The impact of such bugs can be severe, as they often go unnoticed. The core insight of this paper is that Query Partitioning, a test oracle that has been proposed to test Relational Database Systems, is applicable to testing GDBMSs as well. The core idea of Query Partitioning is that, given a query, multiple queries are derived whose results can be combined to reconstruct the given query’s result. Any discrepancy in the result indicates a logic bug. We have implemented this approach as a practical tool named GDBMeter and evaluated GDBMeter on three popular GDBMSs and found a total of 40 unique, previously unknown bugs. We consider 14 of them to be logic bugs, the others being error or crash bugs. Overall, 27 of the bugs have been fixed, and 35 confirmed. We compared our approach to the state-of-the-art approach to testing GDBMS, which relies on differential testing; we found that it results in a high number of false alarms, while Query Partitioning reported actual logic bugs without any false alarms. Furthermore, despite the previous efforts in testing Neo4j and JanusGraph, we found 18 additional bugs. The developers appreciate our work and plan to integrate GDBMeter into their testing process. We expect that this simple, yet effective approach and the practical tool will be used to test other GDBMSs. Matteo Kamm, Manuel Rigger, Chengyu Zhang 0001, Zhendong Su 0001 |
ISSTA | 2 |
| 2023 | Detecting Transactional Bugs in Database Engines via Graph-Based Oracle Construction
Zu-Ming Jiang, Manuel Rigger, Zhendong Su 0001 |
OSDI | 3 |
| 2022 | Finding missed optimizations through the lens of dead code eliminationabstractCompilers are foundational software development tools and incorporate increasingly sophisticated optimizations. Due to their complexity, it is difficult to systematically identify opportunities for improving them. Indeed, the automatic discovery of missed optimizations has been an important and significant challenge. The few existing approaches either cannot accurately pinpoint missed optimizations or target only specific analyses. This paper tackles this challenge by introducing a novel, effective approach that --- in a simple and general manner --- automatically identifies a wide range of missed optimizations. Our core insight is to leverage dead code elimination (DCE) to both analyze how well compilers optimize code and identify missed optimizations: (1) insert "optimization markers" in the basic blocks of a given program, (2) compute the program's live/dead basic blocks using the "optimization markers", and (3) identify missed optimizations from how well compilers eliminate dead blocks. We essentially exploit that, since DCE heavily depends on the rest of the optimization pipeline, through the lens of DCE, one can systematically quantify how well compilers optimize code. We conduct an extensive analysis of GCC and LLVM using our approach, which (1) provides quantitative and qualitative insights regarding their optimization capabilities, and (2) uncovers a diverse set of missed optimizations. Our results also lead to 84 bug reports for GCC and LLVM, of which 62 have already been confirmed or fixed, demonstrating our work's strong practical utility. We expect that the simplicity and generality of our approach will make it widely applicable for understanding compiler performance and finding missed optimizations. This work opens and initiates this promising direction. Theodoros Theodoridis, Manuel Rigger, Zhendong Su 0001 |
ASPLOS | 2 |
| 2022 | Intramorphic Testing: A New Approach to the Test Oracle ProblemabstractA test oracle determines whether a system behaves correctly for a given input. Automatic testing techniques rely on an automated test oracle to test the system without user interaction. Important families of automated test oracles include Differential Testing and Metamorphic Testing, which are both black-box approaches; that is, they provide a test oracle that is oblivious to the system’s internals. In this work, we propose Intramorphic Testing as a white-box methodology to tackle the test oracle problem. To realize an Intramorphic Testing approach, a modified version of the system is created, for which, given a single input, a test oracle can be provided that relates the output of the original and modified systems. As a concrete example, by replacing a greater-equals operator in the implementation of a sorting algorithm with smaller-equals, it would be expected that the output of the modified implementation is the reverse output of the original implementation. In this paper, we introduce the methodology and illustrate it via a set of use cases. Manuel Rigger, Zhendong Su 0001 |
Onward! | 1 |
| 2022 | Forest: Structural Code Editing with Multiple CursorsabstractSoftware developers frequently refactor code. Often, a single logical refactoring change involves changing multiple related components in a source base such as renaming each occurrence of a variable or function. While many code editors can perform such common and generic refactorings, they do not support more complex refactorings or those that are specific to a given code base. For those, as a flexible---albeit less interactive---alternative, developers can write refactoring scripts that can implement arbitrarily complex logic by manipulating the program's tree representation. In this work, we present Forest, a structural code editor that aims to bridge the gap between the interactiveness of code editors and the expressiveness of refactoring scripts. While structural editors have occupied a niche as general code editors, the key insight of this work is that they enable a novel structural multi-cursor design that allows Forest to reach a similar expressiveness as refactoring scripts; Forest allows to perform a single action simultaneously in multiple program locations and thus support complex refactorings. To support interactivity, Forest provides features typical for text code editors such as writing and displaying the program through its textual representation. Our evaluation demonstrates that Forest allows performing edits similar to those from refactoring scripts, while still being interactive. We attempted to perform edits from 48 real-world refactoring scripts using Forest and found that 11 were possible, while another 17 would be possible with added features. We believe that a multi-cursor setting plays to the strengths of structural editing, since it benefits from reliable and expressive commands. Our results suggest that multi-cursor structural editors could be practical for performing small-scale specialized refactorings. Philippe Voinov, Manuel Rigger, Zhendong Su 0001 |
Onward! | 2 |
| 2022 | DBTest '22: 9th International Workshop on Testing Database SystemsabstractWith the ever-increasing amount of data stored and processed and ever-evolving hardware technology, there is not only an ongoing need for testing database management systems but also data-intensive systems in general. Reviving the previous success of the eight previous workshops, the goal of DBTest 2022 is to bring researchers and practitioners from academia and industry together to discuss key problems and ideas related to testing database systems and applications. The long-term objective is to reduce the cost and time required to test and tune data management and processing products so that users and vendors can spend more time and energy on actual innovations. Manuel Rigger, Pinar Tözün |
SIGMOD Conference | 1 |
| 2021 | SANRAZOR: Reducing Redundant Sanitizer Checks in C/C++ Programs
Jiang Zhang 0003, Shuai Wang 0011, Manuel Rigger, Pinjia He, Zhendong Su 0001 |
OSDI | 3 |
| 2020 | Testing Database Engines via Pivoted Query Synthesis
Manuel Rigger, Zhendong Su 0001 |
OSDI | 1 |
| 2020 | Detecting optimization bugs in database engines via non-optimizing reference engine constructionabstractDatabase Management Systems (DBMS) are used ubiquitously. To efficiently access data, they apply sophisticated optimizations. Incorrect optimizations can result in logic bugs, which cause a query to compute an incorrect result set. We propose Non-Optimizing Reference Engine Construction (NoREC), a fully-automatic approach to detect optimization bugs in DBMS. Conceptually, this approach aims to evaluate a query by an optimizing and a non-optimizing version of a DBMS, to then detect differences in their returned result set, which would indicate a bug in the DBMS. Obtaining a non-optimizing version of a DBMS is challenging, because DBMS typically provide limited control over optimizations. Our core insight is that a given, potentially randomly-generated optimized query can be rewritten to one that the DBMS cannot optimize. Evaluating this unoptimized query effectively corresponds to a non-optimizing reference engine executing the original query. We evaluated NoREC in an extensive testing campaign on four widely-used DBMS, namely PostgreSQL, MariaDB, SQLite, and CockroachDB. We found 159 previously unknown bugs in the latest versions of these systems, 141 of which have been fixed by the developers. Of these, 51 were optimization bugs, while the remaining were error and crash bugs. Our results suggest that NoREC is effective, general and requires little implementation effort, which makes the technique widely applicable in practice. Manuel Rigger, Zhendong Su 0001 |
ESEC/SIGSOFT FSE | 1 |
| 2020 | Fast linear programming through transprecision computing on small and sparse dataabstractA plethora of program analysis and optimization techniques rely on linear programming at their heart. However, such techniques are often considered too slow for production use. While today’s best solvers are optimized for complex problems with thousands of dimensions, linear programming, as used in compilers, is typically applied to small and seemingly trivial problems, but to many instances in a single compilation run. As a result, compilers do not benefit from decades of research on optimizing large-scale linear programming. We design a simplex solver targeted at compilers. A novel theory of transprecision computation applied from individual elements to full data-structures provides the computational foundation. By carefully combining it with optimized representations for small and sparse matrices and specialized small-coefficient algorithms, we (1) reduce memory traffic, (2) exploit wide vectors, and (3) use low-precision arithmetic units effectively. We evaluate our work by embedding our solver into a state-of-the-art integer set library and implement one essential operation, coalescing, on top of our transprecision solver. Our evaluation shows more than an order-of-magnitude speedup on the core simplex pivot operation and a mean speedup of 3.2x (vs. GMP) and 4.6x (vs. IMath) for the optimized coalescing operation. Our results demonstrate that our optimizations exploit the wide SIMD instructions of modern microarchitectures effectively. We expect our work to provide foundations for a future integer set library that uses transprecision arithmetic to accelerate compiler analyses. Tobias Grosser, Theodoros Theodoridis, Maximilian Falkenstein, Arjun Pitchanathan, Michael Kruse, Manuel Rigger, Zhendong Su 0001, Torsten Hoefler |
Proc. ACM Program. Lang. | 6 |
| 2020 | Finding bugs in database systems via query partitioningabstractLogic bugs in Database Management Systems (DBMSs) are bugs that cause an incorrect result for a given query, for example, by omitting a row that should be fetched. These bugs are critical, since they are likely to go unnoticed by users. We propose Query Partitioning, a general and effective approach for finding logic bugs in DBMSs. The core idea of Query Partitioning is to, starting from a given original query, derive multiple, more complex queries (called partitioning queries), each of which computes a partition of the result. The individual partitions are then composed to compute a result set that must be equivalent to the original query's result set. A bug in the DBMS is detected when these result sets differ. Our intuition is that due to the increased complexity, the partitioning queries are more likely to stress the DBMS and trigger a logic bug than the original query. As a concrete instance of a partitioning strategy, we propose Ternary Logic Partitioning (TLP), which is based on the observation that a boolean predicate p can either evaluate to TRUE, FALSE, or NULL. Accordingly, a query can be decomposed into three partitioning queries, each of which computes its result on rows or intermediate results for which p, NOT p, and p IS NULL hold. This technique is versatile, and can be used to test WHERE, GROUP BY, as well as HAVING clauses, aggregate functions, and DISTINCT queries. As part of an extensive testing campaign, we found 175 bugs in widely-used DBMSs such as MySQL, TiDB, SQLite, and CockroachDB, 125 of which have been fixed. Notably, 77 of these were logic bugs, while the remaining were error and crash bugs. We expect that the effectiveness and wide applicability of Query Partitioning will lead to its broad adoption in practice, and the formulation of additional partitioning strategies. Manuel Rigger, Zhendong Su 0001 |
Proc. ACM Program. Lang. | 1 |
| 2019 | Supporting on-stack replacement in unstructured languages by loop reconstruction and extractionabstractOn-stack replacement (OSR) is a common technique employed by dynamic compilers to reduce program warm-up time. OSR allows switching from interpreted to compiled code during the execution of this code. The main targets are long running loops, which need to be represented explicitly, with dedicated information about condition and body, to be optimized at run time. Bytecode interpreters, however, represent control flow implicitly via unstructured jumps and thus do not exhibit the required high-level loop representation. To enable OSR also for jump-based - often called unstructured - languages, we propose the partial reconstruction of loops in order to explicitly represent them in a bytecode interpreter. Besides an outline of the general idea, we implemented our approach in Sulong, a bytecode interpreter for LLVM bitcode, which allows the execution of C/C++. We conducted an evaluation with a set of C benchmarks, which showed speed-ups in warm-up of up to 9x for certain benchmarks. This facilitates execution of programs with long-running loops in rarely called functions, which would yield significant slowdown without OSR. While shown with a prototype implementation, the overall idea of our approach is generalizable for all bytecode interpreters. Raphael Mosaner, David Leopoldseder, Manuel Rigger, Roland Schatz, Hanspeter Mössenböck |
MPLR | 3 |
| 2019 | Understanding GCC builtins to develop better toolsabstractC programs can use compiler builtins to provide functionality that the C language lacks. On Linux, GCC provides several thousands of builtins that are also supported by other mature compilers, such as Clang and ICC. Maintainers of other tools lack guidance on whether and which builtins should be implemented to support popular projects. To assist tool developers who want to support GCC builtins, we analyzed builtin use in 4,913 C projects from GitHub. We found that 37% of these projects relied on at least one builtin. Supporting an increasing proportion of projects requires support of an exponentially increasing number of builtins; however, implementing only 10 builtins already covers over 30% of the projects. Since we found that many builtins in our corpus remained unused, the effort needed to support 90% of the projects is moderate, requiring about 110 builtins to be implemented. For each project, we analyzed the evolution of builtin use over time and found that the majority of projects mostly added builtins. This suggests that builtins are not a legacy feature and must be supported in future tools. Systematic testing of builtin support in existing tools revealed that many lacked support for builtins either partially or completely; we also discovered incorrect implementations in various tools, including the formally verified CompCert compiler. Manuel Rigger, Stefan Marr, Bram Adams, Hanspeter Mössenböck |
ESEC/SIGSOFT FSE | 1 |
| 2018 | Sulong, and Thanks for All the Bugs: Finding Errors in C Programs by Abstracting from the Native Execution ModelabstractIn C, memory errors, such as buffer overflows, are among the most dangerous software errors; as we show, they are still on the rise. Current dynamic bug-finding tools that try to detect such errors are based on the low-level execution model of the underlying machine. They insert additional checks in an ad-hoc fashion, which makes them prone to omitting checks for corner cases. To address this, we devised a novel approach to finding bugs during the execution of a program. At the core of this approach is an interpreter written in a high-level language that performs automatic checks (such as bounds, NULL, and type checks). By mapping data structures in C to those of the high-level language, accesses are automatically checked and bugs discovered. We have implemented this approach and show that our tool (called Safe Sulong) can find bugs that state-of-the-art tools overlook, such as out-of-bounds accesses to the main function arguments. Manuel Rigger, Roland Schatz, René Mayrhofer, Matthias Grimmer, Hanspeter Mössenböck |
ASPLOS | 1 |
| 2018 | Context-Aware Failure-Oblivious Computing as a Means of Preventing Buffer Overflows
Manuel Rigger, Daniel Pekarek, Hanspeter Mössenböck |
NSS | 1 |
| 2018 | An Analysis of x86-64 Inline Assembly in C ProgramsabstractC codebases frequently embed nonportable and unstandardized elements such as inline assembly code. Such elements are not well understood, which poses a problem to tool developers who aspire to support C code. This paper investigates the use of x86-64 inline assembly in 1264 C projects from GitHub and combines qualitative and quantitative analyses to answer questions that tool authors may have. We found that 28.1% of the most popular projects contain inline assembly code, although the majority contain only a few fragments with just one or two instructions. The most popular instructions constitute a small subset concerned largely with multicore semantics, performance optimization, and hardware control. Our findings are intended to help developers of C-focused tools, those testing compilers, and language designers seeking to reduce the reliance on inline assembly. They may also aid the design of tools focused on inline assembly itself. Manuel Rigger, Stefan Marr, Stephen Kell, David Leopoldseder, Hanspeter Mössenböck |
VEE | 1 |