一句话:提出观察序列验证范式,以允许的线程上下文切换数为资源参数,实现可证明上下文无界安全性的过程间并发程序可达性分析。
并发递归过程间的可达性分析不可判定。Qadeer 与 Rehof 的上下文定界方法限制线程间上下文切换次数,实用但不完备,难以证明无 bug。本文提出面向资源参数化程序的通用验证范式——观察序列:观察资源参数增大如何影响满足性质的状态可达性;若序列在某截断参数后收敛,则性质对所有参数值成立。作者以允许的线程上下文切换数为资源,将其用于上下文无界程序分析,得到部分正确的并发共享内存程序过程间可达性分析技术。该技术可能不终止,但既能反驳也能证明上下文无界安全性。多类基准实验表明其有效且高效,并能证明早先上下文定界方法无法证明的安全实例。
A classical result by Ramalingam about synchronization-sensitive interprocedural program analysis implies that reachability for concurrent threads running recursive procedures is undecidable. A technique proposed by Qadeer and Rehof, to bound the number of context switches allowed between the threads, leads to an incomplete solution that is, however, believed to catch “most bugs” in practice, as errors tend to occur within few contexts. The question of whether the technique can also prove the absence of bugs at least in some cases has remained largely open. Toward closing this gap, we introduce in this article the generic verification paradigm of observation sequences for resource-parameterized programs. Such a sequence observes how increasing the resource parameter affects the reachability of states satisfying a given property. The goal is to show that increases beyond some “cutoff” parameter value have no impact on the reachability—the sequence has converged . This allows us to conclude that the property holds for all parameter values. We applied this paradigm to the context- unbounded program analysis problem, choosing the resource to be the number of permitted thread context switches. The result is a partially correct interprocedural reachability analysis technique for concurrent shared-memory programs. Our technique may not terminate but is able to both refute and prove context-unbounded safety for such programs. We demonstrate the effectiveness and efficiency of the technique using a variety of benchmark programs. The safe instances cannot be proved safe by earlier, context-bounded methods.
@article{LiuWR21,
title = {Interprocedural Context-Unbounded Program Analysis Using Observation Sequences},
author = {Peizun Liu and Thomas Wahl and Thomas Reps},
journal = {ACM Transactions on Programming Languages and Systems},
volume = {42},
number = {4},
year = {2020},
doi = {10.1145/3418583}
}