Simmo Saan

dblp:288/1509 · DBLP profile ↗
← Back
16ranked-venue papers
6as first author
16since 2021 · last 2026
0000-0003-4553-1350ORCID · verified

Domains — the database's venue-derived domains; a paper can count in several

Software engineering, systems software and programming languages · 16 · 6 first-author · 16 since 2021
YearPublicationVenuePosition
2026 Comparing Transparent Static Analyzers with Open Verification Dashboard
abstract
Given an input program, sound static analyzers compute a list of potential runtime errors in it. However, measuring their precision and comparing their results remains challenging. In this work, we formalize a notion of transparent static analyzers that report the proof obligations they check, including both verified and unverified obligations. This transparent output enables a semantics-directed, fine-grained comparison and the combination of static analyzers. We introduce the Open Verification Dashboard (OVD), which provides a unified interface to aggregate the results of multiple static analyzers. By juxtaposing verified properties and outstanding warnings, OVD highlights coverage gaps, variabilities and inconsistencies across tools. We experimentally evaluate the benefits of OVD on benchmarks from the Competition on Software Verification (SV-COMP). This work paves the way for a static analysis standard for C runtime error reporting.
Tom Goalard, Karoliine Holter, Simmo Saan, Vesal Vojdani, Raphaël Monat
ECOOP3
2026 Goblitch: Combining Abstract Interpretation with Symbolic Execution via Witnesses - (Competition Contribution)
Karoliine Holter, Paulína Ayaziová, Simmo Saan, Jan Strejcek, Vesal Vojdani
TACAS (2)3
2026 Same Engine, Multiple Gears: Parallelizing Fixpoint Iteration at Different Granularities
Ali Rasim Kocal, Michael Schwarz 0007, Simmo Saan, Helmut Seidl
TACAS (2)3
2026 Goblint: A Portfolio for Mixed Flow-Sensitive Abstract Interpretation - (Competition Contribution)
Simmo Saan, Ali Rasim Kocal, Michael Petter, Karoliine Holter, Julian Erhard, Michael Schwarz 0007, Vesal Vojdani, Helmut Seidl
TACAS (2)1
2025 Correctness Witnesses for Concurrent Programs: Bridging the Semantic Divide with Ghosts
Julian Erhard, Manuel Bentele, Matthias Heizmann, Dominik Klumpp, Simmo Saan, Frank Schüssele, Michael Schwarz 0007, Helmut Seidl, Sarah Tilscher, Vesal Vojdani
VMCAI (1)5
2025 Sound Static Data Race Verification for C: Is the Race Lost?
abstract
Sound static data race freedom verification has been a long-standing challenge in the field of programming languages. While actively researched a decade ago, most practical data race detection tools have since abandoned soundness. Is sound static race freedom verification for real-world C programs a lost cause? In this work, we investigate the obstacles to making significant progress in automated race freedom verification. We selected a benchmark suite of real-world programs and, as our primary contribution, extracted a set of coding idioms that represent fundamental barriers to verification. We expressed these idioms as micro-benchmarks and contributed them as evaluation tasks for the International Competition on Software Verification, SV-COMP. To understand the current state, we measure how sound automated verification tools competing in SV-COMP perform on these idioms and also when used out of the box on the real-world programs. For 8 of the 20 coding idioms, there does exist an automated race freedom verifier that can verify it; however, we also found significant unsoundness in leading verifiers, including Goblint and Deagle. Five of the seven tools failed to return any result on any real-world benchmarks under our chosen resource limitations, with the remaining two tools verifying race freedom for 2 of the 18 programs and crashing or returning inconclusive results on the others. We thus show that state-of-the-art verifiers have both superficial and fundamental barriers to correctly analyzing real-world programs. These barriers constitute the open problems that must be solved to make progress on automated static data race freedom verification.
Karoliine Holter, Simmo Saan, Patrick Lam 0001, Vesal Vojdani
ACM Trans. Program. Lang. Syst.2
2024 Abstract Debuggers: Exploring Program Behaviors using Static Analysis Results
abstract
Traditional, or concrete, debuggers allow developers to step through programs and explore the corresponding concrete program states—developers can query current values of program variables. This exploration enables developers to formulate and refine hypotheses about program behaviors. We propose the novel notion of abstract debuggers, which allow developers to explore abstract program states, as computed by sound static analyzers. Giving developers the ability to interactively explore abstract states empowers them to work with hypotheses that are true for all program executions: they can examine and rule out false positives, or better understand a static analysis’s declaration that some code is indeed safe. Abstract debuggers’ interfaces, reminiscent of conventional debuggers, aim to make navigating and interpreting static analysis results more straightforward. We have formalized the concept, applied it by implementing a tool that leverages the static analyzer Goblint, and illustrate its usefulness through case studies.
Karoliine Holter, Juhan Oskar Hennoste, Patrick Lam 0001, Simmo Saan, Vesal Vojdani
Onward!4
2024 Goblint Validator: Correctness Witness Validation by Abstract Interpretation - (Competition Contribution)
abstract
Abstract Goblintis an abstract interpretation framework for C programs with a specialty in concurrency. Using a novel approach, we turn it into a validator of YAML correctness witnesses for all SV-COMP categories. We describe its results at SV-COMP 2024 which includes the first large-scale evaluation of our validator.
Simmo Saan, Julian Erhard, Michael Schwarz 0007, Stanimir Bozhilov, Karoliine Holter, Sarah Tilscher, Vesal Vojdani, Helmut Seidl
TACAS (3)1
2024 Goblint: Abstract Interpretation for Memory Safety and Termination - (Competition Contribution)
abstract
Abstract Goblintis an abstract interpreter of C programs, focusing on the analysis of multi-threaded code. It is equipped with a variety of abstract domains, as well as analyses which allow it to reason about an array of program properties in a highly configurable manner.Goblinthas been extended with support for the detection of memory safety bugs and non-termination.
Simmo Saan, Julian Erhard, Michael Schwarz 0007, Stanimir Bozhilov, Karoliine Holter, Sarah Tilscher, Vesal Vojdani, Helmut Seidl
TACAS (3)1
2024 Correctness Witness Validation by Abstract Interpretation
Simmo Saan, Michael Schwarz 0007, Julian Erhard, Helmut Seidl, Sarah Tilscher, Vesal Vojdani
VMCAI (1)1
2024 Interactive abstract interpretation: reanalyzing multithreaded C programs for cheap
abstract
Abstract To put sound program analysis at the fingertips of the software developer, we propose a framework for interactive abstract interpretation of multithreaded C code. Abstract interpretation provides sound analysis results, but can be quite costly in general. To achieve quick response times, we incrementalize the analysis infrastructure, including postprocessing, without necessitating any modifications to the analysis specifications themselves. We rely on the local generic fixpoint engine TD – which we enhance with reluctant destabilization to minimize reanalysis effort. Dedicated further improvements support precise incremental analysis of program properties that include concurrency deficiencies such as data-races. The framework has been implemented in the static analyzer Goblint, and combined with the MagpieBridge framework to relay findings to IDEs. We evaluate our implementation w.r.t. the yard sticks of response time and consistency. We also provide examples of program development highlighting the usability of our approach.
Julian Erhard, Simmo Saan, Sarah Tilscher, Michael Schwarz 0007, Karoliine Holter, Vesal Vojdani, Helmut Seidl
Int. J. Softw. Tools Technol. Transf.2
2024 When long jumps fall short: control-flow tracking and misuse detection for nonlocal jumps in C
abstract
Abstract The C programming language offers as a mechanism for nonlocal control flow. This mechanism has complicated semantics. As most developers do not encounter it day-to-day, they may be unfamiliar with all its intricacies – leading to subtle programming errors. At the same time, most static analyzers lack proper support, implying that otherwise sound tools miss whole classes of program deficiencies. We propose a concrete semantics of a subset of C with , where interprocedural s are performed directly, as well as an equivalent formulation where such jumps are implemented via stack-unwinding at the call-sites. Reflecting this semantic equivalence, we propose an approach for lifting existing interprocedural analyses to support and to flag their misuse. To deal with the nonlocal semantics, our approach leverages side-effecting transfer functions, which, when executed, may additionally trigger contributions for program points that are not static control-flow successors. We showcase our analysis on a real-world example and propose a set of litmus tests for other analyzers.
Julian Erhard, Michael Schwarz 0007, Vesal Vojdani, Simmo Saan, Helmut Seidl
Int. J. Softw. Tools Technol. Transf.4
2023 Clustered Relational Thread-Modular Abstract Interpretation with Local Traces
abstract
Abstract We construct novel thread-modular analyses that track relational information for potentially overlapping clusters of global variables – given that they are protected by common mutexes. We provide a framework to systematically increase the precision of clustered relational analyses by splitting control locations based on abstractions of local traces. As one instance, we obtain an analysis of dynamic thread creation and joining. Interestingly, tracking less relational information for globals may result in higher precision. We consider the class of 2-decomposable domains that encompasses many weakly relational domains (e.g., Octagons). For these domains, we prove that maximal precision is attained already for clusters of globals of sizes at most 2.
Michael Schwarz 0007, Simmo Saan, Helmut Seidl, Julian Erhard, Vesal Vojdani
ESOP2
2023 Goblint: Autotuning Thread-Modular Abstract Interpretation - (Competition Contribution)
abstract
Abstract The static analyzer Goblint is dedicated to the analysis of multi-threaded C programs by abstract interpretation. It provides multiple techniques for increasing analysis precision, e.g., configurable context-sensitivity and a wide range of numerical analyses. As a rule of thumb, more precise analyses decrease scalability, while not always necessary for solving the task at hand. Therefore, Goblint has been enhanced with autotuning which, based on syntactical criteria, adapts analysis configuration to the given program such that relevant precision is obtained with acceptable effort.
Simmo Saan, Michael Schwarz 0007, Julian Erhard, Manuel Pietsch, Helmut Seidl, Sarah Tilscher, Vesal Vojdani
TACAS (2)1
2021 Improving Thread-Modular Abstract Interpretation
Michael Schwarz 0007, Simmo Saan, Helmut Seidl, Kalmer Apinis, Julian Erhard, Vesal Vojdani
SAS2
2021 Goblint: Thread-Modular Abstract Interpretation Using Side-Effecting Constraints - (Competition Contribution)
abstract
Abstract Goblintis a static analysis framework for C programs specializing in data race analysis. It relies on thread-modular abstract interpretation where thread interferences are accounted for by means of flow-insensitive global invariants.
Simmo Saan, Michael Schwarz 0007, Kalmer Apinis, Julian Erhard, Helmut Seidl, Ralf Vogler, Vesal Vojdani
TACAS (2)1