This website is no longer updated.

As of 1.10.2022, the Faculty of Physics has been merged into the TUM School of Natural Sciences with the website https://www.nat.tum.de/. For more information read Conversion of Websites.

de | en

Practical Course - Static Analysis: Automated Bug Hunting and Beyond (IN0012, IN2106, IN4301)

Course 0000002426 in SS 2023

General Data

Course Type practical training
Semester Weekly Hours 6 SWS
Organisational Unit Informatics 2 - Chair of Formal Languages, Compiler Construction, Software Construction (Prof. Seidl)
Lecturers Julian Erhard
Michael Schwarz
Responsible/Coordination: Helmut Seidl
Dates 1 singular or moved dates

Assignment to Modules

Further Information

Courses are together with exams the building blocks for modules. Please keep in mind that information on the contents, learning outcomes and, especially examination conditions are given on the module level only – see section "Assignment to Modules" above.

additional remarks Together with colleagues at the University of Tartu, we develop and maintain the Static Analyzer Goblint, that is based on Abstract Interpretation. The tool is capable of analyzing real-world C programs and show properties such as the absence of buffer overruns or data races in multi-threaded code without requiring any user interaction at all. Goblint won the Data Race Category of the Software Verification Competition in 2023. In the course of this practical, you (in teams of 2-4) will be able to enhance Goblint with your own static analysis. Possible topics include: a) Termination Analysis Usually, we want to be sure that our programs terminate. The Halting Problem states that deciding whether a program terminates or not is not possible in all cases. However, in benign cases, one can show that all loops occurring in a program are only iterated a finite number of times. One approach to do this is to add an additional variable, that is incremented in each iteration of the loop. If the static analyzer is able to prove that the value range for this variable has an upper bound, the loop is proven to be terminating. For programs that contain procedure calls, one has to additionally show that no infinite recursion is possible. Your task will be to implement an analysis that is able to prove termination of loops, and checks the call graph for cycles. As a result, your analysis will be able to show termination for suitable programs. b) Analyzing state-of-the-art C Code While the C language community is slow to adapt new standards, usage of features introduced in C11 is on the rise. While Goblint has full support for C99 features, the support for analyzing programs written in C11 is incomplete. In particular, C11 introduced features for multithreading, including standard functions for thread creation, joining, as well as thread local variables. These features are of particular interest for us, as one of the core strengths of Goblint that sets us apart from many competitors in the same field is the analysis of multithreaded (pthread) programs. Your task will be to implement support for the analysis of code that uses C11 features, in particular related to the C11 multithreading library. Participating in this practical course will: - Deepen your understanding of the semantics of C and typical programming errors - Deepen your understanding of static analysis by Abstract Interpretation - Level up your functional programming skills - Become connected to the research we do day-to-day There will be a pre-meeting for the Goblint practical on Feb 7, 1 p.m. at: https://bbb.rbg.tum.de/mic-dya-2x9
Links TUMonline entry

Equivalent Courses (e. g. in other semesters)

Top of page