Write a Blog >>
Mon 19 Jun 2017 17:25 - 17:50 at Aula Master - Static Analysis Chair(s): Loris D'Antoni

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.