2018
DOI: 10.1007/978-3-319-99725-4_18
|View full text |Cite
|
Sign up to set email alerts
|

Process-Local Static Analysis of Synchronous Processes

Abstract: We develop a modular approach to statically analyse imperative processes communicating by synchronous message passing. The approach is modular in that it only needs to analyze one process at a time, but will in general have to do so repeatedly. The approach combines lattice-valued regular expressions to capture network communication with a dedicated shuffle operator for composing individual process analysis results. We present both a soundness proof and a prototype implementation of the approach for a synchron… Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
2
1
1
1

Citation Types

0
8
0

Year Published

2018
2018
2023
2023

Publication Types

Select...
4
3

Relationship

0
7

Authors

Journals

citations
Cited by 11 publications
(8 citation statements)
references
References 35 publications
0
8
0
Order By: Relevance
“…Stadtmuller et al proposed another static verification method [19] to detect the global deadlock using forkable regular expressions. Lange et al [20][21] proposed two more advanced static verification frameworks (Gong and Godel), which extracted behavioral types [22] from source code's SSA intermediate representation, to check the program's liveness and safety properties by using bounded execution in [20] and the exhaustive model checking in [21], the model checking tool mcrl2 [23] and the termination detection tool KITTeL [24] are used to implement the corresponding function; Midtgaard et al [25] proposed a static verification method abstract interpretation to detect global deadlocks in a limited subset of the Go program. Sulzmann and Stadtmuller attempted to solve the problem of dynamic verification of Go programs by proposing a track-based method to analyze Go programs that only use the synchronous channel in [26]; then they introduced an improved method that supports asynchronous channels and relies on vector clocks in [27].…”
Section: Study On Go Concurrency Bugs Nicolas Dilley Et Almentioning
confidence: 99%
“…Stadtmuller et al proposed another static verification method [19] to detect the global deadlock using forkable regular expressions. Lange et al [20][21] proposed two more advanced static verification frameworks (Gong and Godel), which extracted behavioral types [22] from source code's SSA intermediate representation, to check the program's liveness and safety properties by using bounded execution in [20] and the exhaustive model checking in [21], the model checking tool mcrl2 [23] and the termination detection tool KITTeL [24] are used to implement the corresponding function; Midtgaard et al [25] proposed a static verification method abstract interpretation to detect global deadlocks in a limited subset of the Go program. Sulzmann and Stadtmuller attempted to solve the problem of dynamic verification of Go programs by proposing a track-based method to analyze Go programs that only use the synchronous channel in [26]; then they introduced an improved method that supports asynchronous channels and relies on vector clocks in [27].…”
Section: Study On Go Concurrency Bugs Nicolas Dilley Et Almentioning
confidence: 99%
“…Virtual method calls (on interfaces) are particularly difficult to model. As in [7,8,10,12,14], we do not support channel passing (since we abstract away the data sent over channels). We note that our empirical survey [3] found that only 6% of projects used channels that carry channels.…”
Section: Implementation and Evaluationmentioning
confidence: 99%
“…Also, Zaks and Joshi [19] use Spin to verify multi-threaded C programs using their LLVM representation and custom virtual machine. Several works focus on the verification of message-passing concurrency in Go [7,8,10,12,14,15,16]. Four papers studied static verification using behavioural models.…”
Section: Related Work Conclusion and Future Workmentioning
confidence: 99%
“…Various safety and liveness properties can be checked on behavioural types using bounded executions in [11] and exhaustive model checking in [12]. Midtgaard et al [16] proposed a static verification approach based on abstract interpretation for detecting global deadlocks in a small subset of Go (without recursion). Sulzmann and Stadtmüller [26], [27] addressed the dynamic verification of Go programs.…”
Section: Introductionmentioning
confidence: 99%
“…Unsurprisingly, the static approaches mentioned above only provide partial support of the Go language. For instance, none of the static verification frameworks in [12], [16], [19], [25] can verify programs that spawn new threads within a for loop. The work in [11] only provides an unsound approximation for such programs.…”
Section: Introductionmentioning
confidence: 99%