JP2002055851A - コンピュータシステムにおける不正なメモリアクセスを検出する監視方法及びそのプログラム並びにその記録媒体 - Google Patents

コンピュータシステムにおける不正なメモリアクセスを検出する監視方法及びそのプログラム並びにその記録媒体

Info

Publication number
JP2002055851A
JP2002055851A JP2000242713A JP2000242713A JP2002055851A JP 2002055851 A JP2002055851 A JP 2002055851A JP 2000242713 A JP2000242713 A JP 2000242713A JP 2000242713 A JP2000242713 A JP 2000242713A JP 2002055851 A JP2002055851 A JP 2002055851A
Authority
JP
Japan
Prior art keywords
memory
access
application program
monitoring method
area
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.)
Pending
Application number
JP2000242713A
Other languages
English (en)
Inventor
Naoki Tsue
尚樹 津江
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.)
HIMACS Ltd
Original Assignee
HIMACS Ltd
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 HIMACS Ltd filed Critical HIMACS Ltd
Priority to JP2000242713A priority Critical patent/JP2002055851A/ja
Publication of JP2002055851A publication Critical patent/JP2002055851A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Debugging And Monitoring (AREA)
  • Memory System (AREA)
  • Storage Device Security (AREA)

Abstract

(57)【要約】 【課題】余計なオーバーヘッドをかけずに不正メモリア
クセスの検出を行うことができるメモリアクセス監視方
法を提供する。 【解決手段】アプリケーションプログラム100がメモリ
アクセス監視プログラム200に対して自ら使用するデー
タ領域を動的に確保するためのメモリ割り当て要求を発
行した時、アプリケーションプログラム100が要求した
メモリ領域とアクセス不可属性設定用メモリ領域を連続
するメモリ領域として空メモリ空間内に確保する。確保
したメモリ領域の終端から先端に向けて、アクセス不可
属性設定用メモリ領域として確保した大きさのメモリ領
域308をアクセス不可属性に設定する。確保したメモリ
領域のうちアクセス不可属性を設定していない、アプリ
ケーションプログラム100が要求した大きさのメモリ領
域307をアプリケーションプログラム100に使用可能メモ
リ領域として割り当てる。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、コンピュータシス
テム上でのアプリケーションプログラムの開発あるいは
チェックなどのアプリケーションプログラムのデバック
に際し用いられるもので、特に、アプリケーションプロ
グラムが動的に確保したメモリへのオーバランアクセス
と解放済みメモリへのアクセスの検出、およびファイル
I/Oトレース等における不正なメモリアクセスを検出
する監視方法、そのプログラム、その記録媒体に関する
ものである。
【0002】
【従来の技術】メモリオーバランアクセスや開放済みメ
モリへのアクセス(以下、「不正なメモリアクセス」と
いう)は、プログラムの品質を劣化させるものとしてア
プリケーションプログラムの開発に際して大きな問題で
ある。このような不正なメモリアクセスは、アプリケー
ションプログラムの予期せぬデータ更新や異常終了をも
たらすことがあり、アプリケーションプログラムの効率
的開発においてその影響は深刻である。一方、アプリケ
ーションプログラムは、ハードウェアやオペレーティン
グシステムの性能が向上するにつれて巨大化、複雑化し
ていく状況にあり、このような巨大で複雑なプログラム
が引き起こす不正なメモリアクセスを正確に検出するこ
とはますます困難になっている。
【0003】一般に、不正なメモリアクセスの検出が困
難な理由として下記3点があげられる。 (1)不正なメモリアクセスがもたらす障害の兆候は、
しばしば、不正なメモリアクセスが発生した箇所とは異
なる箇所で現れる。 (2)不正なメモリアクセスがもたらす障害の兆候は、
必ずしも再現しない。 (3)コンパイラやソースデバッガなどの従来からある
プログラム開発ツールにおいては、メモリに関してもし
くはメモリのアクセスに関して、不正なメモリアクセス
の検出につながる情報を簡明に提供することがない。こ
のような背景にあって、不正なメモリアクセスの検出を
目的として、従来からさまざまな発明や技術の開発が行
われてきた。
【0004】第1に、不正メモリアクセスを検出するNu
Mega Technologies社の技術であるmalloc wrapperと呼
ばれる方法では、オペレーティングシステムが提供する
ヒープメモリ制御関数(メモリ割り当て関数、メモリ開
放関数など)をフック(横取り)し、オペレーティング
システムのヒープメモリ制御関数の呼び出しの前/後に
不正アクセスを検出するための処理を追加する。すなわ
ち、メモリ割り当て時に、割り当てたメモリの終端に不
正メモリアクセスを検出するためのデータを付加し、次
にヒープメモリ制御関数を呼び出したタイミングで、ma
lloc wrapperが管理するすべてのメモリについて、確保
した領域の終端データが正しく保存されているかをチェ
ックすることにより、割り当てた領域を超えたメモリ空
間への不正な書き込みを検出する原理を採用している。
しかしながらこの方法では、(1)ヒープメモリ制御関
数を呼び出さない限り、割り当てたメモリへの不正な書
き込みが検出できないので、不正なアクセス箇所を一意
に特定できない、(2)管理するメモリが増加すること
で性能劣化が発生する、(3)開放済みのメモリへのア
クセスの検出ができない場合が多いという問題点があ
る。
【0005】第2に、米国特許第5193180号明細
書では、オブジェクトコード上のメモリアクセス命令の
前後に、チェック用の命令を埋め込みメモリの読み込み
/書き込みを監視する方法が提案されている。この方法
では、不正なメモリアクセス命令を特定しようとする
と、すべてのメモリアクセス命令にチェック用のコード
が挿入されるため、著しい性能の劣化が発生するという
問題点がある。
【0006】第3に、米国特許第6035426号明細
書では、前記米国特許第5193180号明細書の方法
がもたらす性能劣化を解決すべき課題としてとらえ、そ
れを解決する手段を提供している。すなわち、米国特許
第6035426号では、実行中のプログラムに独自の
メモリ管理機構を提供し、メモリアクセスをチェックす
る監視スレッドをバックグランドで起動する。不正アク
セスの判定処理は、起動された監視スレッドがタイマ割
り込みの契機で、自ら管理するメモリバッファのチェッ
クを行うことにより行なわれ、本体スレッドのメモリチ
ェックに要するオーバーヘッドを削減しようとしてい
る。しかしながらこのような方法では、タイマ割り込み
を契機とするため、タイマ割り込みの間隔(1サイク
ル)の中で実行される全てのメモリアクセス命令が障害
原因の候補となり、不正なメモリアクセスを引き起こす
命令を一意には特定できないという問題がある。また、
性能劣化に関する問題として、アプリケーションプログ
ラムが終了するまで、タイマ割り込みの契機のたびに不
正アクセスの判定処理が動作するため、システムリソー
スを浪費するという問題点がある。
【0007】特開平5−289944号公報に開示され
る方法は、例外手続きを契機として不正なメモリアクセ
スを検出するものであるが、この方法は、ある関数Aの
実行前にその関数Aが使用するデータ領域を書き込み許
可に設定し、その関数Aが終了したときに当該データ領
域を書き込み禁止の設定にするという手段が技術の特徴
である。したがって、ある関数Aの使用するメモリ空間
があらかじめ確保されていることが前提である。この前
提のもとに、プログラムXの実行中にある関数Aが呼び
出されると、この関数Aに対し、当該データ領域への書
き込みを許可し、関数Aが終了すると、当該データ領域
への書き込みを禁止する。その後、プログラムX中の関
数A以外から当該データ領域に対して書き込みが発生す
ると、禁止領域に書き込もうとするものであるから、例
外手続きが呼び出され、プログラムダンプされる。この
結果、特開平5−289944号公報の方法では、書き
込みの許可/禁止のみが例外手続きを呼び出す契機とな
っているので、読み込みについては契機にならない。し
たがって、不正なアクセスのうち、不正な読み込みが検
出できず、この点で大規模プログラムのデバックが十分
できかねるという問題がある。
【0008】また特開平5−289944号公報記載の
方法では、ある関数Aが使用するデータ領域を、関数A
の実行中に関数Aによって開放することを想定していな
い。すなわち特開平5−289944号の技術では、関
数Aの実行前に関数Aが使用するデータ領域に対し書き
込み許可に設定され、関数Aが終了したときに当該デー
タ領域に対し書き込み禁止の設定がなされるという手段
が基本原理であり、関数Aが実行中は当該データ領域は
書き込み可能のままである。したがって、特開平5−2
89944号公報に開示される技術を基に、関数Aが使
用するデータ領域の関数A実行時(終了前)における関
数Aによる開放を想定した場合、当該データ領域に対す
る関数A自身によるデータへの書き込みを検出すること
はできない。
【0009】一方、コンピュータシステムが提供するフ
ァイル入出力機能をプログラムが誤って使用した場合、
時として再現性の低い不可解な現象でプログラムが異常
終了することがある。例えば、マルチスレッドで動作す
るプログラムにおいて、あるスレッド1がファイルを2
重にクローズ(CLOSE)し、別なスレッド2がファ
イルをオープン(OPEN)して読み込み/書き込みな
どのアクセスを行うという処理があった場合、実行時の
環境によっては何事もおこらずプログラムが正常終了し
たり、またはスレッド2の読み込み/書き込みが失敗し
プログラムが異常終了したりして、そのときどきで異な
る現象が発生することがある。このような場合に、障害
の原因やその箇所を特定することは、特に大規模プログ
ラムの場合、非常に困難である。しかも、このようなフ
ァイル入出力の誤使用を原因とする障害は、不正なメモ
リアクセスによって発生する障害と酷似することがあ
り、この場合は両者の区別がつかず、効率的なデバッグ
の大きな妨げとなっていた。
【0010】
【発明が解決しようとする課題】以上述べたように、従
来の技術においては以下のような問題があった。第1
に、アプリケーションプログラムの不正アクセス発生箇
所を一意に特定するためには、プログラムが実行時に動
的に割り当てたデータ領域に対し、割り当てた領域を超
えたメモリ空間へのアクセス(読み込み/書き込み)お
よび開放すみメモリへのアクセスを検出する手段とし
て、メモリチェック機構が管理する全メモリを対象とす
るエラーチェック、もしくは全メモリアクセス命令に対
しアクセス不正を判定するためのエラーチェックをする
必要があり、これらのチェックに要するオーバーヘッド
が発生し、性能劣化が著しかった。第2に、従来の技術
では、再現性の低い不可解な障害が発生したときに、不
正なメモリアクセスによって発生する障害なのか、ファ
イル入出力機能の誤使用によって発生する障害なのか、
あるいはそのどちらでもないのかを区別することができ
ず、効率的なデバッグをすることができなかった。
【0011】本発明は上述したような従来事情に鑑みて
なされたものであり、その目的とするところは、第1
に、メモリチェック機構が管理するすべてのメモリ、も
しくは全メモリアクセス命令を対象としてエラー判定処
理が動作することによるオーバーヘッドを発生させるこ
となく、不正なメモリアクセスの発生箇所を一意に特定
することができる手段を提供することにある。
【0012】不正なメモリアクセスが発生する命令を一
意に特定するために、従来の技術においては、メモリチ
ェック機構が管理するすべてのメモリ、もしくは全メモ
リアクセス命令を対象としてエラー判定処理が動作す
る。これに対し本発明では、コンピュータシステムが提
供するアクセス例外制御手段とアクセス例外発生時に該
制御手段が呼び出す例外手続きとで不正メモリアクセス
のエラー判定処理を構成するものである。
【0013】また従来の技術では、メモリにアクセスす
るたびにもしくはメモリ割り当てやメモリ開放処理を呼
び出すたびにエラー判定が動作していたが、本発明で
は、不正なメモリアクセスが発生したときにのみエラー
判定処理が動作するようにし、エラー判定処理に要する
オーバーヘッドを大幅に削減せんとするものである(図
6参照)。
【0014】また本発明の第2の目的は、再現性の低い
不可解な障害が発生したときに、不正なメモリアクセス
によって発生する障害なのか、ファイル入出力機能の誤
使用によって発生する障害なのか、そのどちらでもない
のかを区別可能とすることを目的とする。
【0015】
【課題を解決するための手段】上記目的を達成するた
め、請求項1の監視方法は、アプリケーションプログラ
ムが自ら使用するデータ領域を動的に確保するためのメ
モリ割当要求に対して、前記アプリケーションプログラ
ムにアクセス可能なメモリ領域を提供し、該メモリ領域
の終端に接する隣接メモリ領域をアクセス不可属性に設
定し、前記アプリケーションプログラムが前記メモリ領
域を超えて前記隣接メモリ領域にメモリアクセス要求を
発行した際に、コンピュータシステムが提供するアクセ
ス例外制御手段を用いてメモリアクセスのオーバーラン
を検出することを特徴とする。
【0016】請求項1の監視方法によるアプリケーショ
ンプログラムからのメモリ割り当て要求に対する処理手
順を説明する。まず、この監視方法を実装したプログラ
ムであるメモリアクセス監視プログラムに対して、アプ
リケーションプログラムが自ら使用するデータ領域を動
的に確保するためのメモリ割り当て要求を発行したとき
に、前記アプリケーションプログラムが要求したメモリ
領域とアクセス不可属性設定用メモリ領域を連続するメ
モリ領域として空メモリ空間内に確保する。次に、前記
アクセス不可属性設定用メモリ領域として確保した大き
さのメモリ領域をアクセス不可属性に設定する。最後
に、確保したメモリ領域のうちアクセス不可属性を設定
していない、前記アプリケーションプログラムが要求し
た大きさのメモリ領域を前記アプリケーションプログラ
ムに使用可能メモリ領域として割り当てる。さらに請求
項1の監視方法によるメモリアクセスのオーバーランの
検出手順を説明する。前記アプリケーションプログラム
が前述の処理手順により確保したメモリ領域に対してア
クセスしたときに、割り当てられたメモリ領域を超えて
本来アクセスするべきではないメモリ領域にアクセスす
ると、前記メモリアクセス監視プログラムにより設定さ
れたアクセス不可属性のメモリ領域にアクセスすること
になる。このとき、コンピュータシステムが提供するア
クセス例外制御手段が例外割り込みを発生させるので、
この例外割り込みを契機として、前記メモリアクセス監
視プログラムは例外割り込み処理を行い、たとえばコン
テキスト情報をログファイルに記録したり、前記アプリ
ケーションを強制終了させたりする。これにより請求項
1の監視方法では、メモリの割り当て時とメモリアクセ
スのオーバーランが発生した時にのみオーバーヘッドが
生じるだけであるにもかかわらず、前記オーバーランを
発生させた箇所を一意に特定することが可能である。
【0017】また、請求項2の監視方法は、特定の大き
さのメモリブロック単位でメモリ領域へのアクセス可/
不可属性を設定するコンピュータシステムにおける不正
なメモリアクセスを検出する監視方法であって、アプリ
ケーションプログラムが自ら使用するデータ領域を動的
に確保するためのメモリ割当要求に対して、特定のメモ
リブロックの終端を基点とし先頭方向に向かって前記ア
プリケーションプログラムが要求した大きさのメモリ領
域を確保し、前記メモリブロックの直後のメモリブロッ
クをアクセス不可属性に設定し、前記アプリケーション
プログラムが前記メモリ領域を超えて前記直後のメモリ
ブロック内のメモリ領域にメモリアクセス要求を発行し
た際に、前記コンピュータシステムが提供するアクセス
例外制御手段を用いることによりメモリアクセスのオー
バーランを検出することを特徴とする。
【0018】請求項2の監視方法は、特定のメモリブロ
ック単位(任意であるが、通常はページイン、ページア
ウトの最小単位)でのみアクセス可/不可属性の設定が
可能なコンピュータシステムに適用するものである。ア
プリケーションプログラムからのメモリ割り当て要求に
対する処理手順は、まず、この監視方法を実装したメモ
リアクセス監視プログラムに対して、アプリケーション
プログラムが自ら使用するデータ領域を動的に確保する
ためのメモリ割り当て要求を発行した際に、前記アプリ
ケーションプログラムが要求したメモリ領域の大きさを
満たす数だけのメモリブロックと、アクセス不可属性設
定用メモリブロックとを、連続したメモリブロックとし
て空メモリ空間内に確保する。次に、確保したメモリブ
ロックの終端から先端に向けて、前記アクセス不可属性
設定用メモリブロックとして確保した数のメモリブロッ
クをアクセス不可属性に設定する。最後に、前記アクセ
ス不可属性設定用メモリブロックの直前に位置するメモ
リブロックの終端から先端に向けて、前記アプリケーシ
ョンプログラムが要求した大きさのメモリ領域を前記ア
プリケーションプログラムに使用可能メモリ領域として
割り当てる。
【0019】特定のメモリブロック単位でのみアクセス
可/不可属性の設定が可能なコンピュータシステムに対
しては、請求項2が好ましく適用される。すなわち、請
求項2の監視方法によれば、アプリケーションプログラ
ムに割り当てたメモリ領域の直後はアクセス不可属性メ
モリ領域なので、割り当てられたメモリ領域を超えて本
来アクセスするべきではないメモリ領域にアクセスする
場合、前記メモリアクセス監視プログラムにより設定さ
れたアクセス不可属性のメモリ領域にアクセスすること
になる。このとき、コンピュータシステムが提供するア
クセス例外制御手段が例外割り込みを発生させることに
より本発明のメモリアクセス監視プログラムは例外割り
込み処理を行い、例えばコンテキスト情報をログファイ
ルに記録したり、前記アプリケーションを強制終了させ
たりする。よって、請求項1と同様に、オーバーランを
発生させた箇所を一意に特定することが可能である。
【0020】また、請求項3の監視方法は、既に確保済
みのメモリ領域に対して、アプリケーションプログラム
がメモリ開放要求を発行した場合、前記メモリ領域をア
クセス不可属性に設定し、前記アプリケーションプログ
ラムが前記アクセス不可属性に設定されたメモリ領域に
アクセス要求をした際に、前記コンピュータシステムが
提供するアクセス例外制御手段を用いることにより開放
済メモリアクセスを検出することを特徴とする。
【0021】請求項3の一態様としての請求項4の監視
方法は、アプリケーションプログラムが自ら使用するデ
ータ領域を動的に確保するためのメモリ割当要求に対し
て、前記アプリケーションプログラムにアクセス可能な
メモリ領域を提供し、該メモリ領域の終端に接する隣接
メモリ領域をアクセス不可属性に設定することにより確
保したメモリ領域に対して、前記アプリケーションプロ
グラムが前記メモリ開放要求を発行することを特徴とす
る。
【0022】請求項4の監視方法におけるアプリケーシ
ョンプログラムからのメモリ開放要求に対する処理手順
は、この監視方法を実装したメモリアクセス監視プログ
ラムに対して、前記アプリケーションプログラムが前記
メモリ開放要求を行い、且つ前記メモリ開放要求で指定
したメモリ領域は前記メモリアクセス監視プログラムに
メモリ割り当て要求を発行することにより割り当てられ
たメモリ領域である場合、前記メモリアクセス監視プロ
グラムは前記メモリ領域をアクセス不可属性に設定す
る。またこの監視方法によるおける開放済みメモリアク
セスの検出手順は、前記アプリケーションプログラムが
前記した処理手順により開放したメモリ領域に対して、
前記アプリケーションプログラムが再度前記メモリ領域
にアクセスする場合、前記メモリアクセス監視プログラ
ムにより設定されたアクセス不可属性のメモリ領域にア
クセスすることになる。このとき、コンピュータシステ
ムが提供するアクセス例外制御手段が例外割り込みを発
生させることにより前記メモリアクセス監視プログラム
は例外割り込み処理を行い、例えばコンテキスト情報を
ログファイルに記録したり、前記アプリケーションプロ
グラムを強制終了させたりする。これにより請求項4の
監視方法では、メモリの開放時と開放済みメモリアクセ
スが発生した時にのみオーバーヘッドが生じるだけであ
るにも係わらず、前記開放済みメモリアクセスを発生さ
せた箇所を一意に特定することが可能である。
【0023】請求項3の一態様としての請求項5の監視
方法は、特定の大きさのメモリブロック単位(任意であ
るが、通常はページイン、ページアウトの最小単位)で
メモリ領域へのアクセス可/不可属性を設定するコンピ
ュータシステムに適用するものであり、アプリケーショ
ンプログラムが自ら使用するデータ領域を動的に確保す
るためのメモリ割当要求に対して、特定のメモリブロッ
クの終端を基点とし先頭方向に向かって前記アプリケー
ションプログラムが要求した大きさのメモリ領域を確保
し、前記メモリブロックの直後のメモリブロックをアク
セス不可属性に設定することにより確保したメモリ領域
に対して前記アプリケーションプログラムがメモリ開放
要求を発行した場合、前記メモリ領域を含むメモリブロ
ックをアクセス不可属性に設定し、前記アプリケーショ
ンプログラムが前記アクセス不可属性に設定されたメモ
リ領域にアクセス要求を発行した際に、前記コンピュー
タシステムが提供するアクセス例外制御手段を用いるこ
とにより開放済メモリアクセスを検出することを特徴と
する。
【0024】請求項5の監視方法において、アプリケー
ションプログラムからのメモリ開放要求に対する処理手
順は、この方法を実装したメモリアクセス監視プログラ
ムに対してアプリケーションプログラムがメモリ開放要
求を行い、且つ前記メモリ開放要求で指定したメモリ領
域は前記メモリアクセス監視プログラムにメモリ割り当
て要求を発行することにより割り当てられたメモリ領域
である場合、前記メモリアクセス監視プログラムは前記
メモリ領域を含むメモリブロックをアクセス不可属性に
設定する。またこの監視方法において、開放済みメモリ
アクセスの検出手順は、特定の大きさのメモリブロック
単位(任意であるが、通常はページイン、ページアウト
の最小単位)でメモリ領域へのアクセス可または不可属
性を設定するコンピュータシステムであっても、前記ア
プリケーションプログラムが前述の手順により開放した
メモリ領域に対して、前記アプリケーションプログラム
が再度前記メモリ領域にアクセスする場合、前記メモリ
アクセス監視プログラムにより設定されたアクセス不可
属性のメモリ領域にアクセスすることになる。このと
き、コンピュータシステムが提供するアクセス例外制御
手段が例外割り込みを発生させることにより前記メモリ
アクセス監視プログラムは例外割り込み処理を行い、例
えばコンテキスト情報をログファイルに記録したり、前
記アプリケーションプログラムを強制終了させたりす
る。よって、メモリの開放時と開放済みメモリアクセス
が発生した時にのみオーバーヘッドが生じるだけである
にも係わらず、前記開放済みメモリアクセスを発生させ
た箇所を一意に特定することが可能である。
【0025】なお、特定の大きさのメモリブロック単位
でメモリ領域へのアクセス可または不可属性を設定する
ものではないコンピュータシステムに対しては、請求項
3、請求項4の監視方法が好適に適用されることは云う
までもない。
【0026】請求項6の監視方法のように、前記コンピ
ュータシステムが、メモリの読み込みと書き込みの禁止
または許可を設定するアクセス属性変更手段を備えると
共に、例外割り込みが発生したときに実行する例外手続
きを登録させる手段と、アクセス不可属性のメモリ領域
に対するメモリアクセスが発生したときに前記例外手続
き呼び出す手段と、前記例外手続き呼び出し時にコンテ
キスト情報を通知する手段とを持つアクセス例外制御手
段を備えるコンピュータシステムであると好ましい。
【0027】請求項7又は請求項9の監視方法のよう
に、前記アプリケーションプログラムが発行するメモリ
割り当て要求情報及びメモリ開放要求情報、アクセス例
外制御手段が通知するコンテキスト情報などを記録蓄積
することが可能であり、FD、HDDなどの外部記憶装
置にログファイルとして出力することが可能である。こ
の場合、利用者は前記ログファイルを参照することによ
り、コンピュータシステムが出力するダンプファイルを
解析する場合に比べ、不正メモリアクセスの発生箇所を
容易に特定することができる。
【0028】請求項8の監視方法では、前記コンテキス
ト情報とは、例外割り込み発生時のプログラムやスレッ
ドの状態を示す情報のことであり、例外割り込み発生時
のプログラムカウンタやレジスタの内容及びアクセス例
外となったメモリアドレス情報をいう。
【0029】請求項10の監視方法では、前記アプリケ
ーションプログラムの発行するメモリ割り当て要求やメ
モリ開放要求に対して前記メモリアクセス監視プログラ
ムが処理したメモリ情報を保持及び管理するためのメモ
リ管理テーブルを用いることにより、不正メモリアクセ
スの発生時に、バグ事象を特定する内容のログを出力す
ることが可能である。これにより、利用者は例外割り込
みが発生する以前のログを参照せずに例外割り込みが発
生した時点に書き込まれたログを分析するだけで、エラ
ー原因を特定することができる。
【0030】請求項11の監視方法では、前記アプリケ
ーションプログラムのファイルオープン要求及びファイ
ルクローズ要求をトレースし、ログファイルに出力する
ことが可能である。ログファイルに出力する内容は、例
えば呼び出し元関数名や対象ファイル名である。これに
より、本発明の利用者はファイル二重クローズ等のファ
イルI/Oエラーを検出することが可能である。不正メ
モリアクセスとファイルI/Oエラーの障害は、必ずし
も再現しないという点で酷似する場合があるが、請求項
11の監視方法によれば、それぞれ別個なものとして検
出可能になるため、再現性の低いバグの原因特定に役立
つという効果がある。
【0031】請求項12のメモリアクセス監視プログラ
ムは、請求項1〜11の何れか1項記載の不正なメモリ
アクセスを検出する監視方法をコンピュータシステムに
実行させるプログラムである。
【0032】請求項13のコンピュータ読取り可能な記
録媒体は、請求項1〜11の何れか1項記載の不正なメ
モリアクセスを検出する監視方法をコンピュータシステ
ムに実行させるプログラムを記録したものである。
【0033】請求項12に係るプログラム及び請求項1
3に係る記録媒体は、請求項1〜11の何れか1項記載
の不正なメモリアクセスを検出する監視方法をコンピュ
ータシステムに実行させるものであるため、これによっ
て、請求項1〜11の何れか1項に記載の不正なメモリ
アクセスを検出する処理をコンピュータに実行させるこ
とが可能になる。
【0034】
【発明の実施の形態】以下、本発明のコンピュータシス
テムにおける不正なメモリアクセスを検出する監視方法
およびその監視方法をコンピュータに実行させるプログ
ラム並びにそのプログラムを記録した記録媒体の一実施
の形態について、図面を参照しつつ詳細に述べる。
【0035】図1は、本実施の形態の監視方法を実装し
たメモリアクセス監視プログラム200を搭載したコンピ
ュータシステムの構成の一例を示す模式図である。同図
において、1はCPUを、2はCPU1のワークエリア
等に使用されるRAM等の主記憶部を、3は入力装置と
してのキーボードを、4は表示装置としてのCRT等の
ディスプレイをそれぞれ示している。なお、ネットワー
クを介しての状況把握が可能な大型のコンピュータシス
テム等においては、必ずしもキーボード3、ディスプレ
イ4は必要ではない。デバッグ対象のアプリケーション
プログラム100は、本発明のメモリアクセス監視方法の
実装物であるメモリアクセス監視プログラム200に対し
てメモリ割り当て要求及びメモリ開放要求を発行するも
のである。実際の物理メモリ及び仮想メモリの管理につ
いては、コンピュータシステムのオペレーティングシス
テム(OS)300が行うので、メモリアクセス監視プロ
グラム200はオペレーティングシステム300に要求するこ
とにより、メモリ空間301を確保する。コンピュータシ
ステムが提供するアクセス例外制御手段302は、オペレ
ーティングシステム300が実装することによりコンピュ
ータシステム上で動作するプログラム(前記アプリケー
ションプログラム100及び前記メモリアクセス監視プロ
グラム200を含む)にその機能を提供する。
【0036】メモリアクセス監視プログラム200は、本
発明の方法に係る処理手順、検出手順をプログラム化し
て、コンピュータシステムのハードディスク装置に実装
したり、フレキシブルディスク(FD)やCD−RO
M,DVD等のコンピュータ読み取り可能な記録媒体に
記録することができ、これらハードディスク装置や記録
媒体から読み出してRAM等の主記憶部に記録しコンピ
ュータに実行させることができる。また、前記記録媒体
を介してプログラムを配布したり、さらにネットワーク
等を介してプログラムを配布しまたは実行することもで
きる。またメモリアクセス監視プログラム200は、アプ
リケーションプログラム100のメモリ割り当て要求及び
メモリ開放要求情報やコンピュータシステムの提供する
アクセス例外制御手段302の例外割り込み情報を記録蓄
積したり、コンピュータシステムのディスク装置400、
例えばFD、HDD等に逐一、ログファイルとして記録
することができる。
【0037】アプリケーションプログラム100がメモリ
アクセス監視プログラム200にファイルオープンまたは
クローズ要求を発行した場合、メモリアクセス監視プロ
グラム200は要求情報をログファイル401に記録し、オペ
レーティングシステム300に中継する。実際にファイル4
02をオープン/クローズするのは前記オペレーティング
システム300である。
【0038】図2は、メモリアクセス監視プログラム20
0が持つメモリ管理テーブル201の詳細を説明するもので
ある。メモリ管理テーブル201は内部的に割り当て済み
メモリ管理テーブル202と開放済みメモリ管理テーブル2
03とに分かれており、それぞれが双方向リストの形態を
とっている。これらメモリ管理テーブル202,203は共
に、各ノードにおいて、メモリ領域の開始メモリアドレ
ス、アクセス不可属性設定用メモリ領域を含めたメモリ
領域の大きさ、アプリケーションプログラムが確保要求
したメモリ領域の大きさが格納されている。
【0039】実際には、アプリケーションプログラム10
0の要求により確保されたメモリ領域の情報が割り当て
済みメモリ管理テーブル202にノード毎に格納されてい
る。これらのうち、アプリケーションプログラム100が
メモリ開放要求を発行したメモリ領域の情報を保持する
ノードは、その処理が正常に終了した時点で開放済みメ
モリ管理テーブル203に繋ぎかえられる。また、開放済
みメモリ管理テーブル203に繋げられているノードの保
持するメモリ領域は、別のメモリ割り当て要求の発生に
より、再度アプリケーションプログラムに割り当てら
れ、割り当て済みメモリ管理テーブル202に繋ぎかえる
ことが可能である。
【0040】次に、本発明のメモリアクセス監視方法の
基本構成を、主に図3、図4を参照しながら説明する。
本発明のメモリアクセス監視方法は図3に示すように、
コンピュータシステムにおけるオペレーティングシステ
ム300が提供する、アクセス例外発生時の例外手続きの
登録手段303、アクセス例外発生時の例外手続き呼び出
し手段304、アクセス例外発生時の例外手続きへのコン
テキスト情報通知手段305、指定したメモリ領域へのア
クセス属性変更手段306の各手段、および本発明の監視
方法の実装物であるメモリアクセス監視プログラム200
で提供する、メモリ領域の動的割り当て204、メモリ領
域の動的開放205、例外手続き206の各手段を使用して、
前述の課題を解決するための手段を構築する。
【0041】指定したメモリ領域へのアクセス属性変更
手段306において、アクセス属性の変更を行うメモリ空
間のメモリの開始アドレス、および終了アドレスの次の
アドレスがN(Nは、自然数。通常Nの値は仮想記憶シ
ステムにおけるページイン/ページアウトの最小単位)
の倍数でなければならない制約を持つコンピュータシス
テムを想定する。このとき、Nはメモリブロックサイズ
でありNを1とすることで、任意のメモリ空間に対して
アクセス属性の変更手段をもつコンピュータシステムを
含めて説明することができる。
【0042】例外手続き206では、コンテキスト情報通
知手段305により通知されるコンテキスト情報からアク
セス例外発生時のプログラムカウンタ情報などを抽出し
ログに出力する手段、もしくはコンピュータシステムが
提供するプログラム状態のダンプファイル(COREファイ
ル)出力手段を使用し、ダンプファイル出力後、異常終
了させる手段を提供する。ログもしくは、ダンプファイ
ルを解析することにより、不正アクセスを引き起こす命
令を一意に特定する情報を得ることができる。例外手続
き206は、アプリケーションプログラム実行時の初期化
処理、もしくはメモリ領域の動的割り当て手段204、メ
モリ領域の動的開放手段205の呼び出し時に、アクセス
例外発生時の例外手続き登録手段303を用い、アクセス
例外発生時の例外処理として登録する。
【0043】アプリケーションプログラム100は、デー
タ領域をある長さ分必要になったときに、メモリ領域の
動的割り当て手段204を呼び出す。この際、アプリケー
ションプログラム100は、当該プログラム100が使用する
必要な長さをメモリ領域の動的割り当て手段204に通知
する。
【0044】メモリ領域の動的割り当て手段204では、
アプリケーションプログラム100から通知される長さ
(これをXとする)をもとに、必要なメモリ長(これを
Yとする)を計算式Zにより計算し、必要なメモリを割
り当てる。割り当てるメモリは、コンピュータシステム
が提供するメモリの動的割り当て手段により確保したデ
ータ領域、あるいはあらかじめ変数領域として確保した
静的なデータ領域のいずれでも構わない。ここで割り当
てるデータ領域の先頭アドレスをSとする。ここでは、
割り当て可能なメモリ空間は、十分に存在するものとす
る。
【0045】計算式Z:Y=([(X−1)/N]+α
+1)N+(S MOD N) ([A]は、Aを超えない最大の自然数、A MOD
Bは、AをBで割ったあまり。また、αは任意の自然
数)
【0046】上記計算式とメモリ空間との関係を模式的
に表したのが図4である。このとき、アプリケーション
プログラム100からの動的なメモリ割り当て要求に対
し、開始アドレスS、終了アドレスS+Y−1のアクセ
ス(読み込み/書き込み)可能なメモリ領域が準備され
る。準備されたメモリ領域に含まれる後方未使用のメモ
リブロック(開始アドレスS+Y−αN、終了アドレス
S+Y−1)を、指定したメモリ領域へのアクセス属性
変更手段306を使用し、アクセス不可属性に変更する。
そして、アドレスS+Y−αN−Xを、アプリケーショ
ンプログラム100に対し使用可能なデータ領域の先頭ア
ドレスとして通知する。
【0047】このようにして、メモリ領域の動的割り当
て手段204により提供されたメモリ領域に対し、アプリ
ケーションプログラム100が、内在する不具合により確
保したメモリ領域を超えてアクセスを行った場合、たと
えば、アドレスS+Y−αN−XからX+1バイト目を
アクセスした場合、アクセス禁止属性のメモリ領域(ア
ドレスS+Y−αN)に差し掛かることによりメモリア
クセス例外が発生し、アクセス例外発生時の例外手続き
呼び出し手段304により例外手続き206が呼ばれる。例外
手続き206は、不正アクセスの箇所を一意に特定する情
報をログやダンプファイルなどに出力する。このとき出
力されるログの内容の一例を図5に示す。
【0048】次に、前述のメモリアクセス監視プログラ
ム200のメモリ領域の動的割り当て手段204において、割
り当て要求を満たすことができない場合を図1〜図4を
参照して説明する。従来の技術においてはこのような場
合、アプリケーションプログラムに対し戻り値や、エラ
ーの内容を示す変数などによりメモリの割り当てができ
ない旨の通知を行っている。本発明においても、メモリ
資源の枯渇や過大な割り当て要求などの理由により、割
り当て要求を満たすことができない場合、従来の技術と
同様に、アプリケーションプログラム100に対し戻り値
や、エラーの内容を示す変数などによりメモリの割り当
てができない旨の通知を行う。
【0049】前述のアプリケーションプログラム100
が、動的に割り当てたデータ領域で、今後使用する見込
みがなくなったとき、メモリ領域の動的開放手段205に
よりメモリの開放を行う。このときアプリケーションプ
ログラム100は、本来は前回、メモリ領域の動的割り当
て手段204によって割り当てたデータ領域アドレス(S
+Y−αN−X)を指定しなければならない。にもかか
わらず、アプリケーションプログラム100が、割り当て
ていない、もしくはすでに開放済みのデータ領域のアド
レスを指定してメモリ領域の動的開放手段205を呼び出
すことがある。
【0050】このような不正なメモリ開放をチェックす
るために、メモリ領域の動的割り当て手段204において
割り当てたアドレスを、前述のメモリ管理テーブル201
の割り当て済みメモリ管理テーブル202に登録し、メモ
リ領域の動的開放手段205によって正しく開放したもの
は、当該アドレスをメモリ管理テーブル201の割り当て
済みメモリ管理テーブル202から削除し、開放済みメモ
リ管理テーブル203に登録する。メモリ領域の動的開放
手段205によってアプリケーションプログラム100から開
放要求を受けたアドレスが、メモリ管理テーブルの割り
当て済みメモリ管理テーブル202に存在するかチェック
を行い存在しなければ、ログ出力やプログラムの中断等
で不正なメモリ開放を通知する。メモリ管理テーブル20
1の割り当て済みメモリ管理テーブル202に開放するアド
レスが存在することにより、正しいアドレスが指定され
ていることが確認できた場合は、先に記述したように当
該アドレスをメモリ管理テーブルの割り当て済みメモリ
管理テーブル202から削除し、当該アドレスを開放済み
メモリ管理テーブル203に登録し、当該アドレスを含む
メモリブロックをアクセス不可属性に変更する。これに
より、アプリケーションプログラム100が内在する予期
せぬ不具合により、開放したアドレスに対しアクセスが
発生した場合は、アクセス不可属性のメモリ領域に差し
掛かることにより、メモリアクセス例外が発生し、例外
手続き呼び出し手段304により例外手続き206が呼ばれ
る。例外手続き206は、不正アクセスの箇所を一意に特
定する情報をログやダンプファイルに出力する。
【0051】なお、本発明において、メモリ管理テーブ
ル201に対するアドレスの登録、削除、存在チェックの
処理が要するオーバーヘッドは、不正なメモリ開放を検
出することを目的とした処理に費やされるオーバーヘッ
ドであり、不正なメモリアクセスを検出する処理に費や
されるオーバーヘッドとは異なる。一般に、メモリの不
正なアクセスをチェックする手段を持つ監視方法におい
ては、不正なメモリの開放を検出するための機能をも所
有しており、不正なメモリアクセスのチェックに要する
オーバーヘッドとは別に不正なメモリ開放を検出するこ
とを目的とした処理に費やされるオーバーヘッドをもっ
ている。
【0052】図7、図8は、本発明におけるファイルI
/Oトレース機能を説明したものである。ファイルI/
Oトレース機能は、不正メモリアクセスを検出するメモ
リアクセス監視プログラム200の機能の一部として提供
されるファイルI/O関数207を呼び出すことによって
実現する。ファイルI/O関数207は、コンピュータシ
ステムが提供するファイルI/O関数としての機能の
他、引数情報などをログ出力する機能を併せ持つ。アプ
リケーションプログラム100がファイルI/O関数207を
呼び出したとき(A01)に、引数情報をメモリに蓄え
ておき(A02)、コンピュータシステムが提供するフ
ァイルI/O関数を実行した後(A03)、その戻り値
とメモリに蓄えておいた引数情報とをログに出力する
(A04)ことにより、ファイルI/Oトレース機能を
実現する(図8参照)。
【0053】以下、請求項1〜5記載の監視方法におけ
るより具体的な一実施の形態を図9〜図15を参照して
説明する。なお、本発明に係るメモリアクセス監視方法
の実装物であるメモリアクセス監視プログラム200の実
行にあたっては、アプリケーションプログラム100の実
行開始時、もしくはアプリケーションプログラム100が
初めてメモリアクセス監視プログラム200になんらかの
要求を発行した時に、メモリアクセス監視プログラム20
0はアクセス例外が発生した時に実行させる例外手続き
をコンピュータシステムが提供するアクセス例外制御手
段302に登録することが前提である。
【0054】請求項1の監視方法のメモリ割り当て時
は、使用するコンピュータシステムが、任意のメモリア
ドレスに対してアクセス不可属性を設定可能である場合
(これは図4のメモリブロックサイズ(N)が1の場合
に該当する)、図10の(B01)において、図9にお
けるアプリケーションプログラム100がメモリアクセス
監視プログラム200にメモリ割り当て要求を発行したと
き、図10の(B02)において、メモリ管理テーブル
201が管理する空メモリ空間から連続したメモリ空間と
して、アプリケーションプログラム100が要求したメモ
リ領域とアクセス不可属性設定用メモリ領域を確保す
る。次に図10の(B03)において、確保したメモリ
領域の終端から先端方向に向けて、アクセス不可属性設
定用メモリ領域として確保した大きさのメモリ領域をア
クセス不可属性に設定する。最後に図10の(B04)
において、メモリ管理テーブル201の内容を更新し、確
保したメモリ領域を割り当て済みとして登録する。
【0055】請求項2の監視方法のメモリ割り当て時
は、使用するコンピュータシステムが、特定のメモリブ
ロック(通常はページイン/ページアウトの最小単位)
単位にのみアクセス不可属性の設定が可能な場合(これ
は図4のメモリブロックサイズ(N)が2以上の場合に
該当する)、図10の(B02)において、図9におけ
るメモリ管理テーブル201を用いて、連続したメモリブ
ロックとして、アプリケーションプログラム100の要求
したメモリ領域の大きさを満たす数分のメモリブロック
とアクセス不可属性設定用メモリブロックを確保する。
次に図10の(B03)において、確保したメモリブロ
ックの終端から先端に向けて、前記アクセス不可属性設
定用メモリブロックとして確保した数のメモリブロック
をアクセス不可属性に設定する。その上で、前記アクセ
ス不可属性用メモリブロックの前に位置するメモリブロ
ックの終端から先端に向けて、アプリケーションプログ
ラム100が要求したメモリ領域をアプリケーションプロ
グラム100に割り当てる。最後に、図10の(B04)
において、メモリ管理テーブル201の内容を更新し、確
保したメモリ領域を割り当て済みとして登録する。
【0056】例えば図11に示すとおり、アプリケーシ
ョンプログラム100が要求するメモリ領域を確保するた
めに必要なメモリブロックが309、310の2つであり、前
記アクセス不可属性設定用メモリブロックが311の1つ
である場合、アプリケーションプログラム100が使用で
きるメモリ領域はメモリブロック2(310)の全てとメ
モリブロック1(309)の終端から先頭に向けた一部の
メモリ領域であり、メモリ管理テーブル201に登録され
る割り当て済みメモリ領域はメモリブロック1、2、3
(309、310、311)の連続したメモリ領域である。
【0057】請求項1及び2の監視方法のオーバーラン
検出時は、上述したように、アプリケーションプログラ
ム100は、割り当てられたメモリ領域の大きさを超え
て、本来アクセスするべきではないメモリ領域にアクセ
スをした場合、前述の仕組みにより、アクセス不可属性
の設定されたメモリ領域もしくはメモリブロックにアク
セスを行うことになる。このとき、前記コンピュータシ
ステムの提供するアクセス例外制御手段302は例外割り
込みを発生させ、メモリアクセス監視プログラム200は
例外割込み処理を行う。この時、図12の(C02)に
おいて、例外の発生したメモリアドレスはメモリ管理テ
ーブル201に割り当て済みとして登録されているかどう
かチェックする。登録されている場合は、メモリアクセ
スのオーバーランが発生したものとみなし、図12の
(C03)においてログファイルに記録する。
【0058】請求項3の監視方法のメモリ開放時は、使
用するコンピュータシステムが、任意のメモリアドレス
に対してアクセス不可属性を設定可能である場合(これ
は図4のメモリブロックサイズ(N)が1の場合に該当
する)、図13の(D01)において、図14における
アプリケーションプログラム100がメモリアクセス監視
プログラム200にメモリ開放要求を発行したとき、図1
3の(D02)において、開放要求されたメモリアドレ
スがメモリ管理テーブル201に割り当て済みとして登録
されているかどうかチェックする。もし、前記メモリア
ドレスがメモリ管理テーブル201に割り当て済みとして
登録されていない場合は、不正メモリ開放が発生したも
のとみなし、図13の(D05)においてエラー情報等
をログファイルに記録し、処理を終了させる。前記メモ
リアドレスが図14のメモリ管理テーブル201に割り当
て済みとして登録されていた場合は、図13の(D0
3)において、メモリ管理テーブル201に登録されてい
るアプリケーションプログラム100が要求したメモリア
ドレスから始まる確保済みメモリ領域をアクセス不可属
性に設定する。最後に、図13の(D04)において、
メモリ管理テーブル201の内容を更新し、開放要求され
たメモリ領域を開放済みとして登録しなおす。
【0059】請求項3及び4の監視方法のメモリ開放時
は、使用するコンピュータシステムが、特定のメモリブ
ロック(通常はページイン/ページアウトの最小単位)
単位にのみアクセス不可属性の設定が可能な場合(これ
は図4のメモリブロックサイズ(N)が2以上の場合に
該当する)、図13の(D03)において、メモリ管理
テーブル201に登録された前記アプリケーションプログ
ラムが要求したメモリアドレスから始まる確保済みメモ
リ領域を含むメモリブロックをアクセス不可属性に設定
する。例えば、図11のようにメモリ領域が確保されて
いた場合、図15に示すとおり、アプリケーションプロ
グラム100が使用していたメモリ領域を含むメモリブロ
ックであるメモリブロック1(309)、メモリブロック
2(310)の2つのメモリブロックをアクセス不可属性
に設定する。
【0060】請求項3、4、5の監視方法の開放済みメ
モリアクセス検出時では、前述したとおり、アプリケー
ションプログラム100は、一度メモリ確保要求を行った
が、既にメモリ開放要求を発行済みの、開放済みメモリ
領域にアクセスをした場合、前記仕組みにより、アクセ
ス不可属性の設定されたメモリ領域もしくはメモリブロ
ックにアクセスを行うことになる。このとき、コンピュ
ータシステムの提供するアクセス例外制御手段である図
14の302は例外割り込みを発生させ、図14のメモリ
アクセス監視プログラム200は例外割り込み処理を行
う。
【0061】図12のC02において、例外の発生した
メモリアドレスは、図9のメモリ管理テーブル201に割
り当て済みとして登録されているかどうかチェックす
る。登録されていない場合は、図12のC04におい
て、前記メモリ管理テーブル201に開放済みとして登録
されているかどうかチェックする。登録されていた場合
は、図12のC06において開放済みメモリアクセスが
発生したものとみなし、ログファイルに記録する。も
し、アプリケーションプログラム100が開放したメモリ
アドレスが前記メモリ管理テーブル201に割り当て済み
及び開放済み共に登録されていなかった場合、アプリケ
ーションプログラム100の異常動作が発生したとみな
し、図12のE07に異常終了処理を行い、ログファイ
ルに記録する。
【0062】
【発明の効果】本発明は以上説明したように構成されて
いるので、以下に記載した効果を有する。
【0063】従来の技術においては、プログラムが実行
時に動的に確保したデータ領域に対し、確保した領域を
超えたメモリ空間へのアクセス(読み込み/書き込み)
および開放済みメモリへのアクセスを検出する手段とし
て、メモリチェック機構が管理する全メモリを対象とす
るエラーチェック、もしくは各メモリアクセス命令に対
しアクセス不正を判定するためのエラーチェックに要す
る負荷を発生させることなく不正アクセス発生箇所を一
意に特定することができなかった。これに対し本発明の
請求項1の監視方法では、メモリの割り当て時とメモリ
アクセスのオーバーランが発生した時にのみオーバーヘ
ッドが生じるだけであるにも係わらず、前記オーバーラ
ンを発生させた箇所を一意に特定することができる。
【0064】本発明の請求項2の監視方法では、特定の
メモリブロック単位でのみアクセス可または不可属性の
設定が可能なコンピュータシステムにおいても、請求項
1と同様に、オーバーランを発生させた箇所を一意に特
定することができる。
【0065】請求項3、請求項4の監視方法では、メモ
リの開放時と開放済みメモリアクセスが発生した時にの
みオーバーヘッドが生じるだけであるにも係わらず、前
記開放済みメモリアクセスを発生させた箇所を一意に特
定することが可能になる。
【0066】請求項5の監視方法では、特定のメモリブ
ロック単位でのみアクセス可または不可属性の設定が可
能なコンピュータシステムにおいても、請求項3による
効果が得られる。
【0067】本発明の監視方法は請求項6のように、メ
モリ読み込み,書き込みの禁止または許可を設定するア
クセス属性変更手段と、例外割り込みが発生したときに
実行する例外手続きを登録させる手段,アクセス不可属
性のメモリ領域に対するメモリアクセスが発生したとき
に前記例外手続き呼び出す手段,前記例外手続き呼び出
し時にコンテキスト情報を通知する手段を持つアクセス
例外制御手段と、を持つコンピュータシステムに好適に
適用することができる。
【0068】請求項7、請求項9の監視方法では、ログ
ファイルを参照することにより、コンピュータシステム
が出力するダンプファイルを解析する場合に比べて、不
正メモリアクセスの発生箇所を容易に特定することがで
きる。
【0069】請求項10の監視方法では、例外割り込み
が発生する以前のログを参照せずに、例外割り込みが発
生した時点に書き込まれたログを分析するだけで、エラ
ー原因を容易に特定することができる。
【0070】請求項11の監視方法では、不正メモリア
クセス検出機能とファイルI/Oトレース機能とを併用
することにより、ファイル系のエラーかメモリ系のエラ
ーか、そのいずれでもないかの判別が可能になり、デバ
ックが効率的に行えるようになる。
【0071】請求項12のプログラムは、前記請求項1
〜11の何れか一つに記載の監視方法をコンピュータに
実行させるプログラムであるため、請求項1〜11の処
理をコンピュータシステムに実行させることが可能とな
る。
【0072】請求項13の記録媒体は、前記請求項1〜
11の何れか一つに記載の監視方法をコンピュータに実
行させるプログラムを記録したため、請求項1〜11の
処理をコンピュータシステムに実行させること、プログ
ラムを配布すること等が可能となる。
【図面の簡単な説明】
【図1】本発明の監視方法を実現するためのコンピュー
タシステムの構成例を示す模式図。
【図2】本発明の監視方法の一実施形態におけるメモリ
管理テーブルの例を示す模式図。
【図3】コンピュータシステムが提供する手段と本発明
の監視方法が提供する手段の相関関係を示す模式図。
【図4】本発明の監視方法の一実施形態におけるメモリ
割り当てアドレス算出の概念を示す模式図。
【図5】本発明の監視方法の一実施形態におけるログフ
ァイルの内容の画面表示例を示す説明図。
【図6】従来の監視方法と本発明の監視方法が消費する
オーバーヘッドを比較する概念図。
【図7】本発明の監視方法の一実施形態におけるファイ
ルI/Oトレース機能の概念を示す模式図。
【図8】本発明の監視方法の一実施形態におけるファイ
ルI/Oトレース機能のフローチャート。
【図9】本発明の監視方法の一実施形態におけるメモリ
アクセスのオーバーランを検出する構成を示す模式図。
【図10】本発明の監視方法の一実施形態におけるメモ
リ割り当て処理のフローチャート。
【図11】本発明の監視方法の一実施形態におけるメモ
リ割り当て時におけるメモリ空間の状態を示す模式図。
【図12】本発明の監視方法の一実施形態におけるメモ
リの障害原因を判別するフローチャート。
【図13】本発明の監視方法の一実施形態におけるメモ
リ開放処理のフローチャート。
【図14】本発明の監視方法の一実施形態における開放
済みメモリアクセスを検出する構成を示す模式図。
【図15】本発明の監視方法の一実施形態におけるメモ
リ開放時におけるメモリ空間の状態を示す模式図。

