ePrints@IIScePrints@IISc Home | About | Browse | Latest Additions | Advanced Search | Contact | Help

Static Deadlock Detection for Asynchronous C# Programs

Santhiar, Anirudh and Kanade, Aditya (2017) Static Deadlock Detection for Asynchronous C# Programs. In: 38th ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI), JUN 18-23, 2017, Barcelona, SPAIN, pp. 292-305.

[img] PDF
ACM_SIG_NOT_52-6_292_2017.pdf - Published Version
Restricted to Registered users only

Download (484kB) | Request a copy
Official URL: http://doi.org/10.1145/3062341.3062361


Asynchronous programming is a standard approach for designing responsive applications. Modern languages such as C# provide async/await 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 are aware of this problem, there is no automated technique to detect deadlocks in asynchronous programs. We present a novel representation of control flow and scheduling of asynchronous programs, called continuation scheduling graph and formulate necessary conditions for a deadlock to occur in a program. We design static analyses to construct continuation scheduling graphs of asynchronous C# programs and to identify deadlocks in them. We have implemented the static analyses in a tool called Dead Wait. Using Dead Wait, we found 43 previously unknown deadlocks in 11 asynchronous C# libraries. We reported the deadlocks to the library developers. They have confirmed and fixed 40 of them.

Item Type: Conference Proceedings
Additional Information: Copy right for this article belongs to the ASSOC COMPUTING MACHINERY, 2 PENN PLAZA, STE 701, NEW YORK, NY 10121-0701 USA
Department/Centre: Division of Electrical Sciences > Computer Science & Automation
Date Deposited: 24 Nov 2017 09:57
Last Modified: 24 Nov 2017 09:57
URI: http://eprints.iisc.ac.in/id/eprint/58324

Actions (login required)

View Item View Item