TY - GEN
T1 - Verification of parameterized concurrent programs by modular reasoning about data and control
AU - Farzan, Azadeh
AU - Kincaid, Zachary
PY - 2012
Y1 - 2012
N2 - In this paper, we consider the problem of verifying thread-state properties of multithreaded programs in which the number of active threads cannot be statically bounded. Our approach is based on decomposing the task into two modules, where one reasons about data and the other reasons about control. The data module computes thread-state invariants (e.g., linear constraints over global variables and local variables of one thread) using the thread interference information computed by the control module. The control module computes a representation of thread interference, as an incrementally constructed data flow graph, using the data invariants provided by the data module. These invariants are used to rule out patterns of thread interference that can not occur in a real program execution. The two modules are incorporated into a feedback loop, so that the abstractions of data and interference are iteratively coarsened as the algorithm progresses (that is, they become weaker) until a fixed point is reached. Our approach is sound and terminating, and applicable to programs with infinite state (e.g., unbounded integers) and unboundedly many threads. The verification method presented in this paper has been implemented into a tool, called DUET. We demonstrate the effectiveness of our technique by verifying properties of a selection of Linux device drivers using DUET, and also compare DUET with previous work on verification of parameterized Boolean program using the Boolean abstractions of these drivers.
AB - In this paper, we consider the problem of verifying thread-state properties of multithreaded programs in which the number of active threads cannot be statically bounded. Our approach is based on decomposing the task into two modules, where one reasons about data and the other reasons about control. The data module computes thread-state invariants (e.g., linear constraints over global variables and local variables of one thread) using the thread interference information computed by the control module. The control module computes a representation of thread interference, as an incrementally constructed data flow graph, using the data invariants provided by the data module. These invariants are used to rule out patterns of thread interference that can not occur in a real program execution. The two modules are incorporated into a feedback loop, so that the abstractions of data and interference are iteratively coarsened as the algorithm progresses (that is, they become weaker) until a fixed point is reached. Our approach is sound and terminating, and applicable to programs with infinite state (e.g., unbounded integers) and unboundedly many threads. The verification method presented in this paper has been implemented into a tool, called DUET. We demonstrate the effectiveness of our technique by verifying properties of a selection of Linux device drivers using DUET, and also compare DUET with previous work on verification of parameterized Boolean program using the Boolean abstractions of these drivers.
KW - Abstract interpretation
KW - Compositional reasoning
KW - Concurrency
KW - Data flow graphs
KW - Parameterized programs
KW - Thread invariants
UR - http://www.scopus.com/inward/record.url?scp=84857841879&partnerID=8YFLogxK
UR - http://www.scopus.com/inward/citedby.url?scp=84857841879&partnerID=8YFLogxK
U2 - 10.1145/2103656.2103693
DO - 10.1145/2103656.2103693
M3 - Conference contribution
AN - SCOPUS:84857841879
SN - 9781450310833
T3 - Conference Record of the Annual ACM Symposium on Principles of Programming Languages
SP - 297
EP - 308
BT - POPL'12 - Proceedings of the 39th Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages
T2 - 39th Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, POPL'12
Y2 - 25 January 2012 through 27 January 2012
ER -