Skip to main content
QUICK REVIEW

[論文レビュー] Preventing Atomicity Violations with Contracts

Diogo Sousa, Ricardo J. Dias|arXiv (Cornell University)|May 12, 2015
Distributed systems and fault tolerance参考文献 50被引用数 5
ひとこと要約

この論文では、メソッド呼び出しのシーケンスが原子的(アトミック)に実行されなければならないことを指定することで、並列プログラムにおけるアトミシティ違反を防ぐための契約を提案する。制御フローやデータフローに基づく静的解析を用いて、クライアントプログラムがこれらの契約を尊重しているかを検証することで、個々のメソッドが同期化されていても正しさが保証される。この手法は実世界のソフトウェアにおいて検証され、Apache Tomcat 6.0に深刻なバグが存在することが判明し、開発チームが迅速に修正した。

ABSTRACT

Software developers are expected to protect concurrent accesses to shared regions of memory with some mutual exclusion primitive that ensures atomicity properties to a sequence of program statements. This approach prevents data races but may fail to provide all necessary correctness properties.The composition of correlated atomic operations without further synchronization may cause atomicity violations. Atomic violations may be avoided by grouping the correlated atomic regions in a single larger atomic scope. Concurrent programs are particularly prone to atomicity violations when they use services provided by third party packages or modules, since the programmer may fail to identify which services are correlated. In this paper we propose to use contracts for concurrency, where the developer of a module writes a set of contract terms that specify which methods are correlated and must be executed in the same atomic scope. These contracts are then used to verify the correctness of the main program with respect to the usage of the module(s). If a contract is well defined and complete, and the main program respects it, then the program is safe from atomicity violations with respect to that module. We also propose a static analysis based methodology to verify contracts for concurrency that we applied to some real-world software packages. The bug we found in Tomcat 6.0 was immediately acknowledged and corrected by its development team.

研究の動機と目的

  • サードパーティモジュールの同期化されたメソッドを組み合わせる際、個々のメソッドがスレッドセーフであっても発生するアトミシティ違反を解消すること。
  • 正しさを保つために、どのメソッド呼び出しシーケンスを原子的(アトミック)に実行すべきかを形式的に指定するメカニズムを提供すること。
  • クライアントプログラムがモジュール契約を守っているかを検証する静的解析技術を開発し、関連する操作のアトミシティを保証すること。
  • 契約ベースの検証により、アトミシティ違反を早期に検出することで、並列システムにおけるソフトウェアの信頼性を向上させること。

提案手法

  • 著者らは、公開メソッドを対象とするスタアフリー正規表現として契約を定義し、アトミックに実行されなければならないシーケンスを指定する。
  • 静的解析により、クライアントプログラムから制御フローとデータフローの情報を抽出し、モジュールメソッド呼び出しの可能なシーケンスを特定する。
  • 解析では、クライアントプログラム内のすべての可能な呼び出しシーケンスが、契約で指定されたシーケンスに包含されているかどうかを確認し、アトミシティを保証する。
  • プロトタイプ実装では、ICFinderを用いて関数間制御フロー解析を行い、広範なパターンからの誤検出(誤検出)を低減するためのフィルタリングを適用する。
  • 既存の設計による契約手法と統合され、並列処理固有の正しさの性質を扱えるように拡張されている。
  • 検証プロセスは完全に静的であり、動的解析のオーバーヘッドと不正確さを回避しつつ、高い正確性を維持している。

実験結果

リサーチクエスチョン

  • RQ1サードパーティモジュールの同期化されたメソッドを組み合わせる際、どのようにしてアトミシティ違反を体系的かつ効果的に防止できるか?
  • RQ2正しさを保つために、どのメソッド呼び出しシーケンスを原子的(アトミック)に実行すべきかを表現できる形式的仕様メカニズムは何か?
  • RQ3静的解析は、並列契約を満たすクライアントプログラムを効率的かつ正確に検証できるか?
  • RQ4提案手法は、実際の生産環境ソフトウェアにおける原子的でない動作の違反をどれほど効果的に検出できるか?

主な発見

  • 提案された契約ベースのアプローチにより、関連するメソッド呼び出しが単一のアトミックスコープ内で実行されることを保証することで、アトミシティ違反が効果的に防止された。
  • 静的解析は、Apache Tomcat 6.0における深刻なアトミシティ違反を正しく特定した。開発チームはこれを直ちに認識し、修正した。
  • 広範な制御フローパターンのフィルタリングにより、誤検出を最小限に抑え、アトミシティ違反の検出において高い正確性を達成した。
  • プロトタイプは実世界のソフトウェアにおいて効率的な性能を示し、このアプローチのスケーラビリティを確認した。
  • 結果として、並列処理のための契約と静的検証を組み合わせることで、並列プログラムの信頼性が顕著に向上することが示された。

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

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

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

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