JP5842655B2 - 情報処理装置、プログラムおよびエラー処理方法 - Google Patents

情報処理装置、プログラムおよびエラー処理方法 Download PDF

Info

Publication number
JP5842655B2
JP5842655B2 JP2012029357A JP2012029357A JP5842655B2 JP 5842655 B2 JP5842655 B2 JP 5842655B2 JP 2012029357 A JP2012029357 A JP 2012029357A JP 2012029357 A JP2012029357 A JP 2012029357A JP 5842655 B2 JP5842655 B2 JP 5842655B2
Authority
JP
Japan
Prior art keywords
checksum
module
block
program
storage device
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
JP2012029357A
Other languages
English (en)
Other versions
JP2013167937A (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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2012029357A priority Critical patent/JP5842655B2/ja
Publication of JP2013167937A publication Critical patent/JP2013167937A/ja
Application granted granted Critical
Publication of JP5842655B2 publication Critical patent/JP5842655B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Techniques For Improving Reliability Of Storages (AREA)

Description

本発明は、情報処理を行う情報処理装置、プログラムおよびエラー処理方法に関する。
近年、ECC(Error Check and Correct)機能が設けられたメモリ(以下、ECCメモリ)を備えているコンピュータシステムが増加している。ECCメモリは、記憶するデータにあらかじめ誤り訂正符号を付加して、誤った値が記憶されていることの検出および修正を行うメモリモジュールであり、特に高信頼性が求められるサーバやストレージ装置などに採用されている。
通常、ECCメモリでは、データエラーとして、1ビットのシングビットエラーが生じた場合には、シングルビットエラーをパリティチェック等により検出し、ECC機能によって自動修正を行うことができる。
また、2ビット以上のマルチビットエラーが生じた場合には、ECC機能によって、マルチビットのエラーが発生したことを検出することができる。このように、ECCメモリを備えておくことで、致命的なメモリ障害が発生することを低下させることが可能になる。
従来技術として、ECC機構で検出したエラーを、プログラム修正エリアを用いて修正し、システムの連続運転を継続させる技術が提案されている。
特開2000−132462号公報
しかし、従来のECC機能では、マルチビットエラーの発生時、エラー発生箇所を特定することができない。すなわち、マルチビットエラーが発生したことを単に検出することはできても、データ化けが発生した箇所を特定することができない。
したがって、従来では例えば、プログラムの命令コード域において、ECCメモリのマルチビットエラーが発生した際は、破壊された命令コードを特定することができない。破壊された命令コードでプログラムが走ると、プログラムが暴走してシステム障害が引き起こされ、以降の処理を正常に継続することが不可能となってしまう。
1つの側面では、本発明は、マルチビットエラー発生時に、プログラムのエラー発生箇所を特定することを目的とした情報処理装置、プログラムおよびエラー処理方法を提供することを目的とする。
1つの案では、情報処理装置が提供される。情報処理装置は、第1の記憶装置にロードされたプログラムのブロック毎にチェックサムを計算し、該チェックサムを該ブロックに対応付けて第2の記憶装置に格納する格納手段と、プログラムを実行する際に生成されるタスクに対し、タスクが実行されたプログラムのモジュールの識別子と、該モジュールに対して実行されたタスクの識別子と、を少なくとも含む管理情報を管理する管理手段と、前記第1の記憶装置にロードされたプログラムの実行中に特定のメモリエラーが発生して、該プログラムのブロック毎にチェックサムを新たに計算する場合、前記管理情報にもとづき、エラー発生時に動作していたタスクの識別子によって特定されるモジュールである関連モジュールを認識して、前記関連モジュールのチェックサムについて新たに計算する計算手段と、前記計算手段により新たに計算された前記関連モジュールのチェックサムと、前記第2の記憶装置に格納されている、前記関連モジュールのチェックサムと、をブロック毎に比較し、チェックサムが不一致のブロックを検出する検出手段と、前記第1の記憶装置にロードされたプログラムを、前記第2の記憶装置にコピーし、該プログラムをコピーする際は、該プログラムに関連するモジュール識別子、テキスト部先頭アドレス、テキスト部サイズ、前記第2の記憶装置への格納場所の少なくとも1つを含むコピー管理情報を作成して前記第2の記憶装置に格納するコピー手段と、チェックサムが不一致のブロックが検出されると、該ブロックに対応するブロックを前記第2の記憶装置から読み出し、該コピー管理情報を参照して、チェックサムが不一致のブロックに対応するコピーデータの格納先を求めて、読み出した該ブロックを、チェックサムが不一致のブロックが格納されていた前記第1の記憶装置の領域に上書きで書き込む書き込み手段とを有する。
1態様によれば、プログラムのエラー発生箇所を特定することが可能になる。
情報処理装置の構成例を示す図である。 情報処理装置の構成例を示す図である。 破壊された命令コードの特定処理を示す図である。 命令コードの修正処理を示す図である。 RAID装置の構成例を示す図である。 試験プログラムの起動手順を示す図である。 プログラム実行時の動作フローを示す図である。 エラー割り込み発生時の動作フローを示す図である。 プログラムモジュールローディング処理部の動作フローを示す図である。 モジュール管理テーブルの構成例を示す図である。 チェックサム計算およびチェックサム管理テーブル作成に関する処理を示す図である。 チェックサム管理テーブルの構成例を示す図である。 テキスト部データのコピーおよびコピーデータ管理テーブル作成に関する処理を示す図である。 コピーデータ管理テーブルの構成例を示す図である。 タスク生成処理部の動作フローを示す図である。 タスク管理テーブルの構成例を示す図である。 エントリ関数のチェックおよびタスク・実行モジュール管理テーブルの作成に関する処理を示す図である。 タスク・実行モジュール管理テーブルの構成例を示す図である。 破壊された命令コードの特定処理を示す図である。 命令コードの修正処理を示す図である。 エラー監視処理部の動作フローを示す図である。 本実施の形態に用いるコンピュータのハードウェアの一構成例を示す図である。
以下、本発明の実施の形態を図面を参照して説明する。図1は情報処理装置の構成例を示す図である。情報処理装置1は、格納手段1a、計算手段1b、検出手段1c、第1の記憶装置(主記憶装置)m1および第2の記憶装置(二次記憶装置)m2を備える。
格納手段1aは、主記憶装置m1にロードされたプログラムのブロック毎にチェックサムを計算する。そして、各ブロックのチェックサムを、該ブロックに対応付けて二次記憶装置m2に格納する。なお、チェックサムとは、データを分割して、分割ブロック内のデータを数値とみなして合計を取った誤り検出用の符号である。
計算手段1bは、主記憶装置m1にロードされたプログラムの実行中に、特定のメモリエラーが発生すると、該プログラムのブロック毎にチェックサムを新たに計算する。
検出手段1cは、ブロックから新たに計算したチェックサムと、該ブロックに対応付けて二次記憶装置m2に格納されているチェックサムとを比較し、チェックサムが不一致のブロックを検出する。
このように、情報処理装置1では、主記憶装置m1にロードされたプログラムのブロック毎のチェックサムと、該プログラムの実行中にエラーが発生した際に新たに計算したブロック毎のチェックサムとを比較する。そして、情報処理装置1は、チェックサムが不一致のブロックを検出する。これにより、チェックサムが不一致のブロックを、プログラムのエラー発生箇所として特定することが可能になる。
次に情報処理装置1の構成について説明する。図2は情報処理装置の構成例を示す図である。情報処理装置1−1は、プログラムモジュールローディング処理部11、タスク生成処理部12、エラー監視処理部13、メモリ21およびsysVOL(system volume)22を含む。
メモリ21は例えば、ECCメモリであって、図1の主記憶装置m1に該当する。sysVOL22は、図1の二次記憶装置m2に該当する。
プログラムモジュールローディング処理部11は、メモリ21にロードされたプログラムのブロック毎にチェックサムを計算し、各ブロックのチェックサムを、該ブロックに対応付けてsysVOL22に格納する。このとき、チェックサム管理用のテーブルを作成する。
また、プログラムモジュールローディング処理部11は、メモリ21上に展開したプログラムのテキスト部のデータをコピーして、sysVOL22に格納する。このとき、コピーデータ用の管理テーブルを作成する。なお、プログラムのテキスト部とは、プログラムの命令コードに該当する。
タスク生成処理部12は、プログラムモジュールを実行させるタスクを生成する。また、タスク生成時に、最初に実行される処理がどのプログラムモジュールのテキスト部に含まれているかどうかをチェックする。このとき、sysVOL22内にタスクと関連モジュールとの関係情報を含む管理テーブルを作成する。
エラー監視処理部13は、メモリ21のエラーを監視し、エラー発生時にはECCマルチビットエラーか否かを判断する。ECCマルチビットエラーの場合は、プログラムモジュールのテキスト部の破壊箇所を特定する。さらに破壊されているテキスト部の修正を行う。なお、各構成部の詳細動作については後述する。
次にプログラム実行中にメモリエラーが発生した場合における、破壊された命令コードを特定する処理について説明する。
図3は破壊された命令コードの特定処理を示す図である。
〔S1〕プログラムモジュールローディング処理部11は、装置立ち上げ時に、図2で示したメモリ21上へプログラムモジュールのローディング処理を行う。そして、メモリ21上に展開されたテキスト部を複数のブロック(例えば1KB単位)に分割し、ブロック毎にチェックサム計算を実施する。
〔S2〕プログラムモジュールローディング処理部11は、sysVOL22内にチェックサム管理テーブルT1を作成してチェックサムの計算結果を管理する。チェックサム管理テーブルT1で管理される属性としては、例えば、モジュールID(identifier)、テキスト部のブロック数および各ブロックのチェックサム値等がある。
〔S3〕タスク生成処理部12は、プログラムモジュールを実行させるタスクを生成する。タスク生成時には、どこの関数から実行するかといった情報がいるため、エントリ関数(タスク生成時に最初に実行される関数)のアドレスが、どのプログラムモジュールのテキスト部に該当しているかをチェックする。
〔S4〕タスク生成処理部12は、生成タスクと実行プログラムモジュールとの関係を示すタスク・実行モジュール管理テーブルT2をsysVOL22内に作成して管理する。タスク・実行モジュール管理テーブル22で管理される属性としては、例えば、モジュールID、実行タスク数およびタスクID等がある。
〔S5〕生成されたタスクによってプログラムが実行される。
〔S6〕エラー監視処理部13は、図2で示したメモリ21のマルチビットエラーが生じた際の割り込み発生時、以下のチェックサムの比較処理を実施して、命令コードの破壊箇所を特定する。
(1)エラー発生時に動作していたタスクのIDを認識する。また、sysVOL22内に保持されているタスク・実行モジュール管理テーブルT2から関連モジュールを特定する(エラー発生時に動作していたタスクが、どのモジュールのタスクであるかを特定する)。
(2)関連モジュールのテキスト部のチェックサム計算を実施し、チェックサム計算結果と、sysVOL22内で保持されているチェックサム管理テーブルT1のチェックサム値とを比較し、命令コードの破壊有無と、破壊されたブロックとを特定する。
なお、全モジュールに対してチェックサムの比較処理を行うと時間がかかる。そのため、タスク・実行モジュール管理テーブルT2から関連モジュールを認識し、関連モジュールのテキスト部のチェックサム計算を実施して比較することで、比較処理時間の短縮化を図っている。また、テキスト部の全チェックサム値が正しい場合は、プログラムモジュールのデータ部が破壊されているものと判断する。
次に命令コードの修正処理について説明する。破壊された命令コードを修正するときには、修正するために使用すべきデータを要するが、sysVOL22内のモジュールデータは、必ずしもメモリ21上に展開されたテキスト部のデータと一致しているものではない。
この理由は、モジュールに含まれる未解決シンボル(カーネルの関数、外部変数等)がローディング時に解決されて、テキスト部のデータが変わることがあるためである。
なお、未解決シンボルとは、システムが提供する関数や変数が、プログラムモジュールの作成時には存在せずに未解決のままモジュールが作成され、システムのローディング処理時に解決されるシンボルのことをいう。
したがって、sysVOL22内のモジュールデータは、一致している箇所も一致していない箇所も含んでいる可能性があるため、修正データとしてそのまま使用することはできない。
図4は命令コードの修正処理を示す図である。上記の課題の解決を図った命令コードの修正処理の流れを示している。
〔S11〕プログラムモジュールローディング処理部11は、sysVOL22内のモジュールをメモリ21にローディングした後、メモリ21上に展開されたテキスト部をsysVOL22内へコピーする。
〔S12〕プログラムモジュールローディング処理部11は、sysVOL22内にコピーデータ管理テーブルT3を作成してコピーデータを管理する。コピーデータ管理テーブルT3で管理される属性としては、例えば、モジュールID、テキスト部の先頭アドレス/サイズ、コピーデータの格納先LBA(Logical Block Address:sysVOL22内のアドレスに該当)等がある。
〔S13〕タスク生成処理部12は、プログラムモジュールを実行させるタスクを生成する。
〔S14〕生成されたタスクによってプログラムが実行される。
〔S15〕エラー監視処理部13は、命令コードの修正処理を行う。具体的には、マルチビットエラーの割り込み処理の発生時、破壊された命令コードを含むブロック(例えば、1KB単位)を特定した後(上述のステップS6でのエラー特定処理が終了した後)、コピーデータ管理テーブルT3を参照し、sysVOL22内に保持されているテキスト部のデータをメモリ21上へ書き込む。これにより、破壊された命令コードが修正される。
なお、命令コードが破壊された同一のメモリ21上で命令コードを修正するので、メモリ21に物理的な障害等がある場合、命令コードの修正後に再度エラーを通知する割り込みが発生する可能性もある。このため、あらかじめ上限回数を設けておき、一定時間内で上限回数を超えて同一のエラーが生じた(上限回数を超えて同一の割り込みが発生した)場合は、システムを停止して対処することになる。
次に情報処理装置1−1の適用例として、RAID(Redundant Arrays of Inexpensive Disks)装置に適用した場合の構成について説明する。
図5はRAID装置の構成例を示す図である。RAID装置300は、制御部であるCE(Controller Enclosure)3と、記憶部であるDE(Device Enclosure)4−1〜4−n、5−1〜5−nとを備えている。また、RAID装置300には操作端末6が接続されている。
DE4−1〜4−nは、それぞれ複数のディスク40−1〜40−nを含み、DE5−1〜5−nは、それぞれ複数のディスク50−1〜50−nを含んでいる。
CE3は、複数のCM(Controller Module)を含み、図の例ではCM30a、30bを有している。なお、CM30a、30bは、図2の情報処理装置1−1に該当する。
CM30aは、CPU(Central Processing Unit)31a、CA(Channel Adapter)32a−1〜32a−4、SAS(Serial Attached SCSI(Small Computer System Interface))34a−1、34a−2、コントローラ39a、メモリ36a、SSD(Solid State Drive)37aおよびFlash ROM(Read Only Memory)38aを含む。
CPU31aには、メモリ36aが接続して、各種プログラムが実行される。また、コントローラ39aは、例えば、PCH(Platform Controller Hub)であり、CPU31aとCPU周辺部とのブリッジ接続を行う機能を有している。
図では、コントローラ39aには、CPU31a、CA32a−1〜32a−4、SAS34a−1、34a−2、SSD37aおよびFlash ROM38aが接続している。
なお、CPU31aは、図2で示したプログラムモジュールローディング処理部11、タスク生成処理部12およびエラー監視処理部13の各機能を含む。また、メモリ36aは、図2のメモリ21に該当し、SSD37aは、図2のsysVOL22に該当する。
CA32a−1〜32a−4は、上位装置であるホストに接続している。コントローラ39aは、CPU31aとCA32a−1〜32a−4とのブリッジを行って、CPU31aがホストとデータ通信を行う際のインタフェース制御を行う。
さらに、SAS34a−1は、DE4−1〜4−nと接続し、SAS34a−2は、DE5−1〜5−nと接続している。コントローラ39aは、CPU31aとSAS34a−1、34a−2とのブリッジを行って、CPU31aがDE4−1〜4−n、5−1〜5−nに対して書き込み/読み出し処理を行う際のインタフェース制御を行う。
同様にして、CM30bは、CPU31b、CA32b−1〜32b−4、SAS34b−1、34b−2、コントローラ39b、メモリ36b、SSD37bおよびFlash ROM38bを含む。
CPU31bには、メモリ36bが接続して、各種プログラムが実行される。また、コントローラ39bは、例えば、PCHであり、CPU31bとCPU周辺部とのブリッジ接続を行う機能を有している。
図では、コントローラ39bには、CPU31b、CA32b−1〜32b−4、SAS34b−1、34b−2、SSD37bおよびFlash ROM38bが接続している。
なお、CPU31bは、図2で示したプログラムモジュールローディング処理部11、タスク生成処理部12およびエラー監視処理部13の各機能を含む。また、メモリ36bは、図2のメモリ21に該当し、SSD37bは、図2のsysVOL22に該当する。
CA32b−1〜32b−4は、上位装置であるホストに接続している。コントローラ39bは、CPU31bとCA32b−1〜32b−4とのブリッジを行って、CPU31bがホストとデータ通信を行う際のインタフェース制御を行う。
さらに、SAS34b−1は、DE4−1〜4−nと接続し、SAS34b−2は、DE5−1〜5−nと接続している。コントローラ39bは、CPU31bとSAS34b−1、34b−2とのブリッジを行って、CPU31bがDE4−1〜4−n、5−1〜5−nに対して書き込み/読み出し処理を行う際のインタフェース制御を行う。
一方、CPU31aは、DMA(Direct Memory Access)コントローラ31a−1を含み、CPU31bは、DMAコントローラ31b−1を含む。DMAコントローラ31a−1、31b−1は互いに、PCI(Peripheral Component Interconnect) Expressバスb0で接続されており、CM30a、30b間で通信が可能となっている。
なお、CM30a、30bの少なくとも一方に、操作端末6が接続されて、オペレータは、操作端末6を通じて、RAID装置300の診断処理や運用管理を行うことが可能である。例えば、操作端末6からRAID装置300に試験プログラムを流して、装置内の各機能の正常性の試験を行ったりする。また、操作端末6は、操作画面、試験結果のメッセージまたは装置運用状態の表示を行う。
次にRAID装置300に対して診断処理を行う際の試験プログラムの起動手順について説明する。RAID装置300では、例えば、装置出荷前において、試験プログラムを流して装置内の各機能の正常性の試験が行われる。また、診断処理によって正常性が確認された後には、装置運用を実際に行うためのファームウェアが装置内に組み込まれることになる。
図6は試験プログラムの起動手順を示す図である。図中のCM30は、図5で上述したCM30a、30bと同一であり、CPU31、メモリ36、SSD37、Flash ROM38およびコントローラ39を備えている。なお、図6には試験プログラムの起動手順の説明に要する構成要素のみ示している。
CPU31は、メモリコントローラ31−1およびレジスタ31−2を含む。CPU31は、メモリコントローラ31−1を介してメモリ36と接続している。また、コントローラ39を介して、CPU31、SSD37およびFlash ROM38が互いに接続されている。
ここで、メモリ36でメモリエラーが発生した場合、メモリコントローラ31−1がメモリエラーを受信する。メモリコントローラ31−1は、発生したメモリエラーの種別をレジスタ31−2に書き込む。CPU31では、レジスタ31−2に書き込まれたメモリエラーの種別に応じて割り込み処理を発生させる。
例えば、ECCマルチビットエラーが発生した場合は、レジスタ31−2には、ECCマルチビットエラーの発生である旨が書き込まれ(例えば、該当フラグが立つなど)、ECCマルチビットエラーに対処する割り込み処理が発生する。この割り込み処理の発生により、図3、図4で上述したエラー特定・自己修正処理(詳細は以下後述する)が実行されることになる。
以下、RAID装置300内のCM30に対して、試験プログラムを流して起動するときの手順を示す。
〔S1a〕オペレータは、CM30に電源を投入する。
〔S2a〕Flash ROM38には、BIOS(Basic Input/Output System:コンピュータに接続されたハードウェアとアクセスするためのファームウェア)が書き込まれており、CPU31がBIOSを起動する。
〔S3a〕CPU31が、SSD37(sysVOL)内に格納されている診断モニタモジュールをメモリ36上にローディングする。
〔S4a〕CPU31は、診断モニタモジュールの初期化処理を実行する。
〔S5a〕CPU31は、SSD37内のI/Oドライバモジュールを、メモリ36にローディングする。
〔S6a〕CPU31は、I/Oドライバモジュールの初期化処理を実行する。なお、I/Oドライバの数分、ステップS5aおよびステップS6aの処理を繰り返す。
〔S7a〕CPU31は、診断モニタの立ち上げ処理の完了後、操作端末6に診断用の操作画面を表示する。
〔S8a〕オペレータは、操作端末6から、各I/Oの試験プログラムの起動操作を実施する(操作端末6からの実行文をあらかじめファイルに記載しておくことで自動運転することも可能である)。
〔S9a〕CPU31は、診断モニタが指定された試験プログラムユーティリティコマンドを、SSD37からメモリ36にローディングする。
〔S10a〕CPU31は、試験プログラムにもとづき、該当試験を実行する。
次に情報処理装置1−1の動作について以降詳しく説明する。最初に全体処理フローについて説明する。全体処理動作としては、プログラム実行時の動作と、エラー割り込み発生時の動作とがある。
図7はプログラム実行時の動作フローを示す図である。
〔S21〕プログラムモジュールローディング処理部11は、装置立ち上げ時に、メモリ21上へプログラムモジュールのローディング処理を行う。
そして、プログラムモジュールローディング処理部11は、メモリ21上に展開されたテキスト部を複数のブロック(例えば1KB単位)に分割し、ブロック毎にチェックサム計算を実施する。また、プログラムモジュールローディング処理部11は、sysVOL22内にチェックサム管理テーブルT1を作成して計算結果を管理する。
〔S22〕プログラムモジュールローディング処理部11は、sysVOL22内のモジュールをメモリ21にローディングした後、メモリ21上に展開されたテキスト部をsysVOL22内へコピーする。また、プログラムモジュールローディング処理部11は、sysVOL22内にコピーデータ管理テーブルT3を作成して管理する。
〔S23〕タスク生成処理部12は、エントリ関数のアドレスがどのプログラムモジュールのテキスト部に該当しているかをチェックする。
そして、プログラムモジュールローディング処理部11は、生成タスクと実行プログラムモジュールとの関係を示すタスク・実行モジュール管理テーブルT2をsysVOL22内に作成して管理する。以降、生成されたタスクでプログラムが実行される。
図8はエラー割り込み発生時の動作フローを示す図である。
〔S31〕エラー監視処理部13は、ECCマルチビットエラーの割り込み処理が生じたか否かを判断する。マルチビットエラーの割り込み処理が生じた場合はステップS32へ行き、生じていない場合は割り込み処理を抜ける。
〔S32〕エラー監視処理部13は、プログラムモジュールのチェックサムの比較処理を実施して、命令コードの破壊有無を判断する。破壊されている場合は、ステップS33へ行き、破壊されてない場合は割り込み処理を抜ける。
〔S33〕エラー監視処理部13は、破壊箇所を特定し、破壊されている命令コードに対して、命令コードの修正処理を行う。
次にプログラムモジュールローディング処理部11について詳しく説明する。図9はプログラムモジュールローディング処理部の動作フローを示す図である。プログラムモジュールローディング処理部11は、メモリ21上に展開されたテキスト部のチェックサム計算と、テキストデータのコピー処理を行う。
〔S41〕プログラムモジュールローディング処理部11は、sysVOL22からプログラムモジュールを読み込み、メモリ21上に展開する。
〔S42〕プログラムモジュールローディング処理部11は、モジュール管理テーブルを作成する。モジュール管理テーブルは、メモリ21にローディングしたモジュールのIDや、各モジュールのテキスト部のメモリ21内における先頭アドレスを登録したテーブルである。
〔S43〕プログラムモジュールローディング処理部11は、メモリ21上に展開したテキスト部のチェックサム計算を行い、チェックサム管理テーブルT1を作成する。
〔S44〕プログラムモジュールローディング処理部11は、メモリ21上に展開したテキスト部のコピー処理を行い、コピーデータ管理テーブルT3を作成する。
図10はモジュール管理テーブルの構成例を示す図である。モジュール管理テーブルT0は、例えば、モジュールID、テキスト部先頭アドレス、関連タスク数、関連タスクID1〜IDnの属性を有している。
モジュールIDは、メモリ21にローディングされたモジュールのIDである。テキスト部先頭アドレスは、ローディングされた各モジュールの先頭のテキスト部が格納されているメモリ21のアドレスである。関連タスク数は、ローディング処理を実行したタスクの数であり、関連タスクIDは、ローディング処理を実行したタスクのIDである。
図11はチェックサム計算およびチェックサム管理テーブル作成に関する処理を示す図である。
〔S51〕プログラムモジュールローディング処理部11は、sysVOL22からプログラムモジュールをメモリ21へローディングし、メモリ21上に展開する。
〔S52〕プログラムモジュールローディング処理部11は、メモリ21上に展開したモジュールのテキスト部を、例えば、1KB単位のブロックに分割する。
〔S53〕プログラムモジュールローディング処理部11は、1KB毎にチェックサムを計算する。
〔S54〕プログラムモジュールローディング処理部11は、チェックサム管理テーブルT1を作成して、チェックサムの計算結果をsysVOL22内に格納する。
図12はチェックサム管理テーブルの構成例を示す図である。チェックサム管理テーブルT1は、例えば、モジュールID、チェックサム値の数(テキスト部のブロック数)、チェックサム#1〜#nの属性を有している。
モジュールIDは、メモリ21にローディングされて、チェックサムが計算されたモジュールのIDである。チェックサム値の数は、ブロック単位にチェックサムを計算した計算値の数であり、テキスト部のブロック数と等しい。チェックサム#1〜#nは、該当ブロックそれぞれのチェックサムの値である。
図13はテキスト部データのコピーおよびコピーデータ管理テーブル作成に関する処理を示す図である。
〔S61〕プログラムモジュールローディング処理部11は、sysVOL22からプログラムモジュールをメモリ21へローディングし、メモリ21上に展開する。
〔S62〕プログラムモジュールローディング処理部11は、メモリ21上に展開したプログラムモジュールのテキスト部のデータをコピーしてsysVOL22内に格納するする。
〔S63〕プログラムモジュールローディング処理部11は、sysVOL22内にコピーデータ管理テーブルT3を作成し、モジュール単位にコピーデータを管理する。
図14はコピーデータ管理テーブルの構成例を示す図である。コピーデータ管理テーブルT3は、例えば、モジュールID、テキスト部先頭アドレス、テキスト部サイズおよびコピーデータのLBAの属性を有している。
モジュールIDは、メモリ21にローディングされて、テキスト部がコピーされたモジュールのIDである。テキスト部先頭アドレスは、モジュールの先頭のテキスト部が格納されているメモリ21のアドレスである。テキスト部サイズは、テキスト部のサイズであり、コピーデータのLBAは、コピーデータが格納されているsysVOL22内のアドレスである。
次にタスク生成処理部12について詳しく説明する。図15はタスク生成処理部の動作フローを示す図である。タスク生成処理部12は、タスク生成時、最初に実行されるタスク処理がどのモジュールのテキスト部によるものかどうかをチェックし、sysVOL22内に、タスクIDと関連モジュールIDとの関係を登録したタスク・実行モジュール管理テーブルT2を作成する。
〔S71〕タスク生成処理部12は、システム関数でタスクを生成する。
〔S72〕タスク生成処理部12は、メモリ21上にタスク管理テーブルを作成して管理する。タスク管理テーブルは、生成されたタスクのID、エントリ関数のアドレスなどを登録したテーブルである。
〔S73〕タスク生成処理部12は、エントリ関数のアドレスがどのモジュールのテキスト部に含まれているかを判別する。
〔S74〕タスク生成処理部12は、sysVOL22上にタスク・実行モジュール管理テーブルT2を作成して管理する。その後、タスクが起動される。
図16はタスク管理テーブルの構成例を示す図である。タスク管理テーブルT4は、例えば、モジュールID、エントリ関数のアドレス、タスクID1〜IDnの属性を有している。
モジュールIDは、システム関数で生成したタスクのモジュールのIDである。エントリ関数のアドレスは、最初に実行されるタスクのエントリ関数のメモリ21上のアドレスである。タスクID1〜IDnは、システム関数で生成したタスクのIDである。なお、図示はしてないが、タスク実行情報(タスクの実行状態、タスク実行に要する資源、タスク実行の優先度など)を属性に持ってもよい。
図17はエントリ関数のチェックおよびタスク・実行モジュール管理テーブルの作成に関する処理を示す図である。図では、メモリ21上に3つのモジュールA〜Cの各テキスト部が展開されている状態で、タスク生成処理が実行された場合のタスク・実行モジュール管理テーブルT2の作成を示している。
なお、モジュールA〜Cは、例えば、モジュールAは試験プログラム、モジュールBはユーザインタフェースに関連したユーティリティプログラム、モジュールCがI/Oドライバのプログラムモジュールである。
〔S81〕タスク生成処理部12は、エントリ関数のアドレスがモジュールA〜Cのどのモジュールのテキスト部に含まれているかを判別する。
〔S82〕タスク生成処理部12は、タスク・実行モジュール管理テーブルT2を作成する。例えば、タスク生成処理部12は、エントリ関数のアドレスがモジュールAのテキスト部に含まれるものならば、モジュールAに関するタスク・実行モジュール管理テーブルT2を作成して、sysVOL22内に格納する。
図18はタスク・実行モジュール管理テーブルの構成例を示す図である。タスク・実行モジュール管理テーブルT2は、例えば、モジュールID、実行タスク数およびタスクID1〜IDnの属性を有している。
モジュールIDは、メモリ21にローディングされて、タスクが実行されたモジュールのIDである。実行タスク数は、モジュール毎にタスクが実行された数である。タスクIDは、タスクが実行されるときに割り振られたタスクのIDである。
次にエラー監視処理部13について説明する。エラー監視処理部13は、メモリエラー等の異常を割り込みで監視しており、異常検出の割り込みが通知されると動作する。また、エラー監視処理において、ECCマルチビットエラーかどうかを判断し、該当エラーの場合は、プログラムモジュールのテキスト部が破壊されているかどうかを判定し、破壊されている場合は命令コードの修正を行う。
図19は破壊された命令コードの特定処理を示す図である。図19では、メモリ21上にモジュールA〜Cのテキスト部のデータが展開されている。また、モジュールAのテキスト部により実行されたタスクがタスク#1、モジュールBのテキスト部により実行されたタスクがタスク#2、#3、モジュールCのテキスト部により実行されたタスクがタスク#4としている。また、この例では、モジュールBのテキスト部にECCマルチビットエラーが発生したとし、エラー発生時の動作タスクがタスク#3であるとする。
〔S91〕エラー監視処理部13は、ECCマルチビットエラー発生時の動作タスクのタスクID(タスク#3)を取得する。
〔S92〕エラー監視処理部13は、取得したタスクIDと、タスク生成時に作成したタスク・実行モジュール管理テーブルT2とを照らし合わせ、そのときの実行モジュールを特定する。ここでは、実行モジュールはモジュールBと特定される。
〔S93〕エラー監視処理部13は、該当する実行モジュールのテキスト部先頭から、1KB範囲毎のチェックサムを計算する。ここでは、モジュールBのテキスト部のチェックサムを計算する。
〔S94〕エラー監視処理部13は、各ブロック範囲のチェックサムの計算結果と,モジュールローディング処理時に作成したチェックサム管理テーブルT1に登録されているモジュールBのチェックサムとを比較する。
〔S95〕エラー監視処理部13は、チェックサムが不一致になった範囲をテキスト部(命令コード)が破壊されている範囲と特定する。
図20は命令コードの修正処理を示す図である。エラー監視処理部13は、命令コードが破壊されている範囲を特定した後に、sysVOL22内のコピーデータ管理テーブルT3を参照し、コピーデータを使用して命令コードの修正を行う。
〔S101〕エラー監視処理部13は、コピーデータ管理テーブルをT3参照し、命令コードの修正に使用するデータの格納先(sysVOL22内のLBA)を求める。
〔S102〕エラー監視処理部13は、sysVOL22内のコピーデータを、メモリ21内のモジュールテキスト部の命令コードが破壊されている箇所に書き込んで(上書き処理)、命令コードの修正を行う。
図21はエラー監視処理部の動作フローを示す図である。
〔S111〕エラー監視処理部13は、エラー発生時の動作タスクIDを取得する。
〔S112〕エラー監視処理部13は、取得したタスクIDを、タスク・実行モジュール管理テーブルT2に登録されているタスクIDと照合し、実行モジュールのIDを求める。
〔S113〕エラー監視処理部13は、実行モジュールのIDをモジュール管理テーブルT0と照合し、該モジュールのテキスト部の先頭アドレスを求める。
〔S114〕エラー監視処理部13は、テキスト部の先頭アドレスから、1KB分のチェックサムを新たに計算する。
〔S115〕エラー監視処理部13は、ステップS114で計算したチェックサムと、チェックサム管理テーブルT1に登録されている同一モジュールIDのチェックサムとを比較する。
〔S116〕エラー監視処理部13は、チェックサムが一致するか否かを判断し、一致する場合はステップS119へ行き、不一致の場合はステップS117へ行く。
〔S117〕エラー監視処理部13は、チェックサムを計算した範囲が破壊箇所と特定する。
〔S118〕エラー監視処理部13は、命令コードの修正処理を実行する。
〔S119〕エラー監視処理部13は、該モジュールの全テキスト分に対するチェックサム比較処理が終了したか否かを判断する。終了した場合はステップS120へ行き、未終了の場合はステップS121へ行く。
〔S120〕エラー監視処理部13は、テキスト部の破壊は無しと判断する。
〔S121〕エラー監視処理部13は、次の1KB分のチェックサムを計算する。ステップS115へ戻る。
以上説明したように、本技術によれば、ローディング処理したプログラムのブロック毎のチェックサムと、該プログラムの実行中にエラーが発生した際に新たに計算したブロック毎のチェックサムとを比較し、チェックサムが不一致のブロックを検出する。
そして、ローディング処理したプログラムをコピーしておき、チェックサムが不一致の場合は、チェックサムが不一致であることを特定したブロックに対してコピーデータを上書き処理して、プログラムエラーの自己修正を行う。
これにより、チェックサムが不一致のブロックを、プログラムのエラー発生箇所として効率よく特定することが可能になる。さらに、エラー箇所を自動修正するので、破壊された命令コードでプログラムが暴走してしまうといった現象を防止することができ、プログラムの正常継続動作が可能になる。
なお、上記に示した処理機能は、コンピュータによって実現することができる。図22は、本実施の形態に用いるコンピュータのハードウェアの一構成例を示す図である。コンピュータ100は、CPU101によって装置全体が制御されている。CPU101には、バス108を介してRAM(Random Access Memory)102と複数の周辺機器が接続されている。
RAM102は、コンピュータ100の主記憶装置として使用される。RAM102には、CPU101に実行させるOS(Operating System)のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、RAM102には、CPU101による処理に必要な各種データが格納される。
バス108に接続されている周辺機器としては、HDD(Hard Disk Drive)103、グラフィック処理装置104、入力インタフェース105、光学ドライブ装置106、および通信インタフェース107がある。
HDD103は、内蔵したディスクに対して、磁気的にデータの書き込みおよび読み出しを行う。HDD103は、コンピュータ100の二次記憶装置として使用される。HDD103には、OSのプログラム、アプリケーションプログラム、および各種データが格納される。なお、二次記憶装置としては、フラッシュメモリなどの半導体記憶装置を使用することもできる。
グラフィック処理装置104には、モニタ104aが接続されている。グラフィック処理装置104は、CPU101からの命令に従って、画像をモニタ104aの画面に表示させる。モニタ104aとしては、CRT(Cathode Ray Tube)を用いた表示装置や液晶表示装置などがある。
入力インタフェース105には、キーボード105aとマウス105bとが接続されている。入力インタフェース105は、キーボード105aやマウス105bから送られてくる信号をCPU101に送信する。なお、マウス105bは、ポインティングデバイスの一例であり、他のポインティングデバイスを使用することもできる。他のポインティングデバイスとしては、タッチパネル、タブレット、タッチパッド、トラックボールなどがある。
光学ドライブ装置106は、レーザ光などを利用して、光ディスク106aに記録されたデータの読み取りを行う。光ディスク106aは、光の反射によって読み取り可能なようにデータが記録された可搬型の記録媒体である。光ディスク106aには、DVD(Digital Versatile Disc)、DVD−RAM、CD−ROM(Compact Disc Read Only Memory)、CD−R(Recordable)/RW(ReWritable)などがある。
通信インタフェース107は、ネットワーク110に接続されている。通信インタフェース107は、ネットワーク110を介して、他のコンピュータまたは通信機器との間でデータの送受信を行う。
以上のようなハードウェア構成によって、本実施の形態の処理機能を実現することができる。また、コンピュータで本実施の形態の処理機能を実現する場合、CM30が有する機能の処理内容を記述したプログラムが提供される。
そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記憶装置には、ハードディスク装置(HDD)、フレキシブルディスク(FD)、磁気テープなどがある。光ディスクには、DVD、DVD−RAM、CD−ROM/RWなどがある。光磁気記録媒体には、MO(Magneto-Optical disk)などがある。なおプログラムを記録する記録媒体には、一時的な伝搬信号自体は含まれない。
プログラムを流通させる場合には、例えば、そのプログラムが記録されたDVD、CD−ROMなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムに従った処理を実行することもできる。
また、上記の処理機能の少なくとも一部を、DSP(Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)、PLD(Programmable Logic Device)などの電子回路で実現することもできる。
以上、実施の形態を例示したが、実施の形態で示した各部の構成は同様の機能を有する他のものに置換することができる。また、他の任意の構成物や工程が付加されてもよい。
1 情報処理装置
1a 格納手段
1b 計算手段
1c 検出手段
m1 第1の記憶装置
m2 第2の記憶装置

Claims (5)

  1. 第1の記憶装置にロードされたプログラムのブロック毎にチェックサムを計算し、該チェックサムを該ブロックに対応付けて第2の記憶装置に格納する格納手段と、
    プログラムを実行する際に生成されるタスクに対し、タスクが実行されたプログラムのモジュールの識別子と、該モジュールに対して実行されたタスクの識別子と、を少なくとも含む管理情報を管理する管理手段と、
    前記第1の記憶装置にロードされたプログラムの実行中に特定のメモリエラーが発生して、該プログラムのブロック毎にチェックサムを新たに計算する場合、前記管理情報にもとづき、エラー発生時に動作していたタスクの識別子によって特定されるモジュールである関連モジュールを認識して、前記関連モジュールのチェックサムについて新たに計算する計算手段と、
    前記計算手段により新たに計算された前記関連モジュールのチェックサムと、前記第2の記憶装置に格納されている、前記関連モジュールのチェックサムと、をブロック毎に比較し、チェックサムが不一致のブロックを検出する検出手段と、
    前記第1の記憶装置にロードされたプログラムを、前記第2の記憶装置にコピーし、該プログラムをコピーする際は、該プログラムに関連するモジュール識別子、テキスト部先頭アドレス、テキスト部サイズ、前記第2の記憶装置への格納場所の少なくとも1つを含むコピー管理情報を作成して前記第2の記憶装置に格納するコピー手段と、
    チェックサムが不一致のブロックが検出されると、該ブロックに対応するブロックを前記第2の記憶装置から読み出し、該コピー管理情報を参照して、チェックサムが不一致のブロックに対応するコピーデータの格納先を求めて、読み出した該ブロックを、チェックサムが不一致のブロックが格納されていた前記第1の記憶装置の領域に上書きで書き込む書き込み手段と、
    を有する情報処理装置。
  2. 前記検出手段は、修正不能なメモリエラーが発生した場合に、チェックサムが不一致のブロックの検出を実行することを特徴とする請求項1に記載の情報処理装置。
  3. 前記検出手段は、ECC(Error Check and Correct)マルチビットエラーが発生した場合に、修正不能なメモリエラーであると判断することを特徴とする請求項記載の情報処理装置。
  4. コンピュータに、
    第1の記憶装置にロードされたプログラムのブロック毎にチェックサムを計算し、該チェックサムを、該ブロックに対応付けて第2の記憶装置に格納し、
    プログラムを実行する際に生成されるタスクに対し、タスクが実行されたプログラムのモジュールの識別子と、該モジュールに対して実行されたタスクの識別子と、を少なくとも含む管理情報を管理し、
    前記第1の記憶装置にロードされたプログラムの実行中に特定のメモリエラーが発生して、該プログラムのブロック毎にチェックサムを新たに計算する場合、前記管理情報にもとづき、エラー発生時に動作していたタスクの識別子によって特定されるモジュールである関連モジュールを認識して、前記関連モジュールのチェックサムについて新たに計算し、
    新たに計算された前記関連モジュールのチェックサムと、前記第2の記憶装置に格納されている、前記関連モジュールのチェックサムと、をブロック毎に比較し、チェックサムが不一致のブロックを検出
    前記第1の記憶装置にロードされたプログラムを、前記第2の記憶装置にコピーし、該プログラムをコピーする際は、該プログラムに関連するモジュール識別子、テキスト部先頭アドレス、テキスト部サイズ、前記第2の記憶装置への格納場所の少なくとも1つを含むコピー管理情報を作成して前記第2の記憶装置に格納し、
    チェックサムが不一致のブロックが検出されると、該ブロックに対応するブロックを前記第2の記憶装置から読み出し、該コピー管理情報を参照して、チェックサムが不一致のブロックに対応するコピーデータの格納先を求めて、読み出した該ブロックを、チェックサムが不一致のブロックが格納されていた前記第1の記憶装置の領域に上書きで書き込む、
    処理を実行させるプログラム。
  5. コンピュータが、
    第1の記憶装置にロードされたプログラムのブロック毎にチェックサムを計算し、該チェックサムを、該ブロックに対応付けて第2の記憶装置に格納し、
    プログラムを実行する際に生成されるタスクに対し、タスクが実行されたプログラムのモジュールの識別子と、該モジュールに対して実行されたタスクの識別子と、を少なくとも含む管理情報を管理し、
    前記第1の記憶装置にロードされたプログラムの実行中に特定のメモリエラーが発生して、該プログラムのブロック毎にチェックサムを新たに計算する場合、前記管理情報にもとづき、エラー発生時に動作していたタスクの識別子によって特定されるモジュールである関連モジュールを認識して、前記関連モジュールのチェックサムについて新たに計算し、
    新たに計算された前記関連モジュールのチェックサムと、前記第2の記憶装置に格納されている、前記関連モジュールのチェックサムと、をブロック毎に比較し、チェックサムが不一致のブロックを検出
    前記第1の記憶装置にロードされたプログラムを、前記第2の記憶装置にコピーし、該プログラムをコピーする際は、該プログラムに関連するモジュール識別子、テキスト部先頭アドレス、テキスト部サイズ、前記第2の記憶装置への格納場所の少なくとも1つを含むコピー管理情報を作成して前記第2の記憶装置に格納し、
    チェックサムが不一致のブロックが検出されると、該ブロックに対応するブロックを前記第2の記憶装置から読み出し、該コピー管理情報を参照して、チェックサムが不一致のブロックに対応するコピーデータの格納先を求めて、読み出した該ブロックを、チェックサムが不一致のブロックが格納されていた前記第1の記憶装置の領域に上書きで書き込む、
    ことを特徴とするエラー処理方法。
JP2012029357A 2012-02-14 2012-02-14 情報処理装置、プログラムおよびエラー処理方法 Active JP5842655B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2012029357A JP5842655B2 (ja) 2012-02-14 2012-02-14 情報処理装置、プログラムおよびエラー処理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012029357A JP5842655B2 (ja) 2012-02-14 2012-02-14 情報処理装置、プログラムおよびエラー処理方法

Publications (2)

Publication Number Publication Date
JP2013167937A JP2013167937A (ja) 2013-08-29
JP5842655B2 true JP5842655B2 (ja) 2016-01-13

Family

ID=49178307

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012029357A Active JP5842655B2 (ja) 2012-02-14 2012-02-14 情報処理装置、プログラムおよびエラー処理方法

Country Status (1)

Country Link
JP (1) JP5842655B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180049834A (ko) * 2016-11-03 2018-05-14 현대오토에버 주식회사 차량 제어 프로그램을 복구하는 제어 장치 및 그 방법

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08179996A (ja) * 1994-12-27 1996-07-12 Toshiba Corp メモリ異常検出装置
JPH0944410A (ja) * 1995-07-26 1997-02-14 Kyocera Corp ロードモジュールの管理方式
JP2000132462A (ja) * 1998-10-27 2000-05-12 Hitachi Ltd プログラム自己修復方式
JP2001318806A (ja) * 2000-05-11 2001-11-16 Nec Corp プログラムの障害解析データ作成方法

Also Published As

Publication number Publication date
JP2013167937A (ja) 2013-08-29

Similar Documents

Publication Publication Date Title
US10180866B2 (en) Physical memory fault mitigation in a computing environment
US7979749B2 (en) Method and infrastructure for detecting and/or servicing a failing/failed operating system instance
US9026865B2 (en) Software handling of hardware error handling in hypervisor-based systems
US20090006745A1 (en) Accessing snapshot data image of a data mirroring volume
US20090150721A1 (en) Utilizing A Potentially Unreliable Memory Module For Memory Mirroring In A Computing System
US9141464B2 (en) Computing device and method for processing system events of computing device
US20110161726A1 (en) System ras protection for uma style memory
US11379330B2 (en) Information handling systems and related methods for testing memory during boot and during operating system (OS) runtime
US10514972B2 (en) Embedding forensic and triage data in memory dumps
JP2015114873A (ja) 情報処理装置および監視方法
JP5440073B2 (ja) 情報処理装置,情報処理装置の制御方法および制御プログラム
US20050289333A1 (en) Method to provide system state information in a platform agnostic manner
US10635554B2 (en) System and method for BIOS to ensure UCNA errors are available for correlation
JP5842655B2 (ja) 情報処理装置、プログラムおよびエラー処理方法
US11126486B2 (en) Prediction of power shutdown and outage incidents
CN115359834A (zh) 一种盘仲裁区域检测方法、装置、设备及可读存储介质
CN111143125B (zh) 一种mce错误处理方法、装置及电子设备和存储介质
TW201137608A (en) System and method for handling system failure
US9804805B2 (en) Disk array apparatus, control method therefor, and storage medium
US11953985B1 (en) Dial-home and template based automatic recovery of virtual machine guest operating system
JP7074291B2 (ja) 情報処理装置、情報処理方法及びプログラム
US11593191B2 (en) Systems and methods for self-healing and/or failure analysis of information handling system storage
TWI795950B (zh) 硬碟監控方法、電子裝置及存儲介質
CN109343986B (zh) 处理内存故障的方法与计算机系统
JP2009238003A (ja) ディスクアレイ制御装置、ディスクアレイ制御方法、ディスクアレイ制御プログラム、及び該プログラムを記録した記録媒体

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20141007

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150508

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150512

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150708

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150804

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150928

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: 20151020

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20151102

R150 Certificate of patent or registration of utility model

Ref document number: 5842655

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150