JPH07319697A - アプリケーションプログラム実行中における配列領域外アクセスの検出方法 - Google Patents

アプリケーションプログラム実行中における配列領域外アクセスの検出方法

Info

Publication number
JPH07319697A
JPH07319697A JP6115219A JP11521994A JPH07319697A JP H07319697 A JPH07319697 A JP H07319697A JP 6115219 A JP6115219 A JP 6115219A JP 11521994 A JP11521994 A JP 11521994A JP H07319697 A JPH07319697 A JP H07319697A
Authority
JP
Japan
Prior art keywords
array
program
area
detection code
access
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP6115219A
Other languages
English (en)
Other versions
JP2581446B2 (ja
Inventor
俊和 ▲高▼田
Toshikazu Takada
Yushi Mochizuki
祐志 望月
Kazuto Nakada
一人 中田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Priority to JP6115219A priority Critical patent/JP2581446B2/ja
Publication of JPH07319697A publication Critical patent/JPH07319697A/ja
Application granted granted Critical
Publication of JP2581446B2 publication Critical patent/JP2581446B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Executing Machine-Instructions (AREA)

Abstract

(57)【要約】 (修正有) 【目的】 大規模計算に対しても短時間で配列領域外ア
クセスを検出でき、通常のプロダクションランにおいて
も配列領域外アクセスの発生をモニターできる、方法。 【構成】 汎用性の高いアプリケーションプログラムで
は、副プログラムで必要となる作業用配列を用意する方
法として、主プログラムで用意された一次元配列を適宜
分割し、副プログラムに整合配列を引数として渡してい
る。副プログラムのコール直後などの計算処理の節目に
おいて一次元配列に挿入された検出コードの保存具合の
参照をプログラムの実行中常時行えば、大規模のプロダ
クションランにおいても領域外アクセスが発生している
か否か検出できる。副プログラム内のDOループの前後
に、検出コードを参照する間隔を狭めて、領域外アクセ
ス個所を特定できるので、デバッグ機能としても利用で
きる。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、アプリケーションプロ
グラム実行中における配列領域外アクセスの検出方法に
関する。
【0002】
【従来の技術】FORTRAN、Cなどの言語を用いて
アプリケーションプログラムを作成・実行する場合にお
いて、プログラムエラーの多くは不正な添字式による配
列領域外アクセスである。これを検出する方法として、
配列の上限値、下限値を参照しながら配列領域外アクセ
スを検出する特別なプログラムをプログラムコンパイル
時にシステムが自動的にユーザプログラムに組み込める
よう、コンパイラのオプションとして通常用意されてい
る。このオプションが指定されると、コンパイラは、オ
プションの指定された全てのプログラムユニットの全て
の配列について、その下限値、上限値に関するテーブル
を別途用意し、それらの配列が参照される度毎に添字式
で定義される値が上限値もしくは下限値を超えていない
かをテーブル上の値を参照しながら逐次チェックする
(特公平3−77541号公報)。そして、配列領域外
アクセスが発生した場合には、ユーザーに警告を出すよ
うになっている。
【0003】
【発明が解決しようとする課題】配列領域外アクセスを
検出する従来の方法では、配列が参照される度毎にシス
テムによる判断が入るため、計算規模が大きくなると演
算数が膨大になり、検出に極めて多くのCPU時間を必
要とする。このため、小規模計算を対象として行うデバ
ッグ時には有効であるが、プロダクションランにおいて
配列領域外アクセスが発生しているか否かを検出する方
法としては実用的でない。プロダクションランにおいて
新たなバグが検出されることは珍しくなく、最初にチェ
ックすべきは、原因として可能性の最も高い配列領域外
アクセスである。しかしながら、このような場合通常計
算規模が大きく、前述のオプションを使って直接検出す
ることは現実的でないことが多い。また、プロダクショ
ンランにおいて常時配列領域外アクセスが発生したか否
かをモニターできる機能をアプリケーションプログラム
に付加できれば、計算結果に対する信頼性の確認に極め
て有効である。
【0004】この二つの課題、1)大規模計算に対して
も短時間で配列領域外アクセスを検出できる、2)通常
のプロダクションランにおいても配列領域外アクセスの
発生をモニターできる、を解決する方法を提供すること
が、本発明の目的である。
【0005】
【課題を解決するための手段】副プログラムで使用する
配列を、主プログラムで確保された一次元配列を適宜分
割して、副プログラムの仮引数による整合配列として宣
言・使用するプログラム処理方法が、プログラムの汎用
性を高めるために広く用いられている。このようなプロ
グラムにおいて、主プログラムで確保され適宜分割され
た配列領域の間に、事前に決められた任意の検出コード
を大きさ可変な配列領域として挿入し、この検出コード
が保存されているか否かを、例えば、副プログラム終了
直後に検査することで、配列領域外アクセスの発生をプ
ログラム実行中に検出する。
【0006】
【作用】メモリーへのデータ書き込み時に発生する配列
領域外アクセスの検出については、副プログラムの宣言
された整合配列個々に対して逐次チェックするのではな
く、図1に示したように、副プログラムのコール直後な
どの計算処理の節目において検出コードの保存具合を参
照することにより、極めて短時間に整合配列の領域外ア
クセスを検出できることが、本発明の特徴である。この
ため、この検出コードの参照をプログラム実行中常時行
うようにすれば、大規模のプロダクションランにおいて
も領域外アクセスが発生しているか否か検出できる。ま
た、副プログラム内のDOループの前後などのように、
コード領域を参照する間隔を狭めることにより、領域外
アクセスを引き起こしている個所を特定できるので、デ
バッグ機能としても利用できる。メモリーからのデータ
読み込み時の配列領域外アクセスについても、ロードさ
れたデータ中に検出コードが含まれていれば、領域外ア
クセスが発生したことになり、そのチェックも計算処理
ステートメントの直前にif文により簡単にできる。
【0007】検出コードは、通常の数値計算には現れる
ことの無い、&、#などの特殊文字の集合からなってお
り、例えば、倍精度の実数配列のエレメント一つに8文
字を格納するが、この8文字の組を複数用意することで
検出コードの領域を可変にすることができる。配列領域
外アクセスが起こると、書き込み時にこの検出コードが
破壊されるので、適宜この検出コードをモニターするこ
とで領域外アクセスの発生を確認できる。読み込み時に
ついては、ロードした内容が検出コードか否かの判断を
するif文を挿入することで、検出できる。検出コード
の領域を可変にするのは、配列の添字によってはこの領
域を飛び越えて隣の配列を壊すことも考えられるので、
領域を長くすることでこのような場合も検出できるよう
にするためである。
【0008】
【実施例】汎用性の高いアプリケーションプログラムで
は、副プログラムで必要となる作業用配列を用意する方
法として、図2に示すように、主プログラムで用意され
た一次元配列Wを適宜分割し、副プログラムに整合配列
を引数として渡している。本発明では、図3に示された
ように、各整合配列の間に用意された黒い部分の配列
に、’#$&@’などの任意に決められた検出コードを
挿入し、この検出コードの保存具合とロードしたデータ
中での有無をチェックすることにより、整合配列の領域
外アクセスを検出する。その手続きを示したのが、図1
のフローチャートである。この検出コードは、任意であ
るが、全検出コード領域において共通である方が、処理
が容易である。偶然により、このコード領域を飛び越え
てしまうような領域外アクセスに対しても、この領域長
を変えてチェックすることにより検出できる。
【0009】
【発明の効果】副プログラムの宣言された整合配列個々
に対して逐次領域外アクセスをチェックするのではな
く、副プログラムのコール直後などの要所においてコー
ド領域の参照をすることにより、極めて短時間に整合配
列の領域外アクセスを検出できることが、本発明の特徴
である。このため、このコード領域の参照をプログラム
の実行中常時行うようにすれば、大規模のプロダクショ
ンランにおいても領域外アクセスが発生しているか否か
検出できる。また、副プログラム内のDOループの前後
などのように、コード領域を参照する間隔を狭めること
により、領域外アクセスを引き起こしている個所を特定
できるので、デバッグ機能としても利用できる。
【図面の簡単な説明】
【図1】配列領域外アクセスの検出手続きを示すフロー
チャート。
【図2】一次元配列におけるデータ構造を示す図。
【図3】一次元配列におけるデータと検出コードの位置
関係を示す図。
【符号の説明】
なし

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】副プログラムで使用する配列を、主プログ
    ラムで確保された一次元配列を適宜分割して、副プログ
    ラムの仮引数による整合配列として宣言・使用するプロ
    グラム処理方法において、主プログラムで確保され適宜
    分割された配列領域の間に、事前に決められた任意の検
    出コードを大きさ可変な配列領域として挿入し、データ
    のメモリーへの書き込みに対しては前記検出コードの保
    存状況を、読み込みに対してはロードされたデータ中の
    前記検出コードの有無を、検査・参照することを特徴と
    する、配列領域外アクセスの検出方法。
