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.
![]() |
PDF
ACM_SIG_NOT_52-6_292_2017.pdf - Published Version Restricted to Registered users only Download (484kB) | Request a copy |
Abstract
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 |
---|---|
Publication: | ACM SIGPLAN NOTICES |
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 |