首页> 外文会议>International Conference on Computer Aided Verification(CAV 2007); 20070703-07; Berlin(DE) >Spade: Verification of Multithreaded Dynamic and Recursive Programs (Tool Paper)
【24h】

Spade: Verification of Multithreaded Dynamic and Recursive Programs (Tool Paper)

机译:Spade:多线程动态和递归程序的验证(工具文件)

获取原文
获取原文并翻译 | 示例

摘要

Spade has been applied to several examples. The performances are given in Table 1. The experiments were obtained on a 4GHz Pentium IV with 4GB of memory. The BlueTooth v1 is the Spad model of the BlueTooth driver program used by Windows NT and given in [QW04]. We were able to find a bug in this program. To find this error, the [QW04] authors needed to guess the number of driver's requests for which the error occurs, and then run their tool; whereas with Spade, the verification was done in a completely automatic manner, since we did not have to guess the number of requests for which the error occurs because our tool can deal with dynamic creation of processes. The BlueTooth v2 is a corrected version of BlueTooth v1 proposed by the authors of [QW04]. Spade finds an error in this version as well. This bug was already found in [CCK+06]. Again, to be able to find the bug, the authors of [CCK+06] needed to guess the number of requests that causes the bug before running their tool, whereas Spade did not need to perform this guess. ConcVector is a Spad model of a multithreaded program using concurrently methods of the class java.util.Vector from the Java Standard Collection Framework. The program's threads create and remove the elements of a Vector object. Wand and Stoller [WS03] reported a high-level data race that occurs on such programs because the constructor of the Vector class is not atomic. Spade found this bug for a program with an unbounded number of threads (ConcVector v1). Version v2 fixes the bug by taking an atomic implementation of the constructor. Spade was able to prove that this version is correct. The Lock/unlock example is a system that handles an arbitrary number of concurrent insertions on a binary search tree. The algorithm was proposed in [KL80], and can be applied to handle simultaneous insertions (done by several users) into a database, or to reduce the time necessary for a single insertion. We considered a buggy version of the algorithm where one or several processes do not adhere to the required lock and unlock policy. This version was considered in [CCK+06], where the bug was found only for systems where the number of concurrent processes is less or equal to 7. With Spade, we were able to check this buggy program for arbitrary number of concurrent insertion processes.
机译:黑桃已应用于几个示例。表1中给出了性能。实验是在具有4GB内存的4GHz Pentium IV上获得的。蓝牙v1是Windows NT使用的蓝牙驱动程序的Spad模型,在[QW04]中给出。我们能够找到该程序中的错误。为了发现此错误,[QW04]作者需要猜测发生此错误的驱动程序请求的数量,然后运行他们的工具。而使用Spade时,验证是完全自动进行的,因为我们的工具可以处理动态创建的流程,因此我们不必猜测发生错误的请求数量。蓝牙v2是[QW04]的作者提出的蓝牙v1的更正版本。 Spade也在此版本中发现错误。此错误已在[CCK + 06]中找到。同样,为了找到错误,[CCK + 06]的作者需要在运行工具之前猜测导致错误的请求的数量,而Spade无需执行此猜测。 ConcVector是多线程程序的Spad模型,同时使用Java标准集合框架中类java.util.Vector的方法。程序的线程创建和删除Vector对象的元素。 Wand和Stoller [WS03]报告了在此类程序上发生的高级数据争夺,因为Vector类的构造函数不是原子的。 Spade在线程数量不受限制的程序(ConcVector v1)中发现了此错误。版本v2通过采用构造函数的原子实现来修复该错误。 Spade能够证明此版本正确。锁定/解锁示例是处理二进制搜索树上任意数量的并发插入的系统。该算法在[KL80]中提出,可用于处理同时插入(由多个用户完成)到数据库中,或减少一次插入所需的时间。我们考虑了该算法的错误版本,其中一个或多个进程未遵守所需的锁定和解锁策略。在[CCK + 06]中考虑了此版本,该错误仅在并发进程数小于或等于7的系统中发现。使用Spade,我们能够检查该错误程序是否有任意数量的并发插入进程。 。

著录项

相似文献

  • 外文文献
  • 中文文献
  • 专利
获取原文

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号