1 / 20

J: Code Analysis

J: Code Analysis. J1: Partition-Based Regression Verification Marcel Böhme , Bruno C. d. S. Oliveira, Abhik Roychoudhury J2: Automated Diagnosis of Software Configuration Errors Sai Zhang, Michael D. Ernst J3: Detecting Deadlock in Programs with

abel-abbott
Download Presentation

J: Code Analysis

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. J: Code Analysis J1: Partition-Based Regression Verification Marcel Böhme, Bruno C. d. S. Oliveira, AbhikRoychoudhury J2: Automated Diagnosis of Software Configuration Errors Sai Zhang, Michael D. Ernst J3: Detecting Deadlock in Programs with DataCentricSynchronization Daniel Marino, Christian Hammer, Julian Dolby, MandanaVaziri, Frank Tip, Jan Vitek 情報処理学会 ソフトウェア工学研究会国際的研究活動活性化WG ICSE’13 勉強会

  2. ICSE’13勉強会 (2013年7月9日) 担当者: 野田 訓広@阿草研OB In Proc. of ICSE’13, pp.302--311.

  3. Outline ①~④: Main Contributions J1: Partition-Based Regression Verification

  4. Partition-Based RV ・RV: 全入力空間を検証 ・PRV: 入力空間を分割し段階的に検証 ・RT: 入力空間の特定の点に対し検査 同値空間は記号実行を基にした方法で計算. スライス・到達可能性・伝播状態などを 計算して,(1)同じ変更部分に到達するか (2)出力への影響が同じかを判定し求める. ランダムにテストケース選択・実行 同値空間(differential partition)を計算 隣接する空間のテストケースを選択・実行 b.に戻る 上図は “Böhne et. al., Partition-Based Regression Verification, In Proc. of ICSE‘13, pp.302-311” より引用 J1: Partition-Based Regression Verification

  5. Experimental Evaluation • 提案手法が関連手法よりもどれだけ有用かを評価 • 5個のソフトウェア (20LOC~5,000LOC) • 83個のバージョン • RQ1: Efficiency – Semantic Difference • 41% 少ない時間で完了 • 21% 多くのregression differencesを検出 • RQ2: Efficiency – Software Regression • 63% 少ない時間で完了 • 48% 多くのsoftware regression (≠semantic difference)を検出 • RQ3: Practicability • Apache CLIに対し,2ヶ月間も報告されなかったバグを88秒で検出! J1: Partition-Based Regression Verification

  6. 所感 • Pros • 実験結果が良い.関連研究と比較した際の有用性がよく分かる. • 実際に検出されづらいバグを検出できている(Apache CLIの例)点が良い. • いかに良い例を見つけてくるかが重要? • 手法考案と例を見つけるのはどちらが先? • Cons • Scalabilityについての議論は保留されている.結局実用的なのか? • どのようなSemantic Difference/Software Regressionが見つかるのかよく分からない J1: Partition-Based Regression Verification

  7. Automated Diagnosis of Software Configuration Errors Sai Zhang, Michael D. Ernst University of Washington, USA ICSE’13勉強会 (2013年7月9日) 担当者: 渥美 紀寿 (名古屋大学) In Proc. of ICSE’13, pp.312-321.

  8. 研究の目的と主要な貢献 目的 • ソフトウェアの設定ミスによる不具合の原因を特定 特徴 • テストオラクルが不要 • クラッシュしている場合もしていない場合も自動的に特定可能 主要な貢献 • Java のソフトに対する診断ツールを実装 (http://config-errors.googlecode.com) • 5つのソフトウェアに対する14の設定エラーに対して評価したところ,根本の原因を上位に示すことができた J2: Automated Diagnosis of Software Configuration Errors

  9. 手法の概要 Configuration オプションの 値の設定からスライシング 影響を 受ける 条件式 プログラム true と評価される 回数を計測するための コード埋め込み 伝播解析 Configuration オプション 計測 プログラム 成功実行と大きく 異なる部分を検出 実行 プロファイル エラー レポート 実行 エラー検出 成功実行における プロファイルを あらかじめ構築 原因となる Configuration オプションを Ranking プロファイル DB (成功実行) 入力 Configuration (エラー実行) J2: Automated Diagnosis of Software Configuration Errors

  10. 評価方法 • 対象 • Randoop, Weka, JChord, Synoptic, Soot • 5 non-crashing, 9 crashing • プロファイルDBの構築 • ユーザマニュアル,FAQ,ML等から成功実行 • 既存技術との比較,利用技術の違い • ConfAnalyzer[1], Fault Localization (Tarantula[2], Daikon[3]), Slicing (Full Slicing, Thin Slicing) • その他 • 確度,パフォーマンス [1] A. Rabkin and R. Katz. Precomputing possible configuration errordiagnoses. In ASE, 2011. [2] J.A.Jones,M.J.Harrold,andJ.Stasko.Visualizationoftestinformation to assist fault localization. In ICSE, 2002. [3] M. D. Ernst, J. Cockrell, W. G. Griswold, and D. Notkin. Dynamically discovering likely program invariants to support program evolution. In ICSE, 1999. J2: Automated Diagnosis of Software Configuration Errors

  11. 評価結果 既存技術との比較を 詳細に分析しているところが 論文の高評価に 正しい実行におけるプロファイルに 大きく依存 Fault Localiztion (Tarantula, Daikon) non-crashing では 原因を上位に出せた プロファイルが短かいので, うまくいかない 類似prof. / 全 prof.in DB Fig. 6. (S. Zhang, M. D. Ernst, Automated Diagnosis of Software Configuration Errors, In Proc. of ICSE’13, pp.312-321.) J2: Automated Diagnosis of Software Configuration Errors

  12. Detecting Deadlock in Programs with Data-Centric Synchronization by Daniel Marino, Christian Hammer, Julian Dolby, Mandana Vaziri, Frank Tip, Jan Vitek @ ICSE 2013 ICSE’13勉強会 (2013年7月9日) 今井 敬吾 @ ITプランニング In Proc. of ICSE’13, pp.322--331.

  13. 概要 • AJ(先行研究:Javaの並行拡張):アトミックにアクセスすべきフィールド群を宣言的に記述する atomic set機能(POPL’06, ICSE’08, ECOOP’10, TOPLAS’12, ICSE’13ほか) • AJコンパイラは適切な位置にロック命令を挿入したJavaのコードを生成する 競合が起こらない・データの一貫性を保持できる(オーバーヘッドも比較的小さい) (挿入したロックにより)デッドロックが起こってしまう… ⇒AJプログラムのデッドロックを検出する 型システム(というよりアノテーション+プログラム解析アルゴリズム)を提案 AJ(Java+atomic set) compile lock Java J3: Detecting Deadlock in Programs with Data-Centric Synchronization

  14. AJ先行研究:宣言的な同期制約[1-3] tree1 Node root; int size; t atomic set t: rootとsizeにアクセスするメソッド呼び出し( tのunit of workと呼ぶ)が(それらのアクセスに関して)アトミックになる The program code is from Fig. 2. of (D. Marino, et al., Detecting Deadlock in Programs with Data-Centric Synchronization, In Proc. of ICSE '13, pp. 322-331) J3: Detecting Deadlock in Programs with Data-Centric Synchronization

  15. AJ先行研究:アトミックセットのエイリアス[1-3]AJ先行研究:アトミックセットのエイリアス[1-3] tree1 Node root; int size; t root node1 Node left; Node right; n Aliasing annotation:複数のオブジェクトのアトミックセットを一つにする。 (単一のロックにより、tree1 と node1 の両方のフィールドが保護される) The program code is from Fig. 2. of (D. Marino, et al., Detecting Deadlock in Programs with Data-Centric Synchronization, In Proc. of ICSE '13, pp. 322-331) J3: Detecting Deadlock in Programs with Data-Centric Synchronization

  16. 検出可能なデッドロックの簡単な例 T3 T4 ② ② ① ① t t tree1 tree2 t < t (atomic set tのロックが循環する) デッドロック The program code is from Fig. 2 and Fig. 3. of (D. Marino, et al., Detecting Deadlock in Programs with Data-Centric Synchronization, In Proc. of ICSE '13, pp. 322-331) J3: Detecting Deadlock in Programs with Data-Centric Synchronization

  17. 貢献 • AJのデッドロック検出アルゴリズムの提案と実装 • ロックに半順序が付くことを示す、素朴なアルゴリズムAJのアノテーションはやや(かなり)重たいので、これくらいできて当然かも? • 再帰的データ構造を扱うためにアノテーション |a<this.a|をAJに追加 • eclipseプラグイン(未公開):WALAでCFG生成・データフロー解析 • 正当性の証明はごくインフォーマル([8]のtech. reportにある) • 評価(解析対象のプログラム10個(一部公開)について) • AJプログラムの修正はごくわずかで良い2個:デッドロック誤検出を取り除くためのリファクタリング少し1個:|a<this.a|のアノテーション4箇所AJアノテーションは「筋が良い」か?わずかなアノテーションでデッドロックを検出できるならば良いが、AJ自身に向き不向きがあるように思われる。例えば Java の collection フレームワークを AJ に書き換えるのに1ファイルあたり50近いエイリアスが必要(Table I参照)。他はそうでもないが… • RQ3:実行時間は?→最大で75秒 (Core i5 1.8GHz RAM 4GB) J3: Detecting Deadlock in Programs with Data-Centric Synchronization

  18. (補足)順序付けアノテーション |this.a<a| n Node left; Node right; node1 right left Node left; Node right; Node left; Node right; n n node2 node3 木全体をひとつのatomic setに属させる場合、子ノードのnを自身のnと同じにすればよい The program code is from Fig. 2. of (D. Marino, et al., Detecting Deadlock in Programs with Data-Centric Synchronization, In Proc. of ICSE '13, pp. 322-331) J3: Detecting Deadlock in Programs with Data-Centric Synchronization

  19. (補足)順序付けアノテーション |this.a<a| ノード毎に異なるatomic set 細粒度lock:ノード毎に異なるatomic set にしたい n Node left; Node right; エイリアスを削除 エイリアスを削除すると… node1 right left Node left; Node right; Node left; Node right; n n node2 node3 Error left/right を全スレッドが同じ順でアクセスしていることを保証できない (デッドロックと判定される) The program code is from Fig. 2. of (D. Marino, et al., Detecting Deadlock in Programs with Data-Centric Synchronization, In Proc. of ICSE '13, pp. 322-331) J3: Detecting Deadlock in Programs with Data-Centric Synchronization

  20. (補足)順序付けアノテーション |this.a<a| |this.n<n| 子ノードのatomic setは自分より後にロックする 子ノードのatomic setは自分より後にロックする n Node left; Node right; |this.n<n| node1 right left |this.n<n| Node left; Node right; Node left; Node right; |this.n<n| n n node2 node3 Ok 親→子の順にアクセスすることを保証できる The program code is from Fig. 2. of (D. Marino, et al., Detecting Deadlock in Programs with Data-Centric Synchronization, In Proc. of ICSE '13, pp. 322-331) J3: Detecting Deadlock in Programs with Data-Centric Synchronization

More Related