2016
DOI: 10.1007/978-3-319-47958-3_7
|View full text |Cite
|
Sign up to set email alerts
|

Static Trace-Based Deadlock Analysis for Synchronous Mini-Go

Abstract: We consider the problem of static deadlock detection for programs in the Go programming language which make use of synchronous channel communications. In our analysis, regular expressions extended with a fork operator capture the communication behavior of a program. Starting from a simple criterion that characterizes traces of deadlock-free programs, we develop automata-based methods to check for deadlockfreedom. The approach is implemented and evaluated with a series of examples.

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
2
1
1
1

Citation Types

0
37
0

Year Published

2018
2018
2023
2023

Publication Types

Select...
3
3
1

Relationship

0
7

Authors

Journals

citations
Cited by 23 publications
(37 citation statements)
references
References 18 publications
0
37
0
Order By: Relevance
“…The time includes both communicating finite state machine extraction and their analysis, but does not include building the global graph and only checks for liveness. Columns 15-16 pertain to the gopherlyzer tool [40], which only checks for global deadlockfreedom (most programs had to be manually adjusted in order to be accepted by this tool -see § 7 for the severe practical limitations of the tool). Columns 17-19 refer to the GoInfer/Gong tool from [30].…”
Section: Discussionmentioning
confidence: 99%
See 1 more Smart Citation
“…The time includes both communicating finite state machine extraction and their analysis, but does not include building the global graph and only checks for liveness. Columns 15-16 pertain to the gopherlyzer tool [40], which only checks for global deadlockfreedom (most programs had to be manually adjusted in order to be accepted by this tool -see § 7 for the severe practical limitations of the tool). Columns 17-19 refer to the GoInfer/Gong tool from [30].…”
Section: Discussionmentioning
confidence: 99%
“…A significant advantage of our approach over previous works [30,36,40] is that our inference procedure covers a much larger part of the Go language allowing for the automatic extraction of an accurate model of a program's concurrency-related features, resulting in a more precise analysis with reduced numbers of false alarms and undetected errors. Our integration with a general purpose model checker also enables us to modularly verify arbitrary safety and liveness properties, over the more single-minded nature of previously proposed techniques, as well as take advantage of advances in model checking to provide better performance scaling.…”
Section: Introductionmentioning
confidence: 99%
“…• In Program 17 each goroutine may get stuck because of a mismatch between the number of send and receive actions. • Program 19 is an encoding of the (starving) philosopher problem using only two philosophers, taken from [14]. Program 20 is another encoding of the (starving) dining philosophers from [8].…”
Section: Implementation and Evaluationmentioning
confidence: 99%
“…Their work does not support asynchronous channels nor programs that spawn goroutines or create channels in loops or conditionals. Stadtmüller et al introduced gopherlyzer [14] which detects global deadlocks using forkable regular expressions. This work does not support channel closures, asynchronous channels, nor goroutines spawned in loops.…”
Section: Related Work Conclusion and Future Workmentioning
confidence: 99%
See 1 more Smart Citation