JP6115219A 1994-05-27 1994-05-27 アプリケーションプログラム実行中における配列領域外アクセスの検出方法 Expired - Fee Related JP2581446B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP6115219A JP2581446B2 (ja) 1994-05-27 1994-05-27 アプリケーションプログラム実行中における配列領域外アクセスの検出方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP6115219A JP2581446B2 (ja) 1994-05-27 1994-05-27 アプリケーションプログラム実行中における配列領域外アクセスの検出方法

Publications (2)

Publication Number Publication Date
JPH07319697A true JPH07319697A (ja) 1995-12-08
JP2581446B2 JP2581446B2 (ja) 1997-02-12

Family

ID=14657318

Family Applications (1)

Application Number Title Priority Date Filing Date
JP6115219A Expired - Fee Related JP2581446B2 (ja) 1994-05-27 1994-05-27 アプリケーションプログラム実行中における配列領域外アクセスの検出方法

Country Status (1)

Country Link
JP (1) JP2581446B2 (ja)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6426234A (en) * 1987-07-22 1989-01-27 Mitsubishi Electric Corp Program congestion monitoring system
JPH02166540A (ja) * 1988-12-20 1990-06-27 Fujitsu Ltd アクセス違反検出方式
JPH0377541A (ja) * 1989-08-21 1991-04-03 Terumo Corp 採液容器

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6426234A (en) * 1987-07-22 1989-01-27 Mitsubishi Electric Corp Program congestion monitoring system
JPH02166540A (ja) * 1988-12-20 1990-06-27 Fujitsu Ltd アクセス違反検出方式
JPH0377541A (ja) * 1989-08-21 1991-04-03 Terumo Corp 採液容器