Claims (13)

    【特許請求の範囲】
  1. 【請求項1】 コンピュータシステムにおけるアプリケ
    ーションプログラムが自ら使用するデータ領域を動的に
    確保するためのメモリ割当要求に対して、前記アプリケ
    ーションプログラムにアクセス可能なメモリ領域を提供
    し、該メモリ領域の終端に接する隣接メモリ領域をアク
    セス不可属性に設定し、前記アプリケーションプログラ
    ムが前記メモリ領域を超えて前記隣接メモリ領域にメモ
    リアクセス要求を発行した際に、前記コンピュータシス
    テムが提供するアクセス例外制御手段を用いることによ
    りメモリアクセスのオーバーランを検出することを特徴
    とする不正なメモリアクセスを検出する監視方法。
  2. 【請求項2】 特定の大きさのメモリブロック単位でメ
    モリ領域へのアクセス可/不可属性を設定するコンピュ
    ータシステムにおけるアプリケーションプログラムが自
    ら使用するデータ領域を動的に確保するためのメモリ割
    当要求に対して、特定のメモリブロックの終端を基点と
    し先頭方向に向かって前記アプリケーションプログラム
    が要求した大きさのメモリ領域を確保し、前記メモリブ
    ロックの直後のメモリブロックをアクセス不可属性に設
    定し、前記アプリケーションプログラムが前記メモリ領
    域を超えて前記直後のメモリブロック内のメモリ領域に
    メモリアクセス要求を発行した際に、前記コンピュータ
    システムが提供するアクセス例外制御手段を用いること
    によりメモリアクセスのオーバーランを検出することを
    特徴とする不正なメモリアクセスを検出する監視方法。
  3. 【請求項3】 コンピュータシステムにおける既に確保
    済みのメモリ領域に対して、アプリケーションプログラ
    ムがメモリ開放要求を発行した場合、前記メモリ領域を
    アクセス不可属性に設定し、前記アプリケーションプロ
    グラムが前記アクセス不可属性に設定されたメモリ領域
    にアクセス要求をした際に、前記コンピュータシステム
    が提供するアクセス例外制御手段を用いることにより開
    放済メモリアクセスを検出することを特徴とする不正な
    メモリアクセスを検出する監視方法。
  4. 【請求項4】 請求項3記載の監視方法において、前記
    アプリケーションプログラムが自ら使用するデータ領域
    を動的に確保するためのメモリ割当要求に対して、前記
    アプリケーションプログラムにアクセス可能なメモリ領
    域を提供し、該メモリ領域の終端に接する隣接メモリ領
    域をアクセス不可属性に設定することにより確保したメ
    モリ領域に対して、前記アプリケーションプログラムが
    前記メモリ開放要求を発行することを特徴とする不正な
    メモリアクセスを検出する監視方法。
  5. 【請求項5】 請求項3記載の監視方法において、前記
    コンピュータシステムは特定の大きさのメモリブロック
    単位でメモリ領域へのアクセス可または不可属性を設定
    するものであり、前記アプリケーションプログラムが自
    ら使用するデータ領域を動的に確保するためのメモリ割
    当要求に対して、特定のメモリブロックの終端を基点と
    し先頭方向に向かって前記アプリケーションプログラム
    が要求した大きさのメモリ領域を確保し、前記メモリブ
    ロックの直後のメモリブロックをアクセス不可属性に設
    定することにより確保したメモリ領域に対して前記アプ
    リケーションプログラムがメモリ開放要求を発行した場
    合、前記メモリ領域を含むメモリブロックをアクセス不
    可属性に設定し、前記アプリケーションプログラムが前
    記アクセス不可属性に設定されたメモリ領域にアクセス
    要求を発行した際に、前記コンピュータシステムが提供
    するアクセス例外制御手段を用いることにより開放済メ
    モリアクセスを検出することを特徴とする不正なメモリ
    アクセスを検出する監視方法。
  6. 【請求項6】 前記コンピュータシステムは、メモリの
    読み込みと書き込みの禁止/許可を設定するアクセス属
    性変更手段と、例外割り込みが発生したときに実行する
    例外手続きを登録させる手段,アクセス不可属性のメモ
    リ領域に対するメモリアクセスが発生したときに前記例
    外手続きを呼び出す手段,前記例外手続き呼び出し時に
    コンテキスト情報を通知する手段を持つアクセス例外制
    御手段とを備えたコンピュータシステムであることを特
    徴とする請求項1〜5の何れか1項記載の不正なメモリ
    アクセスを検出する監視方法。
  7. 【請求項7】 請求項1〜6の何れか1項記載の監視方
    法であって、前記アプリケーションプログラムがメモリ
    割当要求またはメモリ開放要求を発行した際、もしく
    は、前記コンピュータシステムが提供するアクセス例外
    制御手段がコンテキスト情報を通知した際に、要求情報
    もしくはコンテキスト情報を記録蓄積することを特徴と
    する不正なメモリアクセスを検出する監視方法。
  8. 【請求項8】 請求項6又は7記載の監視方法であっ
    て、前記コンテキスト情報が、例外割り込み発生時のプ
    ログラムとスレッドの状態を表す情報であって、少なく
    とも例外割り込み発生時のプログラムカウンタと、レジ
    スタの内容と、アクセス例外となったメモリアドレス情
    報であることを特徴とする不正なメモリアクセスを検出
    する監視方法。
  9. 【請求項9】 請求項8記載の監視方法であって、さら
    に、前記記録蓄積した情報をログファイルに出力するこ
    とを特徴とする不正なメモリアクセスを検出する監視方
    法。
  10. 【請求項10】 請求項1〜9の何れか1項記載の監視
    方法であって、さらに、前記記録蓄積した前記アプリケ
    ーションプログラムのメモリ割当情報及びメモリ開放情
    報を保持および管理するメモリ管理テーブルを用いるこ
    とにより、メモリアクセスのオーバーラン及び開放済メ
    モリアクセスの検出を行うことを特徴とする不正なメモ
    リアクセスを検出する監視方法。
  11. 【請求項11】 請求項1〜10の何れか1項記載の監
    視方法であって、前記アプリケーションプログラムがフ
    ァイルオープン及びファイルクローズ要求を発行した時
    にその情報をトレースし、且つトレースした情報をログ
    ファイルに出力することを特徴とする不正なメモリアク
    セスを検出する監視方法。
  12. 【請求項12】 請求項1〜11の何れか1項記載の不
    正なメモリアクセスを検出する監視方法をコンピュータ
    システムに実行させるメモリアクセス監視プログラム。
  13. 【請求項13】 請求項1〜11の何れか1項記載の不
    正なメモリアクセスを検出する監視方法をコンピュータ
    システムに実行させるプログラムを記録したことを特徴
    とするコンピュータ読取り可能な記録媒体。
