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
|16:10 - 16:35|
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|
|17:00 - 17:25|
|Pre-print Media Attached|
|17:25 - 17:50|