Also Published As

Publication number Publication date
JP2581446B2 (ja) 1997-02-12

Similar Documents

Publication Publication Date Title
US8091075B2 (en) Method and apparatus for breakpoint analysis of computer programming code using unexpected code path conditions
JP4693044B2 (ja) ソースコード脆弱性検査装置
CN107479980B (zh) 一种检测应用中死锁的方法与设备
EP3495978B1 (en) Method for detecting vulnerabilities in software
CN111753306A (zh) 一种智能合约漏洞检测方法、装置、电子设备及存储介质
EP3514680B1 (en) Identification of changes in functional behavior and runtime behavior of a system during maintenance cycles
US7406625B2 (en) Protecting a code range in a program from breakpoints
Van Sprundel Fuzzing: Breaking software in an automated fashion
JPH07319697A (ja) アプリケーションプログラム実行中における配列領域外アクセスの検出方法
US9710360B2 (en) Optimizing error parsing in an integrated development environment
CN110727577B (zh) 嵌入式系统软件中概率复现问题的调试方法、系统及介质
Schubert et al. Know your analysis: How instrumentation aids understanding static analysis
Yang et al. 1dFuzz: Reproduce 1-Day Vulnerabilities with Directed Differential Fuzzing
Pasaribu et al. Input injection detection in Java code
JPH06324904A (ja) 試験命令の補正方法
CN112612471B (zh) 代码处理方法、装置、设备及存储介质
US20230146443A1 (en) Coverage-guided fuzzing via dynamic instrumentation
CN112527677B (zh) 应用程序的保护方法及电子设备
Al-Iadan A survey and a taxonomy of approaches for testing parallel and distributed programs
Sistany AndroClonium: Bytecode-Level Code Clone Detection for Obfuscated Android Apps
Bolazar et al. Measuring Component Specification-Implementation Concordance with Semantic Mutation Testing.
Li et al. Generic O-LLVM Automatic Multi-architecture Deobfuscation Framework Based on Symbolic Execution
Rohou SAMVA: Static Analysis for Multi-fault Attack Paths Determination
JPH0377541B2 (ja)
CN114860485A (zh) 一种嵌入式系统的栈回溯实现方法、系统、介质及终端

Legal Events

Date Code Title Description
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 19961001

LAPS Cancellation because of no payment of annual fees