首页> 外文期刊>Science of Computer Programming >Model checking of concurrent programs with static analysis of field accesses
【24h】

Model checking of concurrent programs with static analysis of field accesses

机译:通过对字段访问的静态分析对并发程序进行模型检查

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

摘要

Systematic exploration of all possible thread interleavings is a popular approach to detect errors in multi-threaded programs. A common strategy is to use a partial order reduction technique and perform a non-deterministic thread scheduling choice only when the next instruction to be executed may possibly read or modify the global state. However, some verification frameworks and software model checkers, including Java Pathfinder (JPF), construct the program state space on-the-fly during traversal. The partial order reduction technique built into such a tool can use only the information available in the current state to determine whether the execution of a given instruction is globally-relevant. For example, the reduction technique has to make a thread choice at every field access on a heap object reachable from multiple threads, even in the case of fields that are really accessed only by a single thread during program execution, because it does not have any information about what may happen in the future after a particular state. These conservative decisions cause many redundant thread choices. We propose static analyses that identify globally-relevant field accesses more precisely. For each program state, the analyses give information about field accesses that may occur in the future after the given state. The state space traversal algorithm can use this information to soundly avoid creating unnecessary thread choices, and thus to reduce the number of thread interleavings that must be explored to cover all distinct behaviors of the given program. We implemented the proposed analyses using WALA and integrated them with JPF. Results of experiments on several Java programs show that the static analyses greatly improve the performance and scalability of JPF. In particular, it is now possible to check more complex programs than before in reasonable time.
机译:对所有可能的线程交织的系统探索是一种检测多线程程序中错误的流行方法。常见的策略是仅在要执行的下一条指令可能会读取或修改全局状态时,才使用部分降阶技术并执行不确定的线程调度选择。但是,某些验证框架和软件模型检查器(包括Java Pathfinder(JPF))会在遍历过程中即时构建程序状态空间。内置在这种工具中的部分降阶技术只能使用当前状态下可用的信息来确定给定指令的执行是否与全局相关。例如,归约技术必须在堆对象上的每个字段访问都可以从多个线程访问的地方进行线程选择,即使在程序执行过程中实际上仅由单个线程访问的字段的情况下,因为它没有任何选择有关特定状态后未来可能发生的情况的信息。这些保守的决定会导致许多冗余的线程选择。我们提出静态分析,以更精确地识别与全局相关的字段访问。对于每个程序状态,分析都会提供有关在给定状态之后将来可能发生的字段访问的信息。状态空间遍历算法可以使用此信息来避免创建不必要的线程选择,从而减少必须探究以覆盖给定程序的所有不同行为的线程交织的数量。我们使用WALA实施了建议的分析,并将其与JPF集成。在多个Java程序上的实验结果表明,静态分析大大提高了JPF的性能和可伸缩性。特别是,现在可以在合理的时间内检查比以前更复杂的程序。

著录项

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号