JP6555908B2 - 情報処理装置及びその制御方法、プログラム - Google Patents

情報処理装置及びその制御方法、プログラム Download PDF

Info

Publication number
JP6555908B2
JP6555908B2 JP2015053658A JP2015053658A JP6555908B2 JP 6555908 B2 JP6555908 B2 JP 6555908B2 JP 2015053658 A JP2015053658 A JP 2015053658A JP 2015053658 A JP2015053658 A JP 2015053658A JP 6555908 B2 JP6555908 B2 JP 6555908B2
Authority
JP
Japan
Prior art keywords
function
module
information
management unit
processing apparatus
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.)
Active
Application number
JP2015053658A
Other languages
English (en)
Other versions
JP2016173746A5 (ja
JP2016173746A (ja
Inventor
南陽 母里
南陽 母里
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.)
Canon Inc
Original Assignee
Canon Inc
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 Canon Inc filed Critical Canon Inc
Priority to JP2015053658A priority Critical patent/JP6555908B2/ja
Priority to EP16159198.7A priority patent/EP3070610B1/en
Priority to US15/063,795 priority patent/US9619306B2/en
Priority to CN201610147017.9A priority patent/CN105988866B/zh
Publication of JP2016173746A publication Critical patent/JP2016173746A/ja
Publication of JP2016173746A5 publication Critical patent/JP2016173746A5/ja
Application granted granted Critical
Publication of JP6555908B2 publication Critical patent/JP6555908B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/466Transaction processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0778Dumping, i.e. gathering error/state information after a fault for later diagnosis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Quality & Reliability (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Multimedia (AREA)
  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)

Description

本発明は、情報処理装置における、プロセス終了時の例外処理の技術に関する。
情報処理装置が実行するプログラムにおいて、所定範囲から逸脱した値の入力や、メモリのアクセス違反等が原因で、予期せぬ例外が発生する場合がある。例えば、プログラム実行中にプロセスが最終的に異常終了してしまい、メモリに保持されていたデータが失われることがある。ログ情報やレジストリの情報等のように、作業中に保存されていなかったデータの消失が起こり得る。その対策としては、オペレーティングシステム(以下、OSとも記す)が提供する仕組みを使用することで、プロセスが異常終了する前に例外を検知し、プロセスのダンプ情報を取得することが可能である。これは、プログラマが例外の発生原因を究明し、プログラムを修正する場合に有効な手段である。
従来のプロセス異常終了時における例外処理法として、あるモジュールがロードされた際、例外発生時に実施したい処理を定義した関数をOSに対して登録しておく方法がある。OSは、プロセスが異常を検知した際、登録された関数にシグナルを送る。例えばダンプ情報の取得処理を定義した関数をOSに登録しておくことで、ダンプ情報が取得可能となる。例外処理が必要になった際にシグナルを受けて例外処理を実行する際の登録方法として、特許文献1に開示された方法がある。これは、プログラマのシグナル設定に要する負担を軽減させ、意図したとおりの例外処理を確実にかつ容易に行わせることを目的としている。1つのモジュールから他のモジュールに制御が移る際、登録されていた例外処理の内容を退避し、制御が戻る際に退避しておいた情報を元に戻す処理が行われる。
特開平7−334377号公報
特許文献1に開示の技術では、シグナルを受けて例外処理を実行する際の関数の呼び出し制御について言及されていない。例えば、プログラムにその作成者以外の者が開発したモジュール(以下、他モジュールともいう)が含まれている場合の例外処理を想定する。プログラムは複数のモジュールから構成されているのが一般的である。プログラムの規模が大きくなるほど、多人数や多くの組織が関与し、単独のプログラマまたはチームが全てのモジュールを実装する場合は少なくなる。他モジュールとしては、インタフェースの一部だけが公開されているが、その他に関して非公開であるために制御できないモジュールと連結してプログラムが構成される場合がある。そのため、例外処理時にて、制御下にないモジュールの関数が先に呼び出されてしまうと、このモジュールの制御によっては、プログラムの作成者の開発したモジュールにシグナルが送信されない場合があり得る。このような場合、一部のモジュールのダンプ情報しか取得できない可能性がある。
本発明は、例外発生時に、実行プロセス内でロードされているモジュールの例外処理を実行することができる情報処理装置とその制御方法、プログラムの提供を目的とする。
本発明に係る情報処理装置は、モジュールを管理する管理部と、前記管理部の管理下にある第1種のモジュールと、前記管理部の管理下にない第2種のモジュールとを有するプロセスの実行処理が行われる情報処理装置であって、前記情報処理装置は、前記情報処理装置にて動作するオペレーティングシステムによる管理が為されるシグナル通知関数リストと、前記管理部による管理が為される設定データとを備える。前記情報処理装置は、前記第2種のモジュールがロードされることに伴って、ロードされる前記第2種のモジュールのために定義されている第2の関数の情報を、前記シグナル通知関数リストに登録し、前記管理部に基づいて、前記第1種のモジュールがロードされることに伴って、前記設定データ内の自モジュール登録関数の管理領域に、ロードされる前記第1種のモジュールのために定義されている第1の関数の情報を記憶し、前記管理部に基づいて、前記情報処理装置は、前記第1種のモジュールがロードされることに伴って、前記シグナル通知関数リストを取得し、取得した前記シグナル通知関数リストに前記第2の関数の情報が既に登録されており、かつ、前記第1種のモジュールの管理のために定義されている関数が登録されていないと判定した場合、前記設定データ内の他モジュール登録関数の管理領域に前記第2の関数の情報を記憶し、取得した前記シグナル通知関数リストに対し、前記第2の関数の情報に代えて第3の関数の情報を登録するものである。前記オペレーティングシステムに基づいて、前記情報処理装置は、前記プロセスの実行中に例外が発生した場合に、前記シグナル通知関数リストに登録されている関数の情報を参照し、前記シグナル通知関数リストに前記第3の関数の情報が登録されている場合に前記管理部に対してシグナルを送信し、前記管理部に基づいて、前記情報処理装置は、前記シグナルの受信に伴って、前記第3の関数を実行するために、前記設定データ内の前記自モジュール登録関数の管理領域に記憶されている前記第1の関数の情報に対応する、前記第1の関数を呼び出し、さらに、前記設定データ内の前記他モジュール登録関数の管理領域に記憶されている前記第2の関数の情報に対応する、前記第2の関数を呼び出すために前記シグナルを、前記第2の関数に対して送信する。
本発明によれば、例外発生時に、実行プロセス内でロードされているモジュールの例外処理を実行することができる。
本発明の実施形態にかかる情報処理装置の構成例を示すブロック図である。 情報処理装置のハードウェア構成の一例を示すブロック図である。 モジュール管理部が管理する設定データの構造例を示す図である。 OSが管理するシグナル通知関数リストの構造例を示す図である。 第一実施形態における、モジュールロード時にモジュール管理部が行う処理の一例を示すフローチャートである。 第一実施形態における、モジュールロード時のデータ遷移の一例を示す図である。 第一実施形態における、例外発生時にモジュール管理部が行う例外処理の一例を示すフローチャートである。 第二実施形態にかかる情報処理装置の構成例を示すブロック図である。 第二実施形態における、モジュール管理部が行う関数情報登録処理の一例を示すフローチャートである。 第二実施形態における、モジュール管理部が行う設定データ削除処理の一例を示すフローチャートである。 第三実施形態における、例外発生時にモジュール管理部が行う処理の一例を示すフローチャートである。
以下、本発明の各実施形態について図面を用いて説明する。図1から図4を参照して各実施形態に共通する事項を説明した後、各実施形態の詳細をそれぞれ説明する。
図1は、本発明の実施形態にかかる情報処理装置1のシステム構成例を示すブロック図である。情報処理装置1は各種プログラムを実行するための実行装置であり、オペレーティングシステム(OS)2上で複数のプロセス3が動作する。OS2はハードウェアやリソース管理を行う基本ソフトウェア群であり、代表例として、Microsoft Windows(登録商標)やLinux(登録商標)等がある。プロセス3は実行プログラムの単位であり、例えば、複数のモジュール4〜6、モジュール管理部7、ランタイムライブラリ8から構成されているものとする。図1に示すモジュール4から6は、モジュールAからCをそれぞれ示す。これらのモジュールは、プロセス3よりも小さな実行プログラムの単位を表す。
本実施形態では「自モジュール」と「他モジュール」の2種類のモジュールが存在する。「自モジュール」とは、モジュール管理部7が管理可能なモジュールであることを表す、第1種のモジュールである。一方、「他モジュール」とは、モジュール管理部7の管理外のモジュールであることを表す、第2種のモジュールである。「他モジュール」には、プログラムの作成者以外の者が開発したモジュールが含まれる。図1に例示するように、モジュールAは他モジュールであり、ランタイムライブラリ8との間で情報の送受を直接行う。これに対して、モジュールBとモジュールCは自モジュールであり、モジュール管理部7との間で情報の送受を行う。
モジュール管理部7は、自モジュールを管理する機能を有する。ここでいう管理とは主に、各モジュールの例外処理時に呼び出す関数をOS2へ登録することや、プロセス3が異常を検知した際の各モジュールの例外処理を実行することを意味する。またモジュール管理部7は設定データ9を管理する。モジュール管理部7が管理する設定情報としての設定データ9の詳細については図3を用いて後述する。
ランタイムライブラリ8は、複数のプログラム間で共通する機能等をまとめたモジュールであり、プログラムの実行に必須のライブラリである。ランタイムライブラリ8は、開発されたプログラムを実行する際に連結して利用され、OS2との間で情報のやり取りを行う。
図2は、情報処理装置1のハードウェア構成例を示すブロック図である。CPU(中央演算処理装置)21は、所定のプログラムを読み出して解釈および実行する。ROM(リード・オンリ・メモリ)26の内部のプログラム領域に記憶されたプログラムや、ハードディスク23からRAM(ランダム・アクセス・メモリ)22にロードされたOS2、汎用アプリケーション等のプログラムの実行処理が行われる。RAM22は、CPU21の主メモリ、ワークエリア等として機能する記憶デバイスである。ハードディスク23は、ブートプログラム、種々のアプリケーション、フォントデータ、ユーザファイル、電子原稿ファイル等を記憶する記憶媒体である。本実施形態にかかるプログラムは、ハードディスク23に記憶されており、RAM22に読み出されてCPU21によって実行される。
ディスプレイコントローラ24はディスプレイ(表示部)の表示制御を行う。ネットワークコントローラ25は、ネットワークに接続された機器との通信処理の制御を行う。外部記憶ドライブ27はメディア(記録媒体)28に関するデータの読み出しと書き込みを制御する。キーボードコントローラ29は、ユーザのキー操作やポインティングデバイス等の操作による操作指示信号の入力処理を行う。
図3は、モジュール管理部7が管理する設定データ9の構造例を示す概念図である。設定データ9は、モジュール管理部7が、例外処理時に呼び出す関数の登録処理や例外処理の実行時に参照し、また更新するデータ構造を有する。設定データ9は、プロセスごとに1つ存在する。設定データ9の記憶領域についてはファイル、メモリ、データベース等のように、データを記憶する機能を有していればよく、特に限定されない。設定データ9は、例えば第1および第2の管理領域を有する。第1の管理領域31はプロセス情報管理領域であり、第2の管理領域32はモジュール管理部情報管理領域である。
第1の管理領域31は、プログラムの実行により動作中のプロセス3に関する情報を管理するための領域である。情報処理装置1にて動作する各プロセスは、プロセスID33とプロセス名34が付与される。第1の管理領域31には、これら2つの情報が格納される。モジュール管理部7はプロセスID33とプロセス名34を参照することで、自身がどのプロセスで動作しているかを特定することが可能となる。
第2の管理領域32は、プロセス3内で動作しているモジュール管理部7に関する情報を管理するための領域であり、例外処理を行う際に呼び出される関数について情報を記憶している。第2の管理領域32は複数の登録関数管理領域を有する。例えば、第2の管理領域32は、自モジュール登録関数管理領域(以下、自関数管理域と略称する)35と、他モジュール登録関数管理領域(以下、他関数管理域と略称する)36という2つの領域を有する。
自関数管理域35は、自モジュール、すなわちモジュール管理部7の管理下にあるモジュールから依頼された、例外処理時に呼び出されるべき関数の情報が記憶される領域である。一方、他関数管理域36は、他モジュール、すなわちモジュール管理部7の管理下にないモジュールがOS2に登録していた、例外処理時に呼び出されるべき関数の情報が記憶される領域である。これらの領域には、関数ID37と関数ポインタ38がそれぞれ記憶される。関数ID37は、OS2によって付与された、登録された関数を一意に識別するための識別子を表す。関数ポインタ38は、登録された関数がロードされているメモリの先頭アドレスを表す。例外処理の発生時には、自関数管理域35や他関数管理域36の記憶情報を参照して、関数を呼び出す処理が実行される。
図4はOS2が管理するシグナル通知関数リスト10について構造の一例を示す。シグナル通知関数リスト10は、例外が発生した際にシグナルが送信される関数のリストを管理するデータであり、各プロセスに1つのデータが存在する。シグナル通知関数リスト10の記憶領域についてはファイル、メモリ、データベース等、データを記憶する機能を有していれば特に限定されない。シグナル通知関数リスト10の登録や更新については、プロセス3内の各モジュールまたはモジュール管理部7が、ランタイムライブラリ8を介して、OS2との間で通信することで可能である。シグナル通知関数リスト10では主に、関数ID37と関数ポインタ38の2つの情報が管理される。図4に示す例では、全部で3つの関数が登録されている。例外処理が発生するとリストの先頭から関数が順次実行される。つまり、この場合には、まず関数ID37が「001」である1番目の関数が呼び出される。この関数の実行が完了し、次の制御で関数ID37が「002」である2番目の関数が呼び出され、その次に3番目の関数が呼び出されるという仕組みとなっている。
[第一実施形態]
以下に、本発明の第一実施形態を説明する。本実施形態にて、モジュール管理部7が行う一連の処理例について、図5に示すフローチャートを参照して説明する。本実施形態では図1に示すように、プロセス3内で3つのモジュールA、モジュールB、モジュールCがロードされてそれぞれ実行される場合について説明する。以下では、モジュールがロードされる順番については、他モジュールであるモジュールA、自モジュールであるモジュールB、自モジュールであるモジュールCの順であるものとする。さらに、モジュールA、モジュールB、モジュールCにはそれぞれ関数A、関数B、関数Cが定義されており、これらの関数は例外発生時に行われる処理(例えばダンプ情報の取得処理)が定義されているものとする。また、モジュール管理部7には関数Dが定義されており、例外発生時に呼び出される自モジュールの登録済み関数を順番に呼び出す処理が実行される。
図5において、あるモジュールがロードされ、モジュール管理部7が起動すると、S1に進む。S1にてモジュール管理部7は、例外発生時に呼び出したい関数の登録依頼をモジュールから受信する。その際、モジュール管理部7は設定データ9のインスタンスを新規に作成し、受信した関数の情報(関数情報)を設定データ9に登録する。このとき、モジュール管理部7が登録依頼を受けたモジュールは、モジュール管理部7の管理下にあるとする。つまり、このモジュールは自ジュールであり、関数情報の登録依頼を受けたモジュール管理部7は自関数管理域35への登録を行う。
次のS2においてモジュール管理部7は、ランタイムライブラリ8を介してOS2からシグナル通知関数リスト10を取得する。そしてS3においてモジュール管理部7は、S2で取得したシグナル通知関数リスト10内に関数が既に登録されているか否かを判定する。シグナル通知関数リスト10内に関数が既に登録されている場合、S4に処理を進め、関数が登録されていない場合にはS6に移行する。
S4においてモジュール管理部7は、シグナル通知関数リスト10に登録されている関数が自身の関数(管理下にある関数)であるかどうかを判断する。判断対象となる関数が自身の関数ではない場合、S5に進み、モジュール管理部7は、既に登録されていた関数情報を設定データ9に登録し、S6に進む。このとき、シグナル通知関数リスト10に既に登録されていた関数はモジュール管理部7の管理下にない他モジュールの関数である。このため、モジュール管理部7は他関数管理域36への登録を行う。一方、S4においてモジュール管理部7が、判断対象の関数が自身の関数であると判断した場合、この関数を再度登録する必要は無い。このため、特に何もせずに処理を終了する。
S6においてモジュール管理部7は、シグナル通知関数リスト10に自身の関数を登録する。自モジュールから登録依頼を受けた関数の場合、関数の内容は、設定データ9内の自関数管理域35に記憶されている関数リストにある。この場合、自身の関数が呼び出されると、この関数リストに登録されている関数が順番に呼び出されてCPU21によって実行される。
以上のように、プロセス3内でモジュールがロードされる度に、モジュール管理部7はOS内に登録されているシグナル通知関数リスト10を取得する。自身の関数以外で登録されている関数が存在している場合にモジュール管理部7は該関数リストの情報を記憶手段に記憶し、代わりに自身の関数の情報を登録する。これにより、プロセス3で例外が発生した際に、必ずモジュール管理部7が定義する関数が呼び出されることになる。
以下、図6を参照して具体的に説明する。図6は、本実施形態におけるモジュールロード時の設定データ9及びシグナル通知関数リスト10のデータ遷移の一例を示す。図6(A−1)〜(A−3)は、設定データ9内の第2の管理領域32に関するデータ遷移を例示する。図6(A−1)に示すように、初期状態において自関数管理域35および他関数管理域36のいずれにもデータが存在しない状態である。また図6(B−1)〜(B−3)は、シグナル通知関数リスト10のデータ遷移を例示する。図6(B−1)に示すように、初期状態は登録されている関数リストの情報が存在しない状態である。
まずモジュールAがロードされるものとする。モジュールAは他モジュールであり、モジュール管理部7を介さないため、第2の管理領域32内のデータに変更は発生しない。次にモジュールBがロードされるものとする。モジュールBは自モジュールであるため、モジュール管理部7に対して関数Bの登録依頼を行う。これにより、図5のS1にてモジュール管理部7は、設定データ9内の自関数管理域35に関数Bの情報を記憶する。その後、図5のS2においてモジュール管理部7はシグナル通知関数リスト10を取得する。この結果、図6(B−2)に示すように、他モジュールAの関数Aが登録されているため、図5のS3からS4に処理を進める。S4からS5に進んでモジュール管理部7は、図6(A−2)に示すように、他関数管理域36に関数Aの情報を記憶する。図5のS6でモジュール管理部7は自身の関数Dをシグナル通知関数リスト10に登録する。
最後にモジュールCがロードされるものとする。モジュールCは自モジュールであり、モジュールBの場合と同様にモジュール管理部7に対して関数Cの登録依頼を行う。これにより、図6(A−3)に示すようにモジュール管理部7は、図5のS1において設定データ9内の自関数管理域35に関数Cの情報を記憶する。またモジュールBのロード時と同様、図5のS2においてシグナル通知関数リスト10を取得する処理が行われるが、図6(B−3)に示すようにモジュール管理部7自身の関数Dが既に登録されている。このため、図6(A−3)に示すように、他関数管理域36の情報の更新は行われない。
図6(B−1)〜(B−3)を参照すると、登録されている関数リストが存在しない状態である図6(B−1)の初期状態から、モジュールAがロードされた際、図6(B−2)の状態に遷移する。これは、モジュールAが他モジュールであり、モジュール管理部7を介さずにシグナル通知関数リスト10への登録が行われるからである。つまり、シグナル通知関数リスト10には関数Aの情報が登録される。
次に、モジュールBのロード時にモジュール管理部7は、図5のS6においてシグナル通知関数リスト10の情報を更新する。このため、図6(B−3)に示すように、シグナル通知関数リスト10にはモジュール管理部7自身の関数Dが登録される。最後にモジュールCがロードされる際、モジュールBのロード時と同様にモジュール管理部7はシグナル通知関数リスト10の情報を参照するが、登録されている関数はモジュール管理部7自身が登録した関数である。そのため、シグナル通知関数リスト10の更新は行われず、図6(B−3)の状態のままである。
以上のように、図6ではモジュールA、B、Cが順次にロードされた時のデータ遷移について説明した。他方、モジュールがアンロードされる際の処理は、ロード時とは逆のデータ遷移となる。例えば図6(A−3)および(B−3)に示すように、モジュールA、B、Cの全てがロードされている状態を想定する。この状態においてモジュールCがアンロードされた場合、第2の管理領域32は図6(A−3)から図6(A−2)の状態へ遷移する。その際、シグナル通知関数リスト10は図6(B−3)から(B−2)の状態へ遷移する。
次に、図7を参照して、本実施形態における例外処理を説明する。図7は、例外発生時にモジュール管理部7が行う例外処理の一例を示すフローチャートである。
例外の発生はプロセス3内のランタイムライブラリ8によって検知される。例外の発生が検知されるとOS2は、シグナル通知関数リスト10に登録されている関数に対して順次シグナルを送信する。シグナル通知関数リスト10にモジュール管理部7の関数が登録されていた場合、S11においてモジュール管理部7は、OS2が送信したシグナルを受信する。次のS12において、登録されていた関数の処理が実行される。本実施形態の場合、モジュール管理部7によって定義されている関数Dが呼び出される。関数Dについては、自関数管理域35に登録されている関数リストを順次に呼び出す処理内容である。このため、本実施形態では図6(A−3)で示すように関数B、関数Cの順で実行される。S12の完了後、S13に処理を進め、モジュール管理部7は設定データ9内の他関数管理域36に関数が登録されているか否かを判定する。他関数管理域36に関数が登録されている場合、S14に進み、他関数管理域36に関数が登録されていない場合、S15に移行する。
S14においてモジュール管理部7は、他関数管理域36に登録されている関数を呼び出す。その際、S11で受信したシグナルと同一のシグナルが当該関数に送信される。本実施形態では図6(A−3)で示すように関数Aの処理が実行される。そしてS15に進む。S15にて設定データ9の削除処理が実行される。設定データ9の削除処理は、プロセス3の終了後にメモリ上やファイルとしてデータが残存してしまうことを避ける目的で実行される。S15の処理後にはランタイムライブラリ8によってプロセス3の終了処理が実行される。
以上のようにプロセス内のあるモジュールがロードされた際、モジュール管理部7はシグナルの受信登録が行われている関数の情報を記憶領域に記憶し、モジュール管理部自身の管理下にある関数を上書きする。これにより、プロセスで例外が発生した際に関数呼び出しの制御が可能となり、例外発生時に全ての関数に対して同一のシグナルを通知することができ、プロセス異常終了時のダンプ情報を取得可能となる。
本実施形態では、管理下にある第1種のモジュール(自モジュール)と、管理下にない第2種のモジュール(他モジュール)が区別して管理される。例外処理においては、第2種のモジュールの関数が登録されていた場合、当該関数の情報を記憶手段に記憶する処理が実行され、当該関数に代えて、第1種のモジュールの関数の処理を実行させる関数の登録が行われる。関数の登録では、例えば第1種のモジュールの関数を呼び出す処理を行う関数、または第1種のモジュールの関数の情報が関数リストに記載される。
本実施形態では、モジュール管理部がプロセス内に1つだけ存在する場合を例示して、モジュールのロード時及び例外発生時のモジュール管理部の処理とデータ遷移の様子を説明した。モジュール管理部7はモジュールがロードされる際に、シグナル通知関数リスト10を監視し、他モジュールの関数が登録済みであるかどうかを判断する。他モジュールの関数がシグナル通知関数リスト10に登録されている場合には、自モジュールの関数の処理を実行させる関数に置き換えることで、例外発生時にモジュール管理部7の関数が呼び出されることになる。また、設定データ9内では、自モジュールと他モジュールとで管理領域が区別されて情報管理が行われるので、自モジュールの関数の呼び出し後に他モジュール関数の呼び出しが可能となる。これにより、自モジュールの例外処理を行えるとともに、他モジュールの例外処理をも行うことが可能となる。
[第二実施形態]
次に、本発明の第二実施形態における情報処理装置の構成及び処理等について説明する。本実施形態では、1つのプロセス内に複数のモジュール管理部が存在する場合を例示して説明を行う。尚、第一実施形態の場合と同様の構成要素については既に使用した符号を用いることにより、それらの詳細な説明を省略し、主に相違点を説明する。このような説明の省略の仕方は後述の実施形態においても同じである。
図8は、本実施形態における情報処理装置の構成例を示すブロック図である。第一実施形態との相違点は、1つのプロセス3にてモジュール管理部7が複数のインスタンスとして存在している点である。図8では、モジュール管理部7A(モジュール管理部A)とモジュール管理部7B(モジュール管理部B)を例示する。モジュール管理部AはモジュールB(モジュール5)とモジュールC(モジュール6)を管理し、モジュール管理部BはモジュールD(モジュール11)とモジュールE(モジュール12)を管理しているものとする。また設定データ9については、1つのプロセス3内に複数のモジュール管理部が存在する場合でもインスタンスは1つである。モジュール管理部ごとに設定データ9を独立して管理する方法の場合、各モジュール管理部が管理しているモジュール群の例外発生時の呼び出し順序が独立してしまい制御できない。このため、複数のモジュール管理部が1つの設定データ9を共有する構成となっている。
図8の構成の場合、設定データ9は1つであるため、例えばモジュール管理部Aが既に起動しているにもかかわらず、モジュール管理部Bが設定データ9を新規作成してしまうと既存の設定データ9内に予め存在していた情報が失われてしまう。この場合、例外発生時に一部の関数が呼び出されない可能性がある。また、例えばモジュール管理部Bがアンロードされる際、まだモジュール管理部Aが起動しているにもかかわらず設定データ9を削除してしまうと、設定データ9内の情報が失われてしまう。そこで本実施形態では、1つのプロセス3内に複数のモジュール管理部7が存在する場合において、設定データ9の更新および削除処理について、図9および図10を参照して説明する。
図9は、モジュール管理部7が行う関数情報登録処理の一例を示すフローチャートである。図9に示す処理は図5のS1の処理に関し、プロセス3内のあるモジュールがロードされた際に、例えばモジュール管理部7Aによって実行される。
まずS21においてモジュール管理部7Aは、設定データ9が既に存在するか否かを判定する。設定データ9が既に存在するということは、既に他のモジュール管理部7Bがロードされ、設定データ9を作成したということになる。このため、設定データ9が既に存在する場合、設定データ9の新規作成は行わずにS23に進む。一方、設定データ9が存在しない場合には、モジュール管理部7Aは自身が最初にロードされたモジュール管理部であるとみなし、S22に移行する。S22では最初にロードされたモジュール管理部7Aが設定データ9を新規に作成する。そしてS23に進む。
S23でモジュール管理部7Aは、設定データ9内に自身のエントリー情報を登録する。エントリー情報とは、プロセス3内にロードされているモジュール管理部のインスタンスに関する情報である。エントリー情報は、複数のモジュール管理部のうち、第1のモジュール管理部が、第2のモジュール管理部の存否、つまり第2のモジュール管理部が既に起動されて存在しているかどうかを判定できるようにするために利用される。またエントリー情報は、自関数管理域35において、どのモジュール管理部が登録した関数であるかを判断するための情報としても必要である。モジュール管理部のエントリー情報としては、例えばモジュールIDとモジュール名が設定データ9内に登録される。その後、S24においてモジュール管理部7Aは、自モジュールから登録依頼があった関数の情報を設定データ9内の自関数管理域35に追記する。その際には、どのモジュール管理部が設定した情報かを判別できるように、モジュール管理部自身のエントリー情報を付与する処理が行われる。
次に図10を参照して、本実施形態におけるモジュール管理部が行う設定データ9の削除処理例を説明する。図10のフローチャートに示す処理は、図7のS15の処理に関するものであり、プロセス3にて例外発生時に、モジュール管理部7によって実行される。
まずS31において、例えばモジュール管理部7Aは、設定データ9中に登録されているモジュール管理部のエントリー情報を参照する。その中に他のモジュール管理部7Bのエントリー情報が存在するか否かをモジュール管理部7Aが判定する。他のモジュール管理部7Bのエントリー情報が存在するということは、まだ他のモジュール管理部7Bがロードされている状態である。よって、この場合には設定データは削除せず、S33に進む。S33でモジュール管理部7Aは自身のエントリー情報を削除する。一方、他のモジュール管理部7Bのエントリー情報が存在しない場合、自身以外にロードされているモジュール管理部は存在していない。よってS31からS32に移行し、モジュール管理部7Aは設定データ9の全体を削除する。
以上のように、本実施形態では、複数のモジュール管理部が同一プロセス内に存在し、1つの設定データ9を参照する際、他のモジュール管理部が起動中か否かについて判断される。判断結果にしたがって設定データ9の新規作成、削除等の処理が実行される。本実施形態によれば、設定データ9の上書きや削除により、登録されている関数の情報が失われる可能性がないため、適切な例外処理を実行することができる。
[第三実施形態]
次に、第三実施形態における情報処理装置の処理について説明する。第一実施形態ではプロセス内での例外発生時、登録されていた関数を呼び出す処理について説明した。ここで一例として、例外発生時にメモリ容量が充分でない状態で関数の呼び出しを実施しようとする場合を想定する。この場合に、関数の呼び出しが多すぎたとき等にスタックオーバーフローが発生すると、全ての関数の呼び出しが完了しないままプロセスが終了してしまう可能性がある。このような場合、他より重要なモジュールのダンプ情報が取得できず、その他のモジュールのダンプ情報しか取得できていないという事態に陥ることが懸念される。そこで第三実施形態では、例えばパーソナルコンピュータ(PC)等の情報処理装置にてそのリソース状況が圧迫されている場合において、重要度の高い関数から順番に呼び出しを行う処理について説明する。
図11のフローチャートを参照して、本実施形態における例外発生時にモジュール管理部7が行う処理の一例を説明する。図11において、S11からS15の各ステップに示す処理は、第一実施形態にて図7で説明した通りである。よって、S11からS15の各ステップについての詳細な説明は割愛し、相違点であるS41からS44の処理を中心に説明する。
まずランタイムライブラリ8が例外を検知し、OS2からシグナルが送信され、S11でモジュール管理部7がシグナルを受信すると、S41に進む。S41でモジュール管理部7は、情報処理装置1のリソース情報を取得する。リソース情報とは、例えばCPU21、RAM22、ハードディスク23等の使用率である。次のS42においてモジュール管理部7は、S41で取得したリソース情報の値を所定の閾値と比較する。この閾値については、全ての関数の呼び出しが行えない可能性のあるリソース状況に応じて設定される。その設定方法として、予め固定値を設定する方法と、登録された関数の数等に応じて動的に決定される可変値を設定する方法がある。S42にてリソース情報の値が閾値を超えているか否かについて判定処理が行われ、閾値を超えている場合にはS43に進み、閾値を超えていない場合にはS12に移行する。
S43においてモジュール管理部7は、各モジュールの重要度の情報を取得する。具体的には、モジュールごとに予め重要度が設定されているものとし、例えばモジュール管理部7は、各モジュールの重要度を表す値を本ステップで参照する。そしてS44においてモジュール管理部7は、設定データ9を更新し、自関数管理域35に登録されている関数を重要度が高い順番に並べ替えて呼び出し順序を変更する。例えば、重要度を表す値が大きいほどモジュールの重要度が高い場合には、重要度を表す値に従って降順に関数リストのソーティング処理が実行される。そしてS12以降に処理を進める。S12では関数リスト順に関数の処理が実行されるため、重要度(つまり、優先度)の高い関数から順番に呼び出しが行われる。
本実施形態では、例外発生時の情報処理装置のリソース状況(切迫度や余裕度等)に応じて、関数の呼び出し順序を制御することで、より重要度の高いモジュールの情報を優先的に取得することができる。重要度の設定に関する基準としては、例えば開発段階でのバグやエラー等が発生する可能性が高いモジュール順や、規模の大きいモジュール順に序列が決定されるものとする。したがって、仮に全てのダンプ情報が取得できなかった場合でも、例外の発生原因の解析に有用な情報の取得の可能性を高めることができる。
[その他の実施形態]
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
1 情報処理装置
2 オペレーティングシステム
7 モジュール管理部
9 設定データ
10 シグナル通知関数リスト

Claims (7)

  1. モジュールを管理する管理部と、前記管理部の管理下にある第1種のモジュールと、前記管理部の管理下にない第2種のモジュールとを有するプロセスの実行処理が行われる情報処理装置であって、
    前記情報処理装置は、前記情報処理装置にて動作するオペレーティングシステムによる管理が為されるシグナル通知関数リストと、前記管理部による管理が為される設定データとを備え、
    前記情報処理装置は、前記第2種のモジュールがロードされることに伴って、ロードされる前記第2種のモジュールのために定義されている第2の関数の情報を、前記シグナル通知関数リストに登録し、前記管理部に基づいて、前記第1種のモジュールがロードされることに伴って、前記設定データ内の自モジュール登録関数の管理領域に、ロードされる前記第1種のモジュールのために定義されている第1の関数の情報を記憶し、
    前記管理部に基づいて、前記情報処理装置は、前記第1種のモジュールがロードされることに伴って、前記シグナル通知関数リストを取得し、取得した前記シグナル通知関数リストに前記第2の関数の情報が既に登録されており、かつ、前記第1種のモジュールの管理のために定義されている関数が登録されていないと判定した場合、前記設定データ内の他モジュール登録関数の管理領域に前記第2の関数の情報を記憶し、取得した前記シグナル通知関数リストに対し、前記第2の関数の情報に代えて第3の関数の情報を登録するものであり、
    前記オペレーティングシステムに基づいて、前記情報処理装置は、前記プロセスの実行中に例外が発生した場合に、前記シグナル通知関数リストに登録されている関数の情報を参照し、前記シグナル通知関数リストに前記第3の関数の情報が登録されている場合に前記管理部に対してシグナルを送信し、
    前記管理部に基づいて、前記情報処理装置は、前記シグナルの受信に伴って、前記第3の関数を実行するために、前記設定データ内の前記自モジュール登録関数の管理領域に記憶されている前記第1の関数の情報に対応する、前記第1の関数を呼び出し、さらに、前記設定データ内の前記他モジュール登録関数の管理領域に記憶されている前記第2の関数の情報に対応する、前記第2の関数を呼び出すために前記シグナルを、前記第2の関数に対して送信する
    ことを特徴とする情報処理装置。
  2. 前記情報処理装置はひとつの前記プロセス内に複数の前記管理部を備え、複数の前記管理部は前記設定データを共有し
    複数の前記管理部のうちの第1の管理部に基づいて、前記情報処理装置は、前記設定データが存在していない場合に前記設定データを新規に作成し、また、前記設定データが存在する場合には前記設定データに、前記第1の管理部のエントリー情報を登録する
    ことを特徴とする請求項1に記載の情報処理装置。
  3. 前記第1の管理部に基づいて、前記情報処理装置は、前記設定データから、前記第1の管理部のエントリー情報を削除すべきときに、前記設定データに、複数の前記管理部のうちの第2の管理部のエントリー情報が存在する場合には前記設定データを削除せずに、前記設定データにある、前記第1の管理部のエントリー情報を削除する
    ことを特徴とする請求項2に記載の情報処理装置。
  4. 前記エントリー情報は、前記自モジュール登録関数の管理領域にて、複数の前記管理部のうちのどの管理部が登録した関数であるかの判断に用いられる情報でもある
    ことを特徴とする請求項2または請求項3に記載の情報処理装置。
  5. 前記管理部に基づいて、前記情報処理装置は、前記情報処理装置のリソース情報を取得し、前記リソース情報に従って、前記例外の発生時に呼び出される複数の前記第1の関数間における順序を、前記第1の関数に対応する前記第1種のモジュールの優先度に従う順序に変更する
    ことを特徴とする請求項1乃至4のいずれか1項に記載の情報処理装置。
  6. モジュールを管理する管理部と、前記管理部の管理下にある第1種のモジュールと、前記管理部の管理下にない第2種のモジュールとを有するプロセスの実行処理が行われる情報処理装置にて実行される制御方法であって、
    前記情報処理装置は、前記情報処理装置にて動作するオペレーティングシステムによる管理が為されるシグナル通知関数リストと、前記管理部による管理が為される設定データとを備えるものであり、
    前記制御方法は、
    前記情報処理装置が、前記第2種のモジュールがロードされることに伴って、ロードされる前記第2種のモジュールのために定義されている第2の関数の情報を、前記シグナル通知関数リストに登録する工程と
    前記管理部に基づいて、前記情報処理装置が、前記第1種のモジュールがロードされることに伴って、前記設定データ内の自モジュール登録関数の管理領域に、ロードされる前記第1種のモジュールのために定義されている第1の関数の情報を記憶する工程と、
    前記管理部に基づいて、前記情報処理装置が、前記第1種のモジュールがロードされることに伴って、前記シグナル通知関数リストを取得し、取得した前記シグナル通知関数リストに前記第2の関数の情報が既に登録されており、かつ、前記第1種のモジュールの管理のために定義されている関数が登録されていないと判定した場合、前記設定データ内の他モジュール登録関数の管理領域に前記第2の関数の情報を記憶し、取得した前記シグナル通知関数リストに対し、前記第2の関数の情報に代えて第3の関数の情報を登録する工程と、
    前記オペレーティングシステムに基づいて、前記情報処理装置が、前記プロセスの実行中に例外が発生した場合に、前記シグナル通知関数リストに登録されている関数の情報を参照し、前記シグナル通知関数リストに前記第3の関数の情報が登録されている場合に前記管理部に対してシグナルを送信する工程と、
    前記管理部に基づいて、前記情報処理装置が、前記シグナルの受信に伴って、前記第3の関数を実行するために、前記設定データ内の前記自モジュール登録関数の管理領域に記憶されている前記第1の関数の情報に対応する、前記第1の関数を呼び出し、さらに、前記設定データ内の前記他モジュール登録関数の管理領域に記憶されている前記第2の関数の情報に対応する、前記第2の関数を呼び出すために前記シグナルを、前記第2の関数に対して送信する工程と、を有する
    ことを特徴とする制御方法。
  7. 請求項6に記載した制御方法の各工程をコンピュータに実行させることを特徴とするプログラム。
JP2015053658A 2015-03-17 2015-03-17 情報処理装置及びその制御方法、プログラム Active JP6555908B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2015053658A JP6555908B2 (ja) 2015-03-17 2015-03-17 情報処理装置及びその制御方法、プログラム
EP16159198.7A EP3070610B1 (en) 2015-03-17 2016-03-08 Information processing device, control method thereof, and recording medium
US15/063,795 US9619306B2 (en) 2015-03-17 2016-03-08 Information processing device, control method thereof, and recording medium
CN201610147017.9A CN105988866B (zh) 2015-03-17 2016-03-15 信息处理装置及其控制方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015053658A JP6555908B2 (ja) 2015-03-17 2015-03-17 情報処理装置及びその制御方法、プログラム

Publications (3)

Publication Number Publication Date
JP2016173746A JP2016173746A (ja) 2016-09-29
JP2016173746A5 JP2016173746A5 (ja) 2018-04-19
JP6555908B2 true JP6555908B2 (ja) 2019-08-07

Family

ID=55527317

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015053658A Active JP6555908B2 (ja) 2015-03-17 2015-03-17 情報処理装置及びその制御方法、プログラム

Country Status (4)

Country Link
US (1) US9619306B2 (ja)
EP (1) EP3070610B1 (ja)
JP (1) JP6555908B2 (ja)
CN (1) CN105988866B (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6736440B2 (ja) 2016-09-27 2020-08-05 キヤノン株式会社 クラウドシステムにおける文書ファイルの生成サービスを提供する装置、方法及びプログラム

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02242447A (ja) * 1989-03-16 1990-09-26 Nec Corp メモリダンプ収集方式
JPH0497435A (ja) * 1990-08-15 1992-03-30 Nec Corp 例外処理制御方式
JPH07334377A (ja) * 1994-06-07 1995-12-22 Hitachi Ltd 情報処理装置
US5526485A (en) * 1994-10-13 1996-06-11 Microsoft Corporation Just-in-time debugging system and methods under the windows 3.0 and windows 3.1 operating systems
JP4114970B2 (ja) * 1997-03-24 2008-07-09 ソニー株式会社 情報信号伝送装置
US6594774B1 (en) * 1999-09-07 2003-07-15 Microsoft Corporation Method and apparatus for monitoring computer system objects to improve system reliability
EP1920314A4 (en) * 2006-05-16 2008-09-03 Research In Motion Ltd SYSTEM AND METHOD FOR ABISOLATING THE USER INTERFACE OF AN APPLICATION
US8074116B2 (en) * 2009-05-06 2011-12-06 Microsoft Corporation Exception raised notification
US8706834B2 (en) * 2011-06-30 2014-04-22 Amazon Technologies, Inc. Methods and apparatus for remotely updating executing processes
US9239743B2 (en) * 2012-10-11 2016-01-19 Ittiam Systems (P) Ltd. Method and architecture for exception and event management in an embedded software system
US20160232347A1 (en) * 2015-02-09 2016-08-11 Palo Alto Networks, Inc. Mitigating malware code injections using stack unwinding

Also Published As

Publication number Publication date
JP2016173746A (ja) 2016-09-29
CN105988866A (zh) 2016-10-05
CN105988866B (zh) 2019-08-23
EP3070610A1 (en) 2016-09-21
US20160274957A1 (en) 2016-09-22
US9619306B2 (en) 2017-04-11
EP3070610B1 (en) 2019-05-08

Similar Documents

Publication Publication Date Title
US7774636B2 (en) Method and system for kernel panic recovery
US11392461B2 (en) Method and apparatus for processing information
US7908521B2 (en) Process reflection
US8055496B2 (en) Ensuring product correctness in a multilingual environment
JP6342070B2 (ja) ジョブ管理装置及びジョブ管理方法及びジョブ管理プログラム
JP2011164704A (ja) クライアントプログラム、端末、サーバ装置、システムおよび方法
US20150012732A1 (en) Method and device for recombining runtime instruction
CN104583948A (zh) 使用bpram来布局和执行操作系统
CN103309751A (zh) 提供文件系统功能的终端的设备和方法
US11983519B2 (en) Abort installation of firmware bundles
JP5359601B2 (ja) ダンプ出力制御装置、ダンプ出力制御プログラム、ダンプ出力制御方法
JP2016181019A (ja) オーダ受付処理システム及びオーダ受付処理方法
JP6555908B2 (ja) 情報処理装置及びその制御方法、プログラム
CN110908644A (zh) 状态节点的配置方法、装置、计算机设备和存储介质
CN115499493A (zh) 异步事务处理方法、装置、存储介质及计算机设备
CN115185745A (zh) 数据处理方法、系统、电子设备及计算机可读存储介质
JP2013186765A (ja) バッチ処理システム、進捗状況確認装置、進捗状況確認方法、及びプログラム
US20150046414A1 (en) Computer product, managing apparatus, and managing method
CN115136133A (zh) 按需代码执行的单次使用执行环境
JP5317182B2 (ja) Pos端末、モジュールアップデート方法およびモジュールアップデートプログラム
US7934067B2 (en) Data update history storage apparatus and data update history storage method
US11941432B2 (en) Processing system, processing method, higher-level system, lower-level system, higher-level program, and lower-level program
JP2010026626A (ja) データを記録する方法、システム及びプログラム
US11113179B2 (en) Information processing device, information processing method, and computer readable medium for a trace process
US20220398120A1 (en) Information processing apparatus, information processing method, and recording medium

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180308

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180308

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20181211

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190115

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190131

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20190611

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190709

R151 Written notification of patent or utility model registration

Ref document number: 6555908

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151