WEKO3
アイテム
JNI プログラム中のバグ発見
https://ipsj.ixsq.nii.ac.jp/records/16428
https://ipsj.ixsq.nii.ac.jp/records/164281bf5c2ba-ff5f-45df-adfd-631161eeaea9
| 名前 / ファイル | ライセンス | アクション |
|---|---|---|
|
|
Copyright (c) 2008 by the Information Processing Society of Japan
|
|
| オープンアクセス | ||
| Item type | Trans(1) | |||||||
|---|---|---|---|---|---|---|---|---|
| 公開日 | 2008-10-27 | |||||||
| タイトル | ||||||||
| タイトル | JNI プログラム中のバグ発見 | |||||||
| タイトル | ||||||||
| 言語 | en | |||||||
| タイトル | Finding Bugs in JNI Programs | |||||||
| 言語 | ||||||||
| 言語 | jpn | |||||||
| キーワード | ||||||||
| 主題Scheme | Other | |||||||
| 主題 | 発表概要 | |||||||
| 資源タイプ | ||||||||
| 資源タイプ識別子 | http://purl.org/coar/resource_type/c_6501 | |||||||
| 資源タイプ | journal article | |||||||
| 著者所属 | ||||||||
| 日本アイ・ビー・エム東京基礎研究所 | ||||||||
| 著者所属 | ||||||||
| 日本アイ・ビー・エム東京基礎研究所 | ||||||||
| 著者所属(英) | ||||||||
| en | ||||||||
| Tokyo Research Laboratory, IBM Research | ||||||||
| 著者所属(英) | ||||||||
| en | ||||||||
| Tokyo Research Laboratory, IBM Research | ||||||||
| 著者名 |
近藤豪
小野寺, 民也
× 近藤豪 小野寺, 民也
|
|||||||
| 著者名(英) |
Goh, Kondoh
Tamiya, Onodera
× Goh, Kondoh Tamiya, Onodera
|
|||||||
| 論文抄録 | ||||||||
| 内容記述タイプ | Other | |||||||
| 内容記述 | この発表で我々は,Java Native Interface (JNI) を用いたプログラムからバグを発見するための静的解析技術を述べる.JNI プログラミングは面倒でエラーが発生しやすい.なぜならコンパイラで検出できないJNI 特有の間違いが多数あるからである.この発表ではその中から次の 3 つに着目する.まず,ネイティブコードでは,例外を扱うための明示的な文がJava メソッド起動文の後に挿入されなければならない.しかし,この文は忘れられることがある.我々はこの欠陥を発見するためのタイプステート解析を提案する.第 2 に,ネイティブコードは Java VM 内にリソースを割り付けることができるが,それらは Java と違い明示的に解放されなければならない.このリソース管理におけるエラーはリークなどを引き起こす.この問題に対処するために我々は一般のメモリーエラー検出にも使われているタイプステート解析を用いる.第 3 に,Java リソースへの参照が複数回のネイティブメソッド呼び出しにまたがるときには,それは大域参照へ変換されなければならない.しかし,プログラマはこのルールを忘れて,後で使用するために局所参照を大域変数へ代入してしまうことがある.我々は,このふさわしくない慣習を検出するための構文チェッカを提供する.そして我々は,これらの解析技術を BEAM と呼ばれるバグ発見器の上に実装して,JNI を含むオープンソースソフトウェアに対して実行してみた.実験では 84 個の JNI 特有のバグをオーバヘッドなしに発見し,合わせて 73% バグ発見数を増やすことができた. | |||||||
| 論文抄録(英) | ||||||||
| 内容記述タイプ | Other | |||||||
| 内容記述 | In this presentation, we describe static analysis techniques for finding bugs in programs using the Java Native Interface (JNI). The JNI is both tedious and error-prone because there are many JNI-specific mistakes that are not caught by a native compiler. This presentation is focused on three kinds of common mistakes. First, explicit statements to handle a possible exception need to be inserted after a statement calling a Java method. However, such statements tend to be forgotten. We present a typestate analysis to detect this exception handling mistake. Second, while the native code can allocate resources in a Java VM, those resources must be manually released, unlike Java. Mistakes in this resource management cause leaks and other errors. To detect Java resource errors, we used the typestate analysis also used for detecting general memory errors. Third, if a reference to a Java resource lives across multiple native method invocations, it should be converted into a global reference. However, programmers sometimes forget this rule and, for example, store a local reference in a global variable for later uses. We provide a syntax checker that detects this bad coding practice. We have implemented our analysis techniques in a bug-finding tool called BEAM, and executed it on opensource software including JNI code. In the experiment, our analysis techniques could find 84 JNI-specific bugs without any overhead and increased the total number of bug reports by 73%. | |||||||
| 書誌レコードID | ||||||||
| 収録物識別子タイプ | NCID | |||||||
| 収録物識別子 | AA11464814 | |||||||
| 書誌情報 |
情報処理学会論文誌プログラミング(PRO) 巻 1, 号 3, p. 34-34, 発行日 2008-10-27 |
|||||||
| ISSN | ||||||||
| 収録物識別子タイプ | ISSN | |||||||
| 収録物識別子 | 1882-7802 | |||||||
| 出版者 | ||||||||
| 言語 | ja | |||||||
| 出版者 | 情報処理学会 | |||||||