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 JunDisplayed time zone: Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna change
16:10 - 17:50 | Static AnalysisPLDI Research Papers at Aula Master Chair(s): Loris D'Antoni University of Wisconsin–Madison | ||
16:10 25mTalk | Compositional Recurrence Analysis Revisited PLDI Research Papers Zachary Kincaid Princeton University, Jason Breck University of Wisconsin-Madison, Ashkan Forouhi Boroujeni University of Wisconsin-Madison, Thomas Reps University of Wisconsin - Madison and Grammatech Inc. Media Attached | ||
16:35 25mTalk | Context Transformations for Pointer Analysis PLDI Research Papers Media Attached | ||
17:00 25mTalk | Efficient and Precise Points-to Analysis: Modeling the Heap by Merging Equivalent Automata PLDI Research Papers Pre-print Media Attached | ||
17:25 25mTalk | Static Deadlock Detection for Asynchronous C# Programs PLDI Research Papers Media Attached |