Static Deadlock Detection for Asynchronous C# Programs
Asynchronous programming is a standard approach for designing responsive applications. Modern languages such as C# provide primitives for the disciplined use of asynchrony. In spite of this, programs can deadlock because of incorrect use of blocking operations along with non-blocking (asynchronous) operations. While developers already know about this problem, there is no automated technique to detect deadlocks in asynchronous C# programs.
We present DeadWait, the first deadlock detection technique for asynchronous C# programs. We formulate necessary conditions for a deadlock to occur in a program using a novel program representation that captures the asynchronous control flow semantics of C#. We design a static analysis to construct the program representation and identify deadlocks.
Using DeadWait, we found 42 previously unknown deadlocks in 7 asynchronous C# libraries. We reported the deadlocks to the library developers. They have confirmed and fixed 40 of them. Thus, DeadWait is a useful technique to find real deadlocks in asynchronous C# programs.
Mon 19 Jun Times are displayed in time zone: Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna change
16:10 - 17:50: Static AnalysisPLDI Research Papers at Aula Master Chair(s): Loris D'AntoniUniversity of Wisconsin–Madison | |||
16:10 - 16:35 Talk | Compositional Recurrence Analysis Revisited PLDI Research Papers Zachary KincaidPrinceton University, Jason BreckUniversity of Wisconsin-Madison, Ashkan Forouhi BoroujeniUniversity of Wisconsin-Madison, Thomas RepsUniversity of Wisconsin - Madison and Grammatech Inc. Media Attached | ||
16:35 - 17:00 Talk | Context Transformations for Pointer Analysis PLDI Research Papers Media Attached | ||
17:00 - 17:25 Talk | Efficient and Precise Points-to Analysis: Modeling the Heap by Merging Equivalent Automata PLDI Research Papers Pre-print Media Attached | ||
17:25 - 17:50 Talk | Static Deadlock Detection for Asynchronous C# Programs PLDI Research Papers Media Attached |