Skip to main content
SHARE
Publication

Deadlock prediction via generalized dependency...

by Jinpeng Zhou, Hanmei Yang, John R Lange, Tongping Liu
Publication Type
Conference Paper
Book Title
Proceedings of the 31st ACM SIGSOFT International Symposium on Software Testing and Analysis
Publication Date
Page Numbers
455 to 466
Publisher Location
United States of America
Conference Name
International Symposium on Software Testing and Analysis (ISSTA)
Conference Location
Daejeon, South Korea
Conference Sponsor
ACM
Conference Date
-

Deadlocks are notorious bugs in multithreaded programs, causing serious reliability issues. However, they are difficult to be fully expunged before deployment, as their appearances typically depend on specific inputs and thread schedules, which require the assistance of dynamic tools. However, existing deadlock detection tools mainly focus on locks, but cannot detect deadlocks related to condition variables. This paper presents a novel approach to fill this gap. It extends the classic lock dependency to generalized dependency by abstracting the signal for the condition variable as a special resource so that communication deadlocks can be modeled as hold-and-wait cycles as well. It further designs multiple practical mechanisms to record and analyze generalized dependencies. In the end, this paper presents the implementation of the tool, called UnHang. Experimental results on real applications show that UnHang is able to find all known deadlocks and uncover two new deadlocks. Overall, UnHang only imposes around 3% performance overhead and 8% memory overhead, making it a practical tool for the deployment environment.