Skip to main content
QUICK REVIEW

[論文レビュー] Bounded Model Checking of Multi-threaded Software using SMT solvers

Lucas C. Cordeiro, Bernd Fischer|arXiv (Cornell University)|Mar 19, 2010
Formal Methods in Verification参考文献 25被引用数 4
ひとこと要約

本稿では、共有変数とPthread同期プリミティブを備えたマルチスレッドCソフトウェアの検証を目的としたSMTベースのバウンデッドモデルチェッキング(BMC)フレームワークを提示する。3つの新規手法—ラージ、スケジュール記録、およびアンダーアプロキメーション・ワイドニング—を部分順序削減(POR)と組み合わせることで、インタリーブの探索を効率化し、検証時間を顕著に短縮するとともに、実世界の組み込みシステムにおけるデッドロックなどの複雑なバグの検出を可能にする。

ABSTRACT

The transition from single-core to multi-core processors has made multi-threaded software an important subject in computer aided verification. Here, we describe and evaluate an extension of the ESBMC model checker to support the verification of multi-threaded software with shared variables and locks using bounded model checking (BMC) based on Satisfiability Modulo Theories (SMT). We describe three approaches to model check multi-threaded software and our modelling of the synchronization primitives of the Pthread library. In the lazy approach, we generate all possible interleavings and call the BMC procedure on each of them individually, until we either find a bug, or have systematically explored all interleavings. In the schedule recording approach, we encode all possible interleavings into one single formula and then exploit the high speed of the SMT solvers. In the underapproximation-widening approach, we reduce the state space by abstracting the number of state variables and interleavings from the proofs of unsatisfiability generated by the SMT solvers. In all three approaches, we use partial-order reduction (POR) techniques to reduce the number of interleavings explored. Experiments show that our approaches can analyze larger problems and substantially reduce the verification time compared to state-of-the-art techniques that combine classic POR methods with symbolic algorithms and others that implement the Counter-Example Guided Abstraction Refinement technique.

研究の動機と目的

  • 共有変数とロックを備えたマルチスレッドソフトウェアの検証における状態空間の爆発問題に対処すること。
  • SMTソルバーを用いてPthread同期プリミティブ(ミューテックス、条件変数)をサポートするようにESBMCモデルチェッカーを拡張すること。
  • 部分順序削減(POR)をSMTベースのBMCに統合し、スレッドアクション間の独立性を活用して重複するインタリーブ探索を削減すること。
  • 実世界の組み込みCプログラムにおけるデッドロックなどの複雑な並行バグの検出を可能にすること。
  • SMTソルバーを用いたアンダーアプロキメーション・ワイドニング(UW)の有効性をマルチスレッド検証において評価すること。

提案手法

  • ラージアプローチは、すべての可能なスレッドインタリーブを生成し、個々にBMCを適用する。SMTソルバーを用いて違反の有無を確認する。
  • スケジュール記録アプローチは、各スレッドのすべての可能な実行パスを1つのSMT式にエンコードし、SMTソルバーによる高速な解析を可能にする。
  • アンダーアプロキメーション・ワイドニング(UW)アプローチは、SMTソルバーから得られる不充足コアを用いて、状態変数とインタリーブの数を抽象化することで、状態空間を縮小する。
  • 部分順序削減(POR)は、すべての3つのアプローチに統合され、スレッドアクション間の独立性を活用して、重複するインタリーブを排除する。
  • Pthreadプリミティブ(ミューテックス、条件変数)は、SMT互換の制約を用いてモデル化され、有限ビット幅、配列、構造体、ポ인터をサポートする。
  • ESBMCツールは、SMTベースのBMCを可能にするように拡張され、ANSI-Cの意味論をサポートする背景理論(ビットベクトルおよび配列演算を含む)を備える。

実験結果

リサーチクエスチョン

  • RQ1SMTベースのバウンデッドモデルチェッキングは、共有変数とPthread同期を備えたマルチスレッドCプログラムを効果的に検証できるか?
  • RQ2ラージ、スケジュール記録、UWといった異なるSMTベースのBMC戦略は、スケーラビリティおよび検証パフォーマンスにおいてどのように比較されるか?
  • RQ3部分順序削減は、SMTベースのマルチスレッド検証において、探索されるインタリーブ数をどの程度削減できるか?
  • RQ4SMTソルバーと組み合わせたアンダーアプロキメーション・ワイドニング技術は、他の手法が見逃す可能性のある複雑な並行バグ(例:デッドロック)を検出できるか?
  • RQ5提案されたSMTベースのBMCフレームワークは、実世界のベンチマークにおいて、CEGARやPOR-シンボリック組み合わせと比較してどのように優れているか?

主な発見

  • 実世界のベンチマークにおいて、UW ESBMCアプローチは、CEGARベースのSATABSモデルチェッカーを検証時間とスケーラビリティの面で上回る。
  • ラージ ESBMC アプローチは、並行制約を段階的に追加することで、非自明なマルチスレッドCプログラムにおけるバグの迅速な検出を可能にする。
  • SMTベースのBMCに部分順序削減を統合することで、整合性を損なわせることなく、探索されるインタリーブ数を顕著に削減できる。
  • 本フレームワークは、ミューテックスおよび条件変数操作に起因するデッドロックを正常に検出でき、これまでは2スレッド限定またはコンテキストバウンデッドに限定されたアプローチでは実現できなかった能力を有する。
  • スケジュール記録アプローチは、すべてのインタリーブを1つの式にエンコードすることで、SMTソルバーの高速な解決を活用し、大規模な問題においてパフォーマンスが向上する。
  • SMTソルバーから得られる不充足コアの使用により、UWアプローチにおいて効果的な抽象化と状態空間の縮小が実現され、スケーラビリティが向上する。

より良い研究を、今すぐ始めましょう

論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。

クレジットカード登録不要

このレビューはAIが作成し、人間の編集者が確認しました。