JNI プログラム中のバグ発見
スポンサーリンク
概要
- 論文の詳細を見る
この発表で我々は,Java Native Interface (JNI) を用いたプログラムからバグを発見するための静的解析技術を述べる.JNI プログラミングは面倒でエラーが発生しやすい.なぜならコンパイラで検出できないJNI 特有の間違いが多数あるからである.この発表ではその中から次の 3 つに着目する.まず,ネイティブコードでは,例外を扱うための明示的な文がJava メソッド起動文の後に挿入されなければならない.しかし,この文は忘れられることがある.我々はこの欠陥を発見するためのタイプステート解析を提案する.第 2 に,ネイティブコードは Java VM 内にリソースを割り付けることができるが,それらは Java と違い明示的に解放されなければならない.このリソース管理におけるエラーはリークなどを引き起こす.この問題に対処するために我々は一般のメモリーエラー検出にも使われているタイプステート解析を用いる.第 3 に,Java リソースへの参照が複数回のネイティブメソッド呼び出しにまたがるときには,それは大域参照へ変換されなければならない.しかし,プログラマはこのルールを忘れて,後で使用するために局所参照を大域変数へ代入してしまうことがある.我々は,このふさわしくない慣習を検出するための構文チェッカを提供する.そして我々は,これらの解析技術を BEAM と呼ばれるバグ発見器の上に実装して,JNI を含むオープンソースソフトウェアに対して実行してみた.実験では 84 個の JNI 特有のバグをオーバヘッドなしに発見し,合わせて 73% バグ発見数を増やすことができた.
- 一般社団法人情報処理学会の論文
- 2008-10-27
著者
関連論文
- OLTPのための自動グループコミット手法の提案(ストレージ 並列分散データベース,データ工学論文)
- ストリーム・コンピューティング時代を開く基盤ソフトウェアIBM InfoSphere Streams (特集 BAO--未来を開く高度なインテリジェンス)
- スクリプト言語コンパイラのための評価による最適化
- 動的スクリプト言語処理系が動作するJava仮想マシンのメモリ分析
- 再現コンパイル手法を用いたJava JITコンパイラの問題判別
- 非対称なスピンロックの提案とそのJavaへの応用
- スレッド局所性を利用したJavaロックの高速化
- JNI プログラム中のバグ発見
- Java Just-In-Timeコンパイラにおける最適化とその評価
- 第1回プログラミングおよび応用のシステムに関するワークショップ(SPA '98)の報告
- オブジェクト指向言語におけるメッセージ送信の高速化技法
- 静的解析によるメソッド探索の高速化
- メソッドの仮翻訳によるオブジェクト指向言語の最適化
- OOPSLA'94参加報告
- 5. 保守的ごみ集め (<特集> ごみ集めの基礎と最近の動向)
- C ベースのオブジェクト指向言語における再コンパイル時間の短縮
- オブジェクト指向データベースにおけるC++プログラム情報の表現と蓄積
- Tools Pacific '90に参加して
- オブジェクト指向言語COB : インプリメンテーション
- オブジェクト指向言語CDB : 設計方針と言語仕様
- 90-4 C++の多重継承
- ロック制御型同期複製ミドルウェアの提案(分散データベース,データ工学論文)
- 高可用キー・バリュー ストアにおけるデータ鮮度に基づいた一貫性の提案とその実装