JP2000242713A 2000-08-10 2000-08-10 コンピュータシステムにおける不正なメモリアクセスを検出する監視方法及びそのプログラム並びにその記録媒体 Pending JP2002055851A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2000242713A JP2002055851A (ja) 2000-08-10 2000-08-10 コンピュータシステムにおける不正なメモリアクセスを検出する監視方法及びそのプログラム並びにその記録媒体

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2000242713A JP2002055851A (ja) 2000-08-10 2000-08-10 コンピュータシステムにおける不正なメモリアクセスを検出する監視方法及びそのプログラム並びにその記録媒体

Publications (1)

Publication Number Publication Date
JP2002055851A true JP2002055851A (ja) 2002-02-20

Family

ID=18733692

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000242713A Pending JP2002055851A (ja) 2000-08-10 2000-08-10 コンピュータシステムにおける不正なメモリアクセスを検出する監視方法及びそのプログラム並びにその記録媒体

Country Status (1)

Country Link
JP (1) JP2002055851A (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008165551A (ja) * 2006-12-28 2008-07-17 Sony Corp 情報処理装置および方法、プログラム、並びに記録媒体
WO2010032330A1 (ja) * 2008-09-22 2010-03-25 富士通株式会社 情報処理装置及びそのメモリ保護方法
JP2015179447A (ja) * 2014-03-19 2015-10-08 日本電気株式会社 主記憶アクセス制御装置、主記憶アクセス制御システム、主記憶アクセス制御方法、及び、主記憶アクセス制御プログラム
JP2019139330A (ja) * 2018-02-06 2019-08-22 富士通株式会社 メモリ管理プログラム、メモリ管理方法、およびメモリ管理装置
CN115080252A (zh) * 2022-08-23 2022-09-20 智者四海(北京)技术有限公司 iOS平台中基于无锁的非法内存访问检测方法和装置

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008165551A (ja) * 2006-12-28 2008-07-17 Sony Corp 情報処理装置および方法、プログラム、並びに記録媒体
JP4544246B2 (ja) * 2006-12-28 2010-09-15 ソニー株式会社 制御装置および方法、プログラム、並びに記録媒体
US8887091B2 (en) 2006-12-28 2014-11-11 Sony Corporation Information processing apparatus, method, processor, and recording medium for determining whether information stored in a memory is incorrectly updated
WO2010032330A1 (ja) * 2008-09-22 2010-03-25 富士通株式会社 情報処理装置及びそのメモリ保護方法
JP5392263B2 (ja) * 2008-09-22 2014-01-22 富士通株式会社 情報処理装置及びそのメモリ保護方法
JP2015179447A (ja) * 2014-03-19 2015-10-08 日本電気株式会社 主記憶アクセス制御装置、主記憶アクセス制御システム、主記憶アクセス制御方法、及び、主記憶アクセス制御プログラム
JP2019139330A (ja) * 2018-02-06 2019-08-22 富士通株式会社 メモリ管理プログラム、メモリ管理方法、およびメモリ管理装置
CN115080252A (zh) * 2022-08-23 2022-09-20 智者四海(北京)技术有限公司 iOS平台中基于无锁的非法内存访问检测方法和装置
CN115080252B (zh) * 2022-08-23 2022-11-08 智者四海(北京)技术有限公司 iOS平台中基于无锁的非法内存访问检测方法和装置

Similar Documents

Publication Publication Date Title
US7000225B2 (en) Method for inserting global breakpoints
US5355469A (en) Method for detecting program errors
US8051409B1 (en) Monitoring memory accesses for multiple computer processes
US7886198B2 (en) Method and system of identifying overlays used by a program
US5297274A (en) Performance analysis of program in multithread OS by creating concurrently running thread generating breakpoint interrupts to active tracing monitor
US7861121B2 (en) Method and system for monitoring and verifying software drivers
US6633968B2 (en) Pre-fetching of pages prior to a hard page fault sequence
US5689707A (en) Method and apparatus for detecting memory leaks using expiration events and dependent pointers to indicate when a memory allocation should be de-allocated
JPS5975484A (ja) 周辺デ−タ記憶システム
US7765526B2 (en) Management of watchpoints in debuggers
US7096339B2 (en) System and method for detecting memory management programming errors
US7565645B2 (en) Method and apparatus for marking code for data versioning
US11822419B2 (en) Error information processing method and device, and storage medium
JP5392263B2 (ja) 情報処理装置及びそのメモリ保護方法
US8484620B2 (en) Implementing performance impact reduction of watched variables
US7657792B2 (en) Identifying race conditions involving asynchronous memory updates
KR102254159B1 (ko) 운영체제 커널 메모리의 실시간 오류 검출 방법
JP2002055851A (ja) コンピュータシステムにおける不正なメモリアクセスを検出する監視方法及びそのプログラム並びにその記録媒体
CN111602121B (zh) 利用所应用的存储器区域生命期的比特精确跟踪分析
US6832257B1 (en) Computer, recorded medium on which address validity checking program is recorded, and address validity checking method
US7552305B2 (en) Dynamic and real-time management of memory
US20010049794A1 (en) Write protection software for programmable chip
US20060212858A1 (en) Computer readable medium on which is stored a program for preventing the unauthorized use of program data
CN113157513B (zh) 一种堆内存破坏检测方法、装置、电子设备及存储介质
US20060161602A1 (en) Object based access application programming interface for data versioning

Legal Events

Date Code Title Description
A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20040608