JP2014530392A - トリアージダンプの生成方法及びコンピューティングデバイス - Google Patents

トリアージダンプの生成方法及びコンピューティングデバイス Download PDF

Info

Publication number
JP2014530392A
JP2014530392A JP2014529673A JP2014529673A JP2014530392A JP 2014530392 A JP2014530392 A JP 2014530392A JP 2014529673 A JP2014529673 A JP 2014529673A JP 2014529673 A JP2014529673 A JP 2014529673A JP 2014530392 A JP2014530392 A JP 2014530392A
Authority
JP
Japan
Prior art keywords
value
data
memory
overwrite
values
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
JP2014529673A
Other languages
English (en)
Other versions
JP5875690B2 (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.)
Microsoft Corp
Original Assignee
Microsoft 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 Microsoft Corp filed Critical Microsoft Corp
Publication of JP2014530392A publication Critical patent/JP2014530392A/ja
Application granted granted Critical
Publication of JP5875690B2 publication Critical patent/JP5875690B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • G06F21/6245Protecting personal data, e.g. for financial or medical purposes
    • G06F21/6254Protecting personal data, e.g. for financial or medical purposes by anonymising data, e.g. decorrelating personal data from the owner's identification
    • 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
    • G06F11/073Error 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 in a memory management context, e.g. virtual memory or cache management
    • 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
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2143Clearing memory, e.g. to prevent the data from being stolen

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Quality & Reliability (AREA)
  • Medical Informatics (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Databases & Information Systems (AREA)
  • Biomedical Technology (AREA)
  • Debugging And Monitoring (AREA)

Abstract

1つまたは複数のソフトウェアプログラムを実行する間に、エラーに直面したコンピュータから、有用なメモリデータのトリアージダンプを生成するためのシステムおよび方法である。コンピュータシステムは、個人データの特性を有するトリアージダンプ内のデータ値を識別することができる。ソフトウェアユーザのプライバシーを保護するために、個人データは、データ値を上書き値で上書きすることによって、書き換えることができる。データ値の書き換えに使用される上書き値は、データ値自体に基づき事前決定されるか、またはランダムに選択され得る。トリアージダンプは、解析するために、1つまたは複数のソフトウェアプログラムの開発者と関連した外部サーバに送信することができる。上書き値が動的に選択された場合、使用される具体的な上書き値を、トリアージダンプと共に、サーバに送信することができる。

Description

開示される実施の形態はトリアージダンプの生成方法及びコンピューティングデバイス等に関連する。
現代のコンピュータソフトウェア開発者は、ソフトウェアがユーザにリリースされた後でさえも、継続的にソフトウェアを改善および更新している。インターネットなどの既存のネットワークインフラは、必要であれば、ソフトウェア開発者がユーザにソフトウェア更新情報を、すばやく頻繁に送信することを可能にする。インターネットはまた、ソフトウェアを実行している間に発生する可能性のある問題に関して、ユーザがソフトウェア開発者に、フィードバックを提供することを可能にする。このフィードバックは、ユーザの明確な動作により送信された、手動のフィードバックであろう。しかしながら、オペレーティングシステムの中には、ユーザがユーザのオペレーティングシステムに対して、そのような情報を送信することに同意を与えた場合、自動的にフィードバックを提供することを可能にする、エラー報告システムのエージェントを含むものがある。このフィードバックは、ソフトウェアプログラムがクラッシュもしくはハングした時点でのオペレーティング環境についての有益な情報を含む可能性があり、ソフトウェア開発者がそのソフトウェア内の何らかのバグを調べ、修正することを可能にする。
フィードバックがオペレーティングシステムによって自動的に送信された場合、送信された情報は、クラッシュまたは他の性能問題の時点でのコンピュータの動作状態を定義するためにコンピュータから収集された情報の「ダンプ」である可能性がある。ダンプ内のメモリの内容の少なくとも一部を含むことは有益である。この情報は、時に、メモリダンプと呼ばれ、特定の時点での作業メモリの状態を明らかにする。
メモリダンプは、ソフトウェア開発者が、クラッシュまたはハングの原因の調査を実行することを可能にする。しかしながら、現代コンピュータシステムにおける完全メモリダンプは、極めて大きく、そこに含まれる情報のすべてが、ソフトウェア開発者に特に有用であるわけではない。したがって、メモリダンプの一部のみを送信してもよい。
異なるメモリからの内容を、異なる状況で送信することができる。状況によっては、エラーのレポートは、メモリの内容に十分含まれ、特定のソフトウェアアプリケーションが抱える問題について識別する際の助けとすることができる。ソフトウェアは、何らかのさまざまな問題を抱えている可能性がある。例えば、性能、信頼性、安定性、セキュリティ、または整合性についての問題があるかもしれない。そのようなダンプは、時に、「トリアージダンプ(triage dump)」と呼ばれる。トリアージダンプの解析に基づいて、ソフトウェア開発者は、エラー報告システムを構築して、エラーレポートに含めるためのより詳細な情報を収集することができる。
一観点による課題は、ユーザのプライバシーを保護しつつ、エラーを診断するのに有用な情報をシステムが取得できるようにすることである。
一観点による方法は、
プロセッサと、データを格納するための少なくとも1つのメモリとを備えるコンピュータシステム内でトリアージダンプを生成する方法であって、前記メモリは、複数のメモリ領域を備え、前記方法は、
前記複数のメモリ領域に格納される第1の複数のデータ値を識別するステップであって、前記第1の複数のデータ値のそれぞれが個人情報の特性を有する、ステップと、
前記第1の複数のデータ値のそれぞれを、ヌルポインタの値には対応していない1つ以上の上書き値で上書きするステップと
を有する方法である。
トリアージダンプをソフトウェア開発者に送信することができる、例示的ネットワーク環境の簡易ブロック図である。
本発明の実施形態を作動することができる、例示的コンピューティング環境のブロック図である。
図2のオペレーティングシステムの簡易ブロック図である。
本発明の実施形態を実施することができるコンピュータシステムの例示的メモリの略図である。
図4の例示的メモリをテーブルで示す。
本発明の一実施形態に従って、個人情報を格納した可能性のあるデータ値を書き換えた後の、図4の例示的メモリである。
本発明の一実施形態に従って、個人情報を格納した可能性のあるデータ値を書き換えた後の、図4の例示的メモリである。
トリアージダンプを生成するための一実施形態の模式的フローダイアグラムである。
乱数発生器を使用して、トリアージダンプを生成するための一実施形態の模式的フローダイアグラムである。
<実施の形態の概要>
エラー報告システムの一部として、ユーザのコンピュータからメモリ・ダンプ・データを送信するための技術を本明細書で説明する。メモリダンプは、動作エラーの原因を識別する際に有用な情報を含むことができ、一方、ユーザ固有の個人データがメモリ・ダンプ・データに含まれるリスクを低減することができる。ユーザ固有の個人データがメモリダンプに含まれるリスクを低減するために、データ値を上書き値で上書きすることによって、個人データのデータ特性を有するメモリの部分を「書き換える」。
上書き値は、エラーの原因を識別する際に、メモリ・ダンプ・データの値を増やすために選択することができる。いくつかの実施形態において、上書きされたメモリ領域と、上書きされずに情報が保持されたメモリ領域とを区別することを可能にするよう、上書き値を選択することができる。いくつかの実施形態において、ポインタの特性を有するデータ値が、上書きされることなく、メモリダンプ内に保持され、潜在的ポインタ値と異なるよう、上書き値が選択される。具体例として、値が上書きされた領域と、ヌルポインタを格納する領域との区別を可能にするよう上書き値を選択することができる。
いくつかの実施形態において、上書き値は、上書きするデータ値の所定の関数として選択することができる。いくつかの実施形態において、上書き値は、ランダムに選択することができる。
いくつかの実施形態において、コンピュータシステムは、トリアージ・ダンプ・エンジンを使用して、コンピュータプログラムのクラッシュまたはハングに応じて、トリアージダンプを生成する。トリアージ・ダンプ・エンジンの識別エンジンは、個人情報の特性を有する複数のデータ値を識別する。上書きエンジンは、各識別されたデータ値を、上書き値で上書きする。上書き値は、ヌルポインタ値としてコンピュータシステムによって使用された値に対応しない可能性がある。生成されると、トリアージダンプは、外部サーバに送信され得る。
いくつかの実施形態において、上書き値は、上書きされるデータ値に応じて決定することができる。例えば、上書きされるデータ値が、第1の所定の範囲内にある場合、上書きエンジンは、第1の上書き値でデータ値を上書きすることができる。一方、上書きされるデータ値が、第2の所定の範囲内にある場合、上書きエンジンは、第2の上書き値でデータ値を上書きすることができる。
いくつかの実施形態において、選択エンジンは、上書き値を判断する。選択エンジンは、乱数発生器を使用して、さまざまな上書き値を選択することができる。上書きされたデータ値および対応する上書き値は、データ値をどのように書き換えるかのマッピングを追跡するテーブルに格納することができる。上書き値を含むテーブルの部分は、外部サーバに送信され、ユーザのプライバシーを危険にさらすことなく、トリアージダンプを解析するために使用される追加情報を提供することができる。
いくつかの実施形態において、サーバは、遠隔コンピュータからトリアージダンプを受信する。トリアージダンプは、プログラムのクラッシュおよびハングの原因を解析するのに有益である、ポインタデータを備える。トリアージダンプはまた、個人データの伝搬を防ぐため、上書き値で上書きされた潜在的個人情報を表す、書き換えられたデータ値を備える可能性がある。トリアージダンプはまた、データ値がヌルポインタ値を使用して決して書き換えられないので、書き換えられたデータから区別することができる、ヌル・ポインタ・データを備える可能性がある。
いくつかの実施形態において、サーバは、トリアージダンプのデータを書き換えるために使用される上書き値を備える値のリストを受信する。各上書き値は、問題が発生したプログラムのコールスタックを通じて、追跡することができる。これは、ソフトウェア開発者に実際のデータ値を明らかにすることなく、ソフトウェア開発者が、データ値を最初に使用したプログラム内の関数を識別することを可能にすることができる。データ値が個人情報に特性を有した場合、これにより、ユーザのプライバシーを保護する。
トリアージダンプを生成、送信、および受信するためのいくつかの方法を、コンピュータ読取り可能記憶デバイスで格納された命令を実行するコンピューティングシステムのプロセッサによって実行することができる。
以上が、添付の特許請求の範囲によって定義される非限定的な本発明の概要である。
添付図面は縮尺通りに描かれることを意図していない。図面において、さまざまな図に示される各同一またはほぼ同一の構成要素は、同様の数字によって表される。見やすくするために、すべての図面におけるすべての構成要素にラベルづけしない可能性がある。
<実施の形態の詳細な説明>
発明者は、エラー報告システムの一部としてメモリダンプを収集するための改良技術が、ユーザのプライバシーおよび個人情報に対するリスクを高めること無く、エラーを診断するための有用な追加情報を提供することができることを認識および理解している。プライバシーを保護するために、エラー報告システムにより送信されたメモリダンプのあるデータ値は、そのデータ値が個人情報の特性を有するものである場合、書き換えることが必要となるであろう。「書き換え」には、上書き値でデータ値を上書きすることを含むことができる。パスワードもしくはクレジットカード情報などの個人データを書き換えることは、個人情報が解析に関係することが滅多に無いため、メモリ・ダンプ・データを解析するためのソフトウェア開発者の能力に影響することは無いであろう。従来のエラー報告システムは、特に、トリアージダンプを形成するよう構成された場合、個人情報を特定する任意の値を書き換えることができる。
しかしながら、発明者はさらに、保持された他の情報を不明瞭にしない値でメモリダンプを書き換えることが有益であると認識している。それに応じて、上書き値は、保持されたどんな値とも異なるよう選択することができる。具体例として、上書き値は、ヌルポインタ値と書き換えられたデータ値とを区別するよう選択することができる。したがって、いくつかの実施形態において、ヌルポインタ値は、データ値を書き換えるための上書き値として使用されない。しかし、他の実施形態において、上書き値は、ポインタの有効値または値が格納された他のタイプのデータであるか、またはそうである可能性のある任意の値とは異なるよう選択することができる。
発明者はさらに、それらの値がメモリダンプから回復できない場合でさえ、上書きされた値についての情報を保持するように、メモリダンプを書き換えることが有益であると認識している。それに応じて、上書き値は、上書きされた値を部分的に基にして選択することができる。しかしながら、上書きされた値が、上書き値から回復できないような方法を選択することもできる。いくつかの実施形態において、上書きされた値は、上書きされた値と上書き値との間の多対1の関係のため、回復することができない可能性がある。例えば、上書き値が、値の各範囲と関連づけられ、同じ値が、各範囲における任意の値を上書きするために使用された場合、そのような状況が発生する可能性がある。具体例として、異なる上書き値を使用して、大きな負の値、大きな正の値、および他の値を識別することができる。そのような上書き値割り当てスキームは、例えば、オーバーランを示すか、または実行エラーにある値を識別するため、クラッシュダンプの全解析をすることができる。
いくつかの実施形態において、上書きされた値は、上書きされた値と上書き値との間のランダムな関係のため、回復することができない可能性がある。そのような状況は、値と上書き値との間のランダムマッピングが作成された場合に発生する可能性がある。そのようなマッピングは、メモリダンプ内の同じ値の複数のインスタンスを識別する際に有益である可能性があり、例えば、その変数の値を明らかにすることなく、コールスタックでの関数を通過した特定の変数を追跡するために使用することができる。
上書き値が動的に判断された状況では、選択された1つまたは複数の上書き値は、エラーレポートの一部として、またはそれと共に通信され、エラーレポートの解析を容易にすることができる。例えば、ランダムマップ内の、ランダムに選択された値のセットは、それらが上書きする関連値無しに、通信することができる。
図1は、トリアージダンプを、ソフトウェアユーザ115からソフトウェア開発者135に送信することができる、例示的ネットワーク環境100を示す。ソフトウェアユーザ115と関連したコンピュータシステム110は、クラッシュまたはハングしたプログラムを実行する可能性がある。プログラムは、任意のタイプのコンピュータプログラムとすることができる。例えば、アプリケーションプログラム、またはオペレーティング・システム・プログラムとすることができる。場合によっては、オペレーティングシステムのカーネルと関連づけられたプログラムとしてもよい。しかし、エラー情報が収集される特定の構成要素は本発明にとって重要ではない。
情報が収集されるエラーのタイプは、本発明に重要ではない。例えば、クラッシュは、プログラムが予期せず終了することを意味する。プログラム内のエラーが、カーネルの重要なコンポーネントを中断した場合、プログラムのクラッシュにより、コンピュータシステム110全体がクラッシュする可能性がある。他方で、ハングは、プログラムが動作し続ける場合でも、ユーザ入力に応答せず、フリーズを引き起こす。「ハング」および「フリーズ」という用語は、時に、区別無く使用される。エラー情報は、クラッシュ、ハング、または他の任意の適切なタイプのエラーに対して収集することができる。これらのエラーは、当分野で既知であるような技術を使用することを含む、任意の適切な方法で検出することができる。いくつかの実施形態において、情報の収集を引き起こすエラーは、任意の予期しない、または意図しない結果となる可能性がある。例えば、プログラムが性能の問題に直面し、適切な応答が無い場合に、エラーが発生する可能性がある。
プログラムのクラッシュおよびハングは、さまざまな理由に対し発生する可能性がある。例えば、開発者が説明できない不適切なデータ値が、クラッシュまたはハングをもたらす可能性がある。例えば、ヌルポインタを渡すことが、クラッシュの原因になる可能性がある。ラップ・アラウンド・エラー、すなわち、値が、その変数型に対して許可された最大値を超え、マイナス値として解釈される場合、クラッシュまたはハングの原因となる可能性がある。本発明の実施形態は、クラッシュまたはハングに対する何らかの特定の理由に限定されない。
プログラムがクラッシュまたはハングした場合、コンピュータシステム110は、トリアージダンプ140の生成を開始することができる。トリアージダンプ140は、ソフトウェア開発者135によって、クラッシュまたはハングの原因を解析するために使用することが可能である、コンピュータシステム110のメモリの小さな部分のダンプである。ダンプされたメモリの特定の部分は、コールスタックを保持するために使用されるメモリを含む可能性がある。トリアージダンプ140は、例えば、50KBよりサイズを小さくすることができる。いくつかの実施形態において、トリアージダンプ140は、10から20KBとすることができる。トリアージダンプに含まれるメモリの特定の部分は、当分野で既知であるような技術を使用することを含む任意の適切な方法で選択することができ、任意の適切なサイズにすることができる。
トリアージダンプのサイズを小さくすることで、トリアージダンプ140を、ネットワーク120上で迅速および容易に送信することができる。コンピュータネットワーク120は、任意のタイプのネットワークとすることができる。いくつかの実施形態において、ネットワーク120は、インターネットである。
トリアージダンプは、任意の適切な場所で受信することができ、この例では、ネットワーク120に接続されたサーバ150である。サーバ150は、複数のユーザからトリアージダンプを受信するよう構成することができる。この情報は、コンピュータ110ならびにエラーを同様に報告する他の同様なコンピュータで実行することができるコンポーネントで、1つまたは複数の起こり得る問題を識別するよう集約ならびに処理することができる。エラーが特定のソフトウェアのコンポーネントと関連する場合、エラー情報を、そのコンポーネントの開発者に提供することができる。
それに応じて、ソフトウェア開発者135は、サーバ150から、エラーの指摘を受信することができる。ソフトウェア開発者135は、コンピュータ130を使用して、サーバ150に格納されたデータにアクセスし、エラーのソースを調べることができる。例えば、ソフトウェア開発者135は、ソフトウェアの1人または複数のユーザ115によって送信された1つまたは複数のトリアージダンプ140を解析し、トリアージダンプ140の生成を引き起こしたクラッシュまたはハングの原因を識別することができる。
いくつかの実施形態において、ソフトウェア開発者135は、さらなる情報およびより詳細な解析を必要とするソフトウェアでの問題があると判断することができる。ソフトウェア開発者135は、同様のクラッシュまたはハングが発生した場合、コンピュータ110がユーザ115に、より詳細なメモリダンプをソフトウェア開発者135に送信するための許可を求める可能性があると、ユーザのコンピュータ110に通知することができる。例えば、ユーザ115は、個人情報を含む可能性がある、より大きなメモリダンプを送信するための許可を求められる可能性がある。ユーザが拒否した場合、より大きなメモリダンプは、送信されない。本発明の実施形態は、トリアージダンプ140またはより大きなメモリダンプの任意の特定の実装態様に限定されない。
図2は、本発明を実現することができる適切なコンピューティングシステム環境200の例を示す。例えば、コンピューティング環境200は、ユーザのコンピュータ110、ソフトウェア開発者のコンピュータ130、またはエラー報告システムのサーバ150とすることができるコンピュータ210を含む。
コンピューティングシステム環境200は、適切なコンピューティング環境の一例に過ぎず、本発明の使用または機能の範囲に何らかの限定を提案することを意図しない。コンピューティング環境200は、例示的オペレーティング環境200で示したコンポーネントの任意の1つまたは組合せに関する何らかの依存関係または要件を有すると解釈されるべきではない。
本発明は、他の多数の汎用もしくは専用コンピューティングシステム環境もしくは構成で動作する。本発明と共に使用するのに適切である可能性のある周知のコンピューティングシステム環境および/または構成の例には、これらに限定されないが、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルドもしくはラップトップデバイス、タブレット、携帯電話、マルチプロセッサシステム、マイクロプロセッサ型システム、セット・トップ・ボックス、プログラマブル民生用電子機器、ネットワークPC、ミニコンピュータ、メインフレームコンピュータ、および上記システムもしくはデバイスのいずれかを含む分散コンピューティング環境などある。
コンピューティング環境は、プログラムモジュールなどの、コンピュータ実行可能命令を実行することができる。一般に、プログラムモジュールは、特定のタスクを実行するか、または特定の抽出データ型を実施する、ルーチン、プログラム、オブジェクト、コンポーネント、およびデータ構造など含む。本発明はまた、通信ネットワークを通じてリンクされた遠隔処理デバイスによってタスクが実行される、分散コンピューティング環境で実施することができる。分散コンピューティング環境では、プログラムモジュールは、メモリ記憶デバイスを含むローカルおよび遠隔コンピュータ記憶媒体に設置することができる。
図2を参照すると、本発明を実現するための例示的システムは、コンピュータ210の形で汎用コンピューティングデバイスを含む。コンピュータ210の構成部品は、これらに限定されないが、処理ユニット220、システムメモリ230、およびシステムメモリを含むさまざまなシステム構成部品を処理ユニット220に結合するシステムバス221を含むことができる。システムバス221は、メモリバスもしくはメモリコントローラ、周辺バス、および任意のさまざまなバスアーキテクチャを使用するローカルバスを含む、任意のいくつかのタイプのバス構造体とすることができる。例えば、限定するものではないが、そのようなアーキテクチャには、業界標準アーキテクチャ(ISA)バス、マイクロ・チャネル・アーキテクチャ(MCA)バス、拡張ISA(EISA)バス、ビデオエレクトロニクス標準化協会(VESA)ローカルバス、およびメザニンバスとしても知られる周辺構成機器相互接続(PCI)バスがある。例示的システムはまた、システム・オン・チップ(SoC)を使用して実現してもよい。
典型的に、コンピュータ210は、さまざまなコンピュータ読取り可能媒体を備える。コンピュータ読取り可能媒体は、コンピュータ210によりアクセスすることができ、揮発性ならびに不揮発性媒体、リムーバブルならびに非リムーバブル媒体を含む、任意の利用可能媒体とすることができる。例えば、限定するものではないが、コンピュータ読取り可能媒体は、コンピュータ記憶媒体および通信媒体を備えることができる。コンピュータ記憶媒体は、コンピュータ読取り可能命令、データ構造、プログラムモジュール、もしくは他のデータなどの情報の記憶のための任意の方法もしくは技術で実現される、揮発性ならびに不揮発性、リムーバブルならびに非リムーバブル媒体を含む。コンピュータ記憶媒体は、これらに限定されないが、RAM、ROM、EEPROM、フラッシュメモリ、もしくは他のメモリ技術、CD−ROM、ディジタル多用途ディスク(DVD)、もしくは他の光学ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置、もしくは他の磁気記憶デバイス、または、所望の情報を格納するために使用することができ、コンピュータ210によりアクセスすることが可能な任意の他の媒体を含む。通信媒体は、典型的に、コンピュータ読取り可能命令、データ構造、プログラムモジュール、または搬送波、データ信号、もしくは他の搬送機構などの、変調データ信号における他のデータを実施し、任意の情報送達媒体を含む。「変調データ信号」という用語は、信号内の情報を符号化するように設定または変更された1つまたは複数の特性を有する信号を意味する。例えば、限定するものではないが、通信媒体は、有線ネットワークもしくは直接有線接続などの有線媒体、および音響、RF、赤外線、ならびに他の無線媒体などの無線媒体を含む。上記のいずれの組合せもまた、コンピュータ読取り可能媒体の範囲内に含まれるべきである。
システムメモリ230は、リード・オンリー・メモリ(ROM)231およびランダム・アクセス・メモリ(RAM)232などの揮発性および/または不揮発性メモリの形式のコンピュータ記憶媒体を含む。トリアージダンプ140は、ROM231もしくはRAM232のいずれか、または両方に格納されたデータを備えることができる。スタートアップ中などの、コンピュータ210内の要素の間での情報のやりとりを助ける基本ルーチンを含む、基本入出力システム233(BIOS)は、典型的に、ROM231に格納される。典型的に、RAM232は、処理ユニット220にすぐにアクセス可能であり、および/または処理ユニット220によって現在実行されている、データおよび/またはプログラムモジュールを備える。例えば、限定するものではないが、図2は、オペレーティングシステム234、アプリケーションプログラム235、他のプログラムモジュール236、およびプログラムデータ237を示し、それらのいずれも、クラッシュもしくはハングし、コンピュータ210がトリアージダンプを生成するという結果を招く可能性がある。オペレーティングシステム(OS)234のさらなる態様は、図3と関連して説明する。
コンピュータ210はまた、他のリムーバブル/非リムーバブル、揮発性/不揮発性コンピュータ記憶媒体を含む可能性がある。例に過ぎないが、図2は、非リムーバブル、不揮発性磁気媒体に読み書きするハード・ディスク・ドライブ241、リムーバブル、不揮発性磁気ディスク252に読み書きする磁気ディスクドライブ251、およびCD−ROMもしくは他の光学媒体などのリムーバブル、非不揮発性光学ディスク256に読み書きする光学ディスクドライブ255を示す。例示的オペレーティング環境で使用することができる他のリムーバブル/非リムーバブル、揮発性/不揮発性コンピュータ記憶媒体は、これらに限定されないが、磁気テープカセット、フラッシュ・メモリ・カード、ディジタル多用途ディスク、ディジタル・ビデオ・テープ、ソリッドステートRAM、およびソリッドステートROMなどを含む。ハード・ディスク・ドライブ241は、典型的に、インターフェース240などの非リムーバブル(取り外し可能でない)メモリ・インターフェースを通じてシステムバス221に接続され、磁気ディスクドライブ251および光学ディスクドライブ255は、典型的に、インターフェース250などのリムーバブル(取り外し可能な)メモリ・インターフェースによってシステムバス221に接続される。
上記した、図2に示したドライブおよびそれらに関連するコンピュータ記憶媒体は、コンピュータ読取り可能命令、データ構造、プログラムモジュール、およびコンピュータ210に対する他のデータを記憶することを提供する。図2では、例えば、ハード・ディスク・ドライブ241は、オペレーティングシステム244、アプリケーションプログラム245、他のプログラムモジュール246、およびプログラムデータ247を格納するものとして示される。これらのコンポーネントは、オペレーティングシステム234、アプリケーションプログラム235、他のプログラムモジュール236、およびプログラムデータ237と同じか、または異なるものとすることができることに留意されたい。オペレーティングシステム244、アプリケーションプログラム245、他のプログラムモジュール246、およびプログラムデータ247は、少なくとも、それらが異なるコピーであることを示すために、本明細書では異なる番号を付与する。ユーザは、コマンドおよび情報を、コンピュータ210に、キーボード262および、一般に、マウス、トラックボール、もしくはタッチパッドと称されるポインティングデバイス261などの入力デバイスを通じて入力することができる。他の入力デバイス(図示せず)には、マイクロフォン、ジョイスティック、ゲームパッド、サテライトディッシュ、パラボラアンテナ、またはスキャナなどを含むことができる。これらおよび他の入力デバイスは、しばしば、処理ユニット220に、システムバスに結合されたユーザ入力インターフェース260を通じて接続されるが、パラレルポート、ゲームポート、もしくはユニバーサル・シリアル・バス(USB)などの他のインターフェースもしくはバス構造によって接続することができる。モニタ291または他のタイプの表示デバイスはまた、システムバス221に、ビデオインターフェース290などのインターフェースを介して接続される。モニタの他に、コンピュータはまた、出力周辺インターフェース(ペリフェラル出力インタフェース)295を通じて接続することができる、スピーカ297およびプリンタ296などの他の周辺出力デバイスを備えることができる。
コンピュータ210は、遠隔コンピュータ280などの1つまたは複数の遠隔コンピュータへの論理接続を使用して、ネットワーク環境で動作することができる。遠隔コンピュータ280は、パーソナルコンピュータ、サーバ、ルータ、ネットワークPC、ピアデバイス、もしくは他の共通ネットワークノードとすることができ、典型的に、コンピュータ210に関連して上記した要素の多くまたはすべてを含むが、メモリ記憶デバイス281だけは、図2に図示した。図2に示した論理接続は、構内ネットワーク又はローカルエリアネットワーク(LAN)271および広域ネットワーク又はワイドエリアネットワーク(WAN)273を含むが、他のネットワークを含んでもよい。そのようなネットワーキング環境は、オフィス、企業規模コンピュータネットワーク、イントラネット、およびインターネットにおいて一般的である。図1に示したように、遠隔コンピュータ280は、ソフトウェア開発者のコンピュータ130またはサーバ150とすることができる。
LANネットワーキング環境で使用する場合、コンピュータ210は、LAN271に、ネットワークインターフェースまたはアダプタ270を通じて接続される。WANネットワーキング環境で使用する場合、コンピュータ210は、典型的に、モデム272、または他の手段を備え、インターネットなどのWAN273上で通信を確立する。モデム272は、内蔵もしくは外付けとすることができ、システムバス221に、ユーザ入力インターフェース260または他の適切な機構を介して接続することができる。ネットワーク化環境において、コンピュータ210に関連して示したプログラムモジュールまたはその一部は、遠隔メモリ記憶デバイスに格納することができる。例えば、限定するものではないが、図2は、メモリデバイス281上にあるような、遠隔アプリケーションプログラム285を示す。示したネットワーク接続は例示であり、コンピュータ間で通信リンクを確立する他の手段を使用することができることが理解されよう。
図3は、エラー報告システムのいくつかの実施形態で使用することができる、オペレーティングシステム(OS)234のいくつかのコンポーネントを示す。例えば、オペレーティングシステム(OS)234は、アプリケーションプログラム235などのソフトウェアがRAM232と相互通信して使用する方法を制御することができる、メモリマネージャ390を有することができる。メモリマネージャ390は、RAM232のどの部分を、所与のアプリケーションプログラム235に割り当てるかを制御することができる。OS234はまた、トリアージ・ダンプ・エンジン310を有し、トリアージダンプを生成することができる。いくつかの実施形態において、トリアージ・ダンプ・エンジン310は、メモリマネージャ390の一部としてもよい。
いくつかの実施形態において、トリアージ・ダンプ・エンジン310は、処理ユニット220で実行する1つまたは複数のソフトウェアプログラムの実行中に直面した問題に基づき、トリアージダンプの生成を開始する。本発明の実施形態は、任意の特定のタイプの問題に限定されない。例えば、プログラムでの問題は、プログラムのクラッシュによるものである可能性があり、プログラムは、不意に実行を終了する。いくつかの実施形態において、問題は、プログラムのハングである可能性があり、プログラムは、実行を続けるが、ユーザ115からのコマンドに応じて停止する。いくつかの実施形態では、クラッシュまたはハングより深刻さの少ない問題に基づきトリアージダンプの生成を開始する可能性がある。例えば、OS234のコンポーネント、アプリケーションプログラム235、または他のプログラムモジュール236などの、コンピュータ210で実行するプログラムは、トリアージ・ダンプ・エンジン310に指示して、任意の事前にプログラムした条件に基づいて、ダンプを開始することができる。
トリアージ・ダンプ・エンジン310は、個人情報の特性を有する、したがって、書き換えるべき、システムのメモリ内のデータ値を識別する識別エンジン320を備えることができる。データ値が個人情報であるのか、それともプライバシーに対する懸念の無いデータなのかを確認することは困難である可能性がある。これは、いくつかの実施形態において、メモリダンプの処理が実行されることが皆無かそれに近いためである。ユーザのコンピュータ110でメモリダンプを解析することは、かなりのリソースを必要とし、パフォーマンスの低下をもたらす可能性がある。したがって、処理および解析は、ソフトウェア開発者のコンピュータ130にオフロードされる。しかしながら、メモリ・ダンプ・データの処理をオフロードすることは、ユーザのコンピュータ110が、本質的に、非常に少ないコンテキストで数字の文字列を見るという結果になる。この数字の文字列から、識別エンジン320は、特定のデータ値が個人データであるということを確実に確かめることができない可能性がある。しかしながら、識別エンジン320は、特定のデータ値が、個人データの特性を有することを判断することができる可能性がある。任意の適切な基準を使用して、個人情報の特性を定義することができる。いくつかの実施形態において、個人情報は、他の識別可能な型ではないような値以外である値によって特徴づけられてもよい。例えば、いくつかの実施形態において、ポインタのような値は、ポインタが有効に指し示すことができるメモリアドレスの範囲内にそれらの値が入っているかどうかに基づいて識別することができる。他の値は、個人情報を特徴づけるものとして扱うことができる。しかしながら、個人情報の特性を有するデータ値を識別するいくつかの実施形態は、コンピュータ110の例示的メモリ400を図示する図4と関連して説明する。
いくつかの実施形態において、メモリ400は、複数のメモリ領域を備え、それぞれが、アドレス450およびデータ値440と関連づけられる。本願において、メモリ領域はメモリロケーション等と言及されてもよい。メモリ領域の一部のみを図4に示し、メモリの実装態様は、図を簡単にするために簡易化した。例えば、各メモリ領域は、000から999の範囲でアドレスと関連づけられる。当業者は、実際のメモリ400内には非常に多くのメモリ領域が存在する可能性があり、さらに、メモリ領域が任意の適切な方法でアドレス指定される可能性があることを認識するであろう。例えば、メモリ領域は、32ビットまたは64ビットアドレスであるアドレスを有する可能性がある。当業者はまた、メモリ400は、OS234のメモリマネージャ390によって実現される仮想メモリである可能性があることを認識するであろう。
例示目的のため、図4は、000から999の範囲の10進整数として各メモリ領域内に保持されるデータ値440を示す。しかしながら、本発明の実施形態は、そのことに限定されず、データ値440は、任意の適切な方法で、任意の適切な範囲の値を有して実現することができる。例えば、データ値440は、32ビットまたは64ビットアドレスとしてもよい。いくつかの実施形態において、データ値440のサイズは、時に、「ワードサイズ」と称され、メモリ領域アドレス450のサイズと同じである。
話を簡単にするために、すべてのメモリ領域に対するデータ値440のすべては示さない。しかしながら、データ値440の一部は、アドレス500から507を有するメモリ領域に示す。例えば、アドレス502のメモリ領域は、データ値203を保持する。
ダンプしたメモリ400のメモリ領域は、トリアージダンプのサイズを減らすために、サイズを制限することができる。ダンプされるメモリ領域の制限は、任意の方法で実現することができ、本発明の実施形態は、何らかの特定の技術に限定されない。例えば、いくつかの実施形態において、クラッシュまたはハングしたプログラムと関連づけられたメモリのみがダンプされる。いくつかの実施形態において、トリアージダンプは、プログラムのコールスタック430を保持するメモリ400の一部に、またはトリアージダンプの生成を開始する結果となる問題に直面したプログラムに対するデータを保持するコールスタックの一部のみに制限することができる。しかし、ダンプされたメモリの量および選択される方法は、本発明では重要ではなく、当分野で既知の技術を使用してまたは任意の他の適切な方法で判断することができる。
トリアージダンプを生成するためにダンプされるメモリの量にかかわらず、個人情報として特徴づけられた値は、識別エンジン320によって識別することができる。いくつかの実施形態において、識別エンジン320は、ポインタの特性を有するデータ値440を識別することができる。ポインタであるデータ値は、トリアージダンプを解析する処理において有益である。したがって、ポインタの特性を有するデータ値440は、トリアージ・ダンプ・エンジン310によって書き換えられるべきではない。前述のように、ユーザのコンピュータ110は、メモリダンプの完全な解析を実行せず、非常に少ないコンテキストで数字の文字列としてダンプを見るだけである。したがって、識別エンジン320は、特定のデータ値がポインタであると確信して識別することができないが、特定のデータ値がポインタの特性を有すると判断することができる。
データ値がポインタの特性を有すると判断することは、任意の適切な方法で行うことができる。例えば、データ値は、ポインタであるかのように扱うことができ、データ値が示すメモリ領域を調べることができる。例えば、データ値が、プログラムコード410、ライブラリコード420、またはコールスタック430と関連したメモリ領域を示す場合、データ値は維持され、上書きされない可能性がある。いくつかの実施形態において、データ値が、プログラムコード、ライブラリコード、またはコールスタックと関連したメモリ領域を示す場合、データ値は維持され、上書きされない可能性がある。いくつかの実施形態において、代替のまたは追加の関連データは、カーネル・モード・オブジェクトまたはヒープデータへのハンドルなどの、他のタイプのポインタを備えることができる。この技術を使用して保持されたデータ値のすべてが必ずしもポインタである必要はないが、メモリ領域がポインタを保持するかどうかは、許容可能な確実性のレベルで判断することができる。しかし、他の実施形態において、場合によると、ダンプデータのより完全な解析を実行するために、トリアージダンプで保持される値を判断するため、逆に、上書きされる値を判断するため、他の技術が使用される可能性があることを認識すべきである。
いくつかの実施形態において、個人情報ではないことが明らかな変数は、書き換えずに残すことができる。例えば、グローバル変数および/または動的に生成されたモジュールは、トリアージダンプを解析する際に有益である可能性があるが、個人データを含むことはないであろう。
一例として、図4は、アドレス501のメモリ領域におけるデータ値が“003”であることを示す。この値がポインタである場合、アドレス003のメモリ領域を指し示す。アドレス003のメモリ領域は、プログラムコード410と関連づけられる。したがって、認識エンジンは、アドレス501のメモリ領域を、ポインタの特性を有するものとして識別することができる。
アドレス502のメモリ領域におけるデータ値は“203”である。この値がポインタである場合、アドレス203のメモリ領域を指し示す。アドレス203のメモリ領域は、ライブラリコード420と関連づけられる。したがって、識別エンジンは、アドレス502のメモリ領域を、ポインタの特性を有するものとして識別するであろう。
アドレス504のメモリ領域におけるデータ値は“502”である。この値がポインタである場合、アドレス502のメモリ領域を指し示す。アドレス502のメモリ領域は、コールスタック430と関連づけられる。したがって、識別エンジンは、アドレス502のメモリ領域を、ポインタの特性を有するものとして識別するであろう。
他方で、アドレス505のメモリ領域におけるデータ値は“156”である。この値がポインタである場合、アドレス156のメモリ領域を指し示す。アドレス156のメモリ領域は、ソフトウェア開発者135に関心のあるメモリ領域と関連しない。したがって、識別エンジンは、アドレス502のメモリ領域を、ポインタの特性を有するものとして識別しないであろう。
いくつかの実施形態において、ポインタの特性を有さないメモリ領域は、個人情報の特性を有するメモリ領域として解釈される可能性がある。したがって、認識エンジンは、アドレス505のメモリ領域を、個人情報として識別する可能性があり、書き換える可能性がある。
いくつかの実施形態において、トリアージ・ダンプ・エンジン310は、識別エンジン320によって個人情報の特性を有すると判断されたデータ値を書き換えるための上書き値を選択するための選択エンジン330を備える。選択エンジンは、任意の適切な方法で、上書き値を選択することができる。いくつかの実施形態において、単一の上書き値を、すべてのデータ値に対して使用することができる。例えば、図4の簡易化されたメモリ400において、個人情報の特性を有すると識別されたデータ値のそれぞれは、上書き値999で上書きすることができる。そのような上書き値は、この具体例において、ポインタに対する値、またはヌルポインタの値に対応しないため、選択することができる。
図5Aは、テーブル500として、図4のアドレス501から507のメモリ領域と関連づけられた、メモリアドレス510およびデータ値520を示す。アドレス503、505、および506のメモリ領域に対するデータ値は、個人情報の特性を有することが識別エンジンによって識別されたデータ値であることを示すために下線が引かれている。図5Bは、個人情報の特性を有するデータ値が、単一の上書き値“999”で書き換えられた場合の、トリアージダンプで見られるであろう値をデータ値550が有する、テーブル530を示す。
当業者には、任意の上書き値を使用することができることは明らかかであろう。いくつかの実施形態において、上書き値は、ヌルポインタ値以外のものとすることができる。「ヌルポインタ値」は、コンピュータシステム210が、データの欠如を示すために使用する値である。ヌルポインタ値は、コンピュータシステムによって決定された任意の値とすることができ、任意の特定の数量に限定されない。例えば、図4および図5Aの例において、アドレス507のメモリ領域は、値000を備える。この例において、000は、ヌルポインタ値である。したがって、他のデータ値を書き換えるために使用される上書き値は、000にしてはいけない。ソフトウェア開発者135が、元々ヌルポインタ値であったデータ値を、書き換えられたデータ値と区別することができるよう制限する。
当業者は、本発明の実施形態が、8個または16個の16進数字の16進値によってそれぞれ表すことができる、32ビットワードまたは64ビットワードであるデータ値を使用することができることを認識するであろう。例えば、32ビットシステムにおいて、32ビットすべてが“1”である場合、16進数0xFFFFFFFFによって表される。いくつかの実施形態において、すべてのデータ値を書き換えるための上書き値は、同じ16進数としてもよい。例えば、0xCCCCCCCCを、すべての書き換えに使用する所定の上書き値とすることができる。
いくつかの実施形態において、選択された上書き値は、上書きするデータ値の関数とすることができる。このようにして、より多くの情報を、何らかの個人情報を送信することなく、ソフトウェア開発者135に伝えることができる。例えば、第1の範囲内のすべてのデータ値は、第1の上書き値で上書きすることができ、一方、第2の範囲内のすべてのデータ値は、第2の上書き値で上書きすることができる。この技術を使用する一実施形態は、図5Cにおけるテーブル570によって示される。この例において、書き換えられる1から149の範囲内のデータ値は、上書き値999で上書きされ、書き換えられる150から299の範囲のデータ値は、上書き値998で上書きされ、さらに、書き換えられる850から999の範囲のデータ値は、上書き値997で上書きされる。これらの上書きされた値590は、テーブル570に示される。
いくつかの実施形態において、負の値、すなわち大きな負の値を表すデータ値が、特定の値で書き換えられた場合、ソフトウェア開発者135によって実行される解析の助けとなる可能性がある。これは、ソフトウェアにおけるラップ・アラウンド・エラーを識別する助けとなるであろう。大きな負の値を識別するために使用される特定の基準は、ワードサイズおよび他のファクタに左右される可能性がある。しかし、一例として、特定の上書き値と関連づけられる大きな負の値は、閾値より大きい大きさを有するものとして識別される可能性がある。この閾値は、任意の適切な方法で選択することができる。しかし、具体例において、閾値は、コンピュータシステムが表すことのできる最も大きな負の値の15%以内に、または、いくつかの実施形態において、10%以内になるよう、選択することができる。同様の技術を使用して、大きな正の値を識別すること、および異なる上書き値を大きな正の値と関連づけることができる。
いくつかの実施形態において、選択された上書き値は、メモリ領域と関連づけられたメモリ保護オプションの機能とすることができる。例えば、メモリ領域は、読取り専用、実行専用、実行ならびに読み取り、または任意の他のメモリ保護オプションであるメモリ・ページに格納することができる。一例として、32ビットシステムは、上書き値0x00000010を使用して、読取り専用メモリに格納された個人情報と判断されたすべてのデータ値を書き換えることができる。同じシステムは、上書き値0x00000020を使用して、実行専用メモリに格納された個人情報と判断されたすべてのデータ値を書き換えることができ、それらのダンプされたデータ値を有するメモリ領域の数は、総メモリのごく一部に制限される。
いくつかの実施形態において、選択エンジンは、乱数発生器335を使用して、ランタイムで上書き値を生成することができる。当業者は、乱数発生器335が、当分野で既知の技術を使用する任意の適切な方法で実現することができることを理解するであろう。例えば、乱数発生器335は、選択エンジン330のコンポーネントとすることができ、または、選択エンジンによって、乱数をもたらすために呼び出されるOS234のコンポーネントとすることができる。当業者はまた、乱数発生器335を、擬似乱数発生器、または擬似乱数発生器を提供する任意のコンポーネントとしてもよいことを理解するであろう。
いくつかの実施形態において、異なる乱数が、書き換えられた各データ値に対して選択される。乱数を、特定の範囲の値に制限することもまた有益であろう。例えば、図4の例において、上書き値は、900から999の範囲に制限することができる。したがって、書き換えられる各データ値に対して、選択エンジン330は、特定の範囲内で値をランダムに生成し、上書き値として使用する。このことは、いくつかの実施形態で、上書き値が、トリアージダンプ生成処理において書き換えられなかったデータ値のいずれとも一致しないことを保証することができる。上書き値が、書き換えられなかったトリアージダンプにおけるデータ値のいずれとも一致しないことを保証することは、任意の適切な方法で行うことができる。例えば、乱数発生器からの値は、フィルタされて、書き換えられなかったトリアージダンプ値のいずれとの衝突も避けることができる。
同じデータ値の各インスタンスに対して同じランダムな上書き値を使用することによって、より多くの情報を、ソフトウェア開発者135にもたらすことができる。例えば、この方法で生成した情報は、ソフトウェア開発者135が、コールスタックによりデータを追跡すること、およびソースで問題を識別することの助けとすることができる。同じランダムな上書き値は、書き換えられたデータ値、およびデータ値が上書きされたランダムな上書き値の追跡を続けることによって選択することができる。この情報は、任意の適切な方法でマッピングすることができる。例えば、データ値およびランダムな上書き値は、テーブルに格納することができる。したがって、選択エンジン330が、書き換えるべき次のデータ値に直面すると、選択エンジンは、まず、テーブルをチェックし、データ値が以前に書き換えられたかどうかを判断する。その場合、次いで、テーブルで示された同じランダムな上書き値を使用して、次のデータ値を書き換える。そうでなければ、新しいランダムデータ値を選択して、テーブルに追加する。ユーザ115のプライバシーは、この方法で、依然として維持され、というのも、全マッピング情報を有するのはユーザのコンピュータ110のみだからである。トリアージダンプが外部サーバ150に送信されると、上書き値のみが送信され、元のデータ値は送信されない。したがって、ソフトウェア開発者135は、トリアージダンプの値が、ユーザの個人情報のいずれも明らかにすることなく、書き換えられたと知らされる。
トリアージ・ダンプ・エンジン310は、個人情報の特性を有すると判断されたデータ値を、選択エンジン330によって選択された上書き値で実際に上書きするための上書きエンジン340を備えることができる。データ値を上書きすることは、任意の適切な方法で実行することができる。例えば、データ値は、まず、別々のファイルに対してダンプされ、次いで、ファイル内で上書きされてもよい。しかし、他の手法を使用してもよい。いくつかの実施形態において、例えば、上書きは、メモリ400内で直接実行してもよく、または、データ値をファイルにコピーしている際に実行してもよい。前述のように、ヌルポインタ値と同じ値を有するデータ値を維持するために有益である可能性がある。したがって、ヌルポインタ値が、コンピュータOS234によって定義されたように、ポインタの特性に合うよう扱われた場合でさえ、ヌルポインタ値を保持することができる。例えば、32ビットシステムにおいて、ヌルポインタ値は、0x00000000とすることができる。
トリアージ・ダンプ・エンジン310は、トリアージダンプをコンピュータシステム110の外部に送信するために、通信エンジン350を備えることができる。通信エンジンは、任意の適切な方法で動作することができる。例えば、通信エンジンは、トリアージダンプを、当分野で既知のエラー報告技術を使用して、外部サーバ150に送信することができる。サーバ150は、ソフトウェア開発者135と関連づけることができる。
図6を参照すると、トリアージダンプを生成するための実施形態の方法についてのフローチャートを示す。この方法は、トリアージ・ダンプ・エンジン310、または任意の他の適切なコンポーネントにより実行することができる。方法600は、602で、トリアージダンプの生成を始めることによって開始する。トリアージダンプの生成は、任意の適切な方法で開始することができる。いくつかの実施形態において、コンピュータシステム110において発生する何らかの条件に対する応答により開始する。例えば、条件とは、処理ユニット220で実行するソフトウェアでの何らかの種類の問題である可能性がある。問題とは、プログラムのクラッシュまたはハングである可能性がある。そのような条件は、当分野で既知の技術を使用して検出することができる。しかしながら、本発明の実施形態は、任意の特定の開始ステップに限定されない。
方法600は、動作604で続けることができ、識別エンジンが、保持対象である、メモリ内に格納されたデータ値を識別する。この例において、値は、ポインタの特性を有するかどうかに基づいて識別される。ポインタであるデータ値は、後にトリアージダンプの解析をするために有益であり、そのため、この例では書き換えない可能性がある。識別するための任意の適切な方法を使用することができる。例えば、データ値がポインタである場合に、データ値が指し示す位置をテストする上述の技術を使用することができる。いくつかの実施形態において、ポインタとして解釈された場合のデータ値が、トリアージダンプ生成を開始したソフトウェアプログラムの現在状態に関連すると判断されたメモリの部分を指し示す場合、データ値は、ポインタの特性を有すると識別される可能性がある。関連するデータ値は、プログラムコード、ライブラリコード、またはコールスタックと関連づけられたデータである可能性がある。いくつかの実施形態において、関連するデータは、他のポインタ、カーネル・モード・オブジェクトに対するハンドル、またはヒープデータを備えることができる。
方法600は、動作606で続けることができ、識別エンジン320が、個人データの特性を有する、メモリ内に格納されたデータ値を識別する。個人情報であるデータ値は、後の解析に有益である可能性はなく、ユーザのプライバシーを保証するために書き換えることができる。識別するための任意の適切な方法を使用することができる。例えば、動作604においてポインタの特性を有すると識別されなかった、または保持対象と識別されなかったデータ値は、個人データの特性を有すると識別することができる。
方法600は、動作608で続けることができ、選択エンジン330により、識別したデータ値を書き換える上書き値を選択する。上書き値を選択するための任意の適切な方法を使用することができる。例えば、上書き値を選択するための上記技術のいずれかを使用することができる。いくつかの実施形態において、同じ上書き値を、すべてのデータ値に対して使用することができる。他の実施形態において、上書き値は、上書きされるデータ値に基づく可能性がある。いくつかの実施形態において、上書き値は、乱数発生器を使用して、ランダムに選択される。
方法600は、動作610で続けることができ、上書きエンジン340が、動作608で選択された上書き値で、個人データの特性を有すると識別された各データ値を上書きする。上書きするための任意の適切な方法を使用することができる。例えば、前述のように、上書きは、別々のトリアージ・ダンプ・ファイルにおいて、またはメモリ400自体において、行うことができる。
方法600は、動作612で続けることができ、通信エンジンが、生成したトリアージダンプを、外部サーバに送信する。送信するための任意の適切な方法を使用することができる。例えば、前述のように、トリアージダンプは、コンピュータネットワーク120上で送信することができる。いくつかの実施形態において、トリアージダンプは、ディスク上に配置することができ、任意の適切な方法で、開発者に配信することができる。他の例において、トリアージダンプは、ソフトウェア開発者によって使用されるコンピュータで生成することができ、したがって、トリアージダンプが生成されたのと同じコンピュータで直接格納することができる。方法600は、トリアージダンプをソフトウェア開発者に送信した後、動作614で終了する。
図6は、トリアージ・ダンプ・ファイルを生成するために使用することができる方法の一例であるが、他の方法を使用してもよいことを認識すべきである。トリアージダンプを生成するための他の例示的方法700を、図7のフローチャートで示す。動作702で、識別エンジンが、上書きするデータ値を決定することができる。上記のように、この動作702は、任意の適切な方法で実現することができる。
方法700は、動作704で続けることができ、識別されたデータ値が、以前に上書きされたデータ値と比較される。識別されたデータ値が、以前に書き換えられなかった場合、上書き値は、動作706で、データ値に対して決定される。この決定706は、任意の適切な方法で実現することができる。例えば、乱数発生器を使用して、ランダムな上書き値を生成することができる。いくつかの実施形態において、ランダムな上書き値は、所定の範囲の値となるよう制限することができ、および/または他の方法で制限することができ、各上書き値が、上書きされるただ1つの値に対応することを保証する。
上書き値が動作706で決定されると、方法700は、動作708で続けることができ、決定された上書き値が、データ値と共にテーブルに格納され、その結果、トリアージ・ダンプ・エンジン310は、以下に説明するように、動作704を実現する後続の繰返しにおいて、データ値を検索することができる。
動作704で、トリアージ・ダンプ・エンジン310によってデータ値が以前に書き換えられたと判断された場合、方法700は動作710で継続し、特定のデータ値に対して以前に使用された上書き値が、コンピュータのメモリに格納されたテーブル内で検索され、トリアージ・ダンプ・エンジン310によって維持される。
データ値が以前に書き換えられなかった場合の動作708、またはデータ値が以前に書き換えられた場合の動作710のいずれかの後、方法700は動作712で継続する。動作712で、上書きエンジン340は、データ値を、決定した上書き値で上書きし、その上書き値は、動作710におけるテーブルからか、または動作706において新しい上書き値を生成することによって決定される。
方法700は、動作714で継続し、書き換える必要があるデータ値がまだあるかどうかを判断する。トリアージダンプの生成を完了する前に書き換える必要のあるデータ値がまだあると判断した場合、方法700は動作702に戻り、上述の動作をさらに繰り返す。動作714で、書き換える必要のあるデータ値がもう無いと判断されると、本方法は動作716に続き、生成したトリアージダンプを、ソフトウェア開発者によって解析するために、外部サーバに送信する。本方法は、その後、動作718で終了する。
図6および図7と関連して説明した上記方法の実施形態は、本明細書で説明した動作のそれぞれ、およびすべてを実行するために制限されない。本方法のすべての動作は、上記したそのままの順序で実行する必要はない。例えば、いくつかの実施形態では、動作606において個人データの特性を有するデータ値を識別した後、動作604でポインタの特性を有するデータ値を識別することができる。他の実施形態において、ポインタの特性を有するデータ値を識別する動作604を全く実行しなくてもよい。当業者は、上記実施形態が、本発明の態様を使用する方法の特定の例に過ぎないことを理解するであろう。
上記のように、データ値を書き換える目的は、トリアージダンプのサイズを減らすためではなく、ソフトウェアユーザのプライバシーを保護することであることにも留意すべきである。しかしながら、トリアージダンプの書き換えは、圧縮を使用した場合、トリアージダンプのサイズを減らすことができる。トリアージダンプは、当分野で既知の、任意の適切な方法で圧縮することができる。
したがって、本発明の少なくとも1つの実施形態のいくつかの態様を説明したが、種々の変更、修正、および改良が当業者には容易に行えるであろうことを理解されたい。
そのような変更、修正、および改良は、本開示の一部であることが意図され、さらに本発明の精神および範囲内にあることが意図される。さらに、本発明の利点を示したが、本発明のすべての実施形態が記載した利点のすべてを必ずしも含まないことが理解されるべきである。いくつかの実施形態は、本明細書およびいくつかの例において利点として説明した特徴のいずれかを実施しない可能性がある。したがって、上記説明および図面は、例に過ぎない。
上述した本発明の実施形態は、任意の多数の方法で実現することができる。例えば、本実施形態は、ハードウェア、ソフトウェア、またはそれらの組合せを使用して実現することができる。ソフトウェアで実現する場合、ソフトウェアコードは、単一のコンピュータ内に設けられるか、または複数のコンピュータ間に分散される、任意の適切なプロセッサ、またはプロセッサの集合で実行することができる。そのようなプロセッサは、集積回路部品内に1つまたは複数のプロセッサを有する、集積回路として実現してもよい。しかし、プロセッサは、任意の適切なフォーマットで、回路を使用して実現してもよい。
また、本明細書で概説したさまざまな方法または処理は、さまざまなオペレーティングシステムまたはプラットフォームの任意の1つを使用する1つまたは複数のプロセッサで実行可能なソフトウェアとしてコーディングすることができる。さらに、そのようなソフトウェアは、多くの適切なプログラミング言語および/またはプログラミングもしくはスクリプティングツールのいずれかを使用して書いてもよく、またフレームワークもしくは仮想マシンで実行される実行可能な機械語コードもしくは中間コードとしてコンパイルすることができる。
「プログラム」または「ソフトウェア」という用語を一般的な意味で本明細書において使用する場合、上記のような本発明のさまざまな態様を実現するために、コンピュータもしくは他のプロセッサをプログラムするために使用することができる、任意のタイプのコンピュータコードもしくはコンピュータ実行可能命令のセットのことを意味する。さらに、本実施形態の一態様によれば、本発明の実行方法が実行された場合に、1つまたは複数のコンピュータプログラムは、単一コンピュータもしくはプロセッサ上にある必要はないが、本発明のさまざまな態様を実施するために、多数の異なるコンピュータもしくはプロセッサ間で、モジュラ方式で分散させてもよいことを認識すべきである。
コンピュータ実行可能命令は、1つまたは複数のコンピュータまたは他のデバイスによって実行される、プログラムモジュールなどの、多くの形式をとることができる。一般に、プログラムモジュールは、特定のタスクを実行するか、または特定の抽出データ型を実施する、ルーチン、プログラム、オブジェクト、コンポーネント、およびデータ構造など含む。典型的に、プログラムモジュールの関数は、さまざまな実施形態において要望されるように組み合わせるか、または分散することができる。
また、データ構造は、任意の適切な形式で、コンピュータ読取り可能媒体に格納することができる。図面を簡単にするために、テーブルなどのデータ構造は、データ構造内の位置を通じて関連したフィールドを有するよう示すことができる。そのような関連は、フィールドに対する記憶領域を、フィールド間の関連を伝えるコンピュータ読取り可能媒体内の位置に割り当てることによって、同じように達成してもよい。しかしながら、任意の適切な機構を使用して、データ構造のフィールドにおける情報間の関連を確立することができ、ポインタ、タグ、または、データ要素間の関連を確立する他の機構の使用によるものを含む。
本発明のさまざまな態様は、単独で、組み合わせて、または上記した実施形態において具体的に説明していないさまざまな構成で使用することができ、したがって、その用途は、上記した、または図面に示した構成要素の詳細および構成に限定されない。例えば、一実施形態において説明した態様は、他の実施形態で説明した態様と、任意の方法で組み合わせることができる。
また、本発明は、少なくとも1つの例を提供した方法として実施することができる。本方法の一部として実行した動作は、任意の適切な方法で配列することができる。それに応じて、実施形態は、図示とは異なる順序で動作を実行するよう構成することができ、例示的実施形態では連続的な動作として示したが、いくつかの動作を同時に実行することを含むことができる。
クレーム要素(発明特定事項)を修飾するための請求項における「第1の」「第2の」「第3の」などのような順序を表す用語の使用は、それ自体によって、1つの方法の動作を実行する他のもしくは時間的順序にわたる1つのクレーム要素の何らかの優先度、優先順位、または順序を意味するものではないが、単にラベルとして使用され、(順序を表す用語の使用を別にすれば)ある名前を有する1つのクレーム要素を、同じ名前を有する他の要素と区別し、クレーム要素を区別する。
また、本明細書で使用される表現および用語は、説明の目的のためであり、限定するものとみなされるべきではない。本明細書での「含む」「備える」または「有する」「含有する」「伴う」およびそれらのバリエーションの使用は、その後に列挙される項目およびその等価物、ならびに追加項目を包含することを意味する。

Claims (10)

  1. プロセッサと、データを格納するための少なくとも1つのメモリとを備えるコンピュータシステム内でトリアージダンプを生成する方法であって、前記メモリは、複数のメモリ領域を備え、前記方法は、
    前記複数のメモリ領域に格納される第1の複数のデータ値を識別するステップであって、前記第1の複数のデータ値のそれぞれが個人情報の特性を有する、ステップと、
    前記第1の複数のデータ値のそれぞれを、ヌルポインタの値には対応していない1つ以上の上書き値で上書きするステップと
    を有する方法。
  2. 前記複数のメモリ領域に格納される第2の複数のデータ値を識別するステップであって、前記第2の複数のデータ値のそれぞれが、ポインタの特性を有する、ステップと、
    前記第2の複数のデータ値を変更せずに残すステップと
    を有する、請求項1に記載の方法。
  3. 前記ポインタの特性を有する前記第2の複数のデータ値のうちの第1のデータ値が、第1のメモリ領域のアドレスに対応し、前記第1のメモリ領域は、プログラムコード、ライブラリコード、またはコールスタックに関連づけられている、請求項2に記載の方法。
  4. 前記複数のデータ値のうち第1のデータ値に対する上書き値は、該第1のデータ値に依存する、請求項1に記載の方法。
  5. 前記第1のデータ値に対する前記上書き値は、前記第1のデータ値が第1の範囲内の値に属する場合には第1の上書き値であり、
    前記第1のデータ値に対する前記上書き値は、前記第1のデータ値が第2の範囲内の値に属する場合には第2の上書き値である、請求項4に記載の方法。
  6. コンピューティングデバイスであって、
    1つ以上のコンピュータプログラムを実行する少なくとも1つのプロセッサと、
    前記1つ以上のコンピュータプログラムによって使用されるデータを格納する複数のメモリ領域を有する少なくとも1つのメモリと、
    トリアージダンプを作成するトリアージ・ダンプ・エンジンと
    を備え、前記トリアージ・ダンプ・エンジンは、
    前記複数のメモリ領域に格納される複数のデータ値を識別する識別エンジンであって、前記複数のデータ値のそれぞれが個人情報の特性を有する、識別エンジンと、
    識別された複数のデータ値のそれぞれに対する上書き値を、複数の上書き値の候補の中から選択する選択エンジンと、
    前記識別された複数のデータ値のそれぞれを、選択した上書き値で上書きする上書きエンジンと
    を備える、コンピューティングデバイス。
  7. 前記選択エンジンは、前記複数のデータ値の第1のデータ値に対する上書き値を、前記第1のデータ値に基づいて選択する、請求項6に記載のコンピューティングデバイス。
  8. 前記選択エンジンは、前記第1のデータ値が第1の範囲内の値に属する場合には、前記第1のデータ値に対して第1の上書き値を選択し、
    前記選択エンジンは、前記第1のデータ値が第2の範囲内の値に属する場合には、前記第1のデータ値に対して第2の上書き値を選択する、請求項7に記載のコンピューティングデバイス。
  9. データ値の前記第1の範囲が負の値を含む、請求項8に記載のコンピューティングデバイス。
  10. 前記選択エンジンは、前記複数のデータ値の第2のデータ値に対する上書き値を、前記第2のデータ値に基づいて選択し、
    前記選択エンジンは、前記第2のデータ値が値の前記第1の範囲内にある場合には前記第1の上書き値を選択し、
    前記選択エンジンは、前記第2のデータ値が値の前記第2の範囲内にある場合には前記第2の上書き値を選択する、請求項8に記載のコンピューティングデバイス。
JP2014529673A 2011-09-12 2011-10-09 トリアージダンプの生成方法及びコンピューティングデバイス Active JP5875690B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/230,588 US8645763B2 (en) 2011-09-12 2011-09-12 Memory dump with expanded data and user privacy protection
US13/230,588 2011-09-12
PCT/US2011/055517 WO2013039519A1 (en) 2011-09-12 2011-10-09 Memory dump with expanded data and user privacy protection

Publications (2)

Publication Number Publication Date
JP2014530392A true JP2014530392A (ja) 2014-11-17
JP5875690B2 JP5875690B2 (ja) 2016-03-02

Family

ID=47445839

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014529673A Active JP5875690B2 (ja) 2011-09-12 2011-10-09 トリアージダンプの生成方法及びコンピューティングデバイス

Country Status (6)

Country Link
US (1) US8645763B2 (ja)
EP (1) EP2756400B1 (ja)
JP (1) JP5875690B2 (ja)
KR (1) KR101759379B1 (ja)
CN (1) CN102866961B (ja)
WO (1) WO2013039519A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018120297A (ja) * 2017-01-23 2018-08-02 富士通株式会社 情報処理装置、情報処理装置の制御方法及び情報処理装置の制御プログラム
WO2018220923A1 (ja) * 2017-05-30 2018-12-06 オムロン株式会社 プログラム開発支援装置、プログラム開発支援システム、プログラム開発支援方法、および、プログラム開発支援プログラム

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9218234B2 (en) * 2012-04-27 2015-12-22 Marvell World Trade Ltd. Memory dump and analysis in a computer system
CN103530199B (zh) * 2012-07-02 2015-12-02 腾讯科技(深圳)有限公司 一种修复软件运行错误的方法、装置及系统
US9043653B2 (en) * 2012-08-31 2015-05-26 International Business Machines Corporation Introspection of software program components and conditional generation of memory dump
US9825884B2 (en) 2013-12-30 2017-11-21 Cavium, Inc. Protocol independent programmable switch (PIPS) software defined data center networks
CN104750605B (zh) * 2013-12-30 2018-08-14 伊姆西公司 将内核对象信息包括在用户转储中
EP2911083B1 (fr) * 2014-02-24 2016-09-28 Nagravision S.A. Méthode d'accès aux données d'au moins une personne physique ou morale ou d'un objet
US9473601B2 (en) * 2014-06-19 2016-10-18 Cavium, Inc. Method of representing a generic format header using continuous bytes and an apparatus thereof
US10616380B2 (en) 2014-06-19 2020-04-07 Cavium, Llc Method of handling large protocol layers for configurable extraction of layer information and an apparatus thereof
US9635146B2 (en) 2014-06-19 2017-04-25 Cavium, Inc. Method of using bit vectors to allow expansion and collapse of header layers within packets for enabling flexible modifications and an apparatus thereof
CN104834868A (zh) * 2015-04-28 2015-08-12 一铂有限公司 电子数据保护方法、装置及终端设备
US9727242B2 (en) 2015-06-10 2017-08-08 International Business Machines Corporation Selective memory dump using usertokens
CN106326022B (zh) * 2015-06-26 2019-05-10 伊姆西公司 转储的自动分配方法和设备
US10067919B2 (en) * 2015-12-04 2018-09-04 Verizon Patent And Licensing Inc. Feedback tool
US10242078B2 (en) * 2016-03-23 2019-03-26 International Business Machines Corporation Data dump formatting utilizing dynamically created control structures
JP2017220112A (ja) * 2016-06-09 2017-12-14 キヤノン株式会社 データ管理システム、制御方法、およびプログラム
US20170364400A1 (en) * 2016-06-15 2017-12-21 International Business Machines Corporation Method for debugging static memory corruption
US10514972B2 (en) * 2018-04-27 2019-12-24 Dell Products L. P. Embedding forensic and triage data in memory dumps
TWI688861B (zh) * 2018-09-18 2020-03-21 新唐科技股份有限公司 資料處理裝置及其資料保護方法
CN111190833B (zh) * 2019-11-26 2023-03-24 腾讯云计算(北京)有限责任公司 敏感数据检测方法、装置、存储介质及设备
US11638040B2 (en) 2020-08-24 2023-04-25 Schmied Enterprises LLC Eco-friendly codec-based system for low latency transmission
CN114064132B (zh) * 2021-09-30 2023-07-21 中科创达软件股份有限公司 一种系统宕机恢复方法、装置、设备和系统

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003186749A (ja) * 2001-12-19 2003-07-04 Fujitsu Ltd コンピュータ、メモリダンプ方法およびメモリダンププログラム
JP2005071196A (ja) * 2003-08-27 2005-03-17 Hitachi Ltd ディスクアレイ装置、及びその障害情報の制御方法
JP2007172414A (ja) * 2005-12-23 2007-07-05 Fuji Soft Inc 組込機器向けのコンパクトコアダンププログラム及びコンパクトコアダンプを用いた方法
US20080126301A1 (en) * 2006-08-02 2008-05-29 International Business Machines Corporation Locating and altering sensitive information in core dumps
US20090172409A1 (en) * 2007-12-29 2009-07-02 International Business Machines Corporation Core dump privacy during application failure
CN103067918A (zh) * 2012-12-25 2013-04-24 华为技术有限公司 一种通信网络中隐私数据匿名化方法、装置及系统

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0586767A1 (en) 1992-09-11 1994-03-16 International Business Machines Corporation Selective data capture for software exception conditions
JPH07210429A (ja) 1994-01-11 1995-08-11 Hitachi Ltd ダンプ取得方法および制御装置および情報処理システム
US6321295B1 (en) 1998-03-19 2001-11-20 Insilicon Corporation System and method for selective transfer of application data between storage devices of a computer system through utilization of dynamic memory allocation
US6553347B1 (en) 1999-01-25 2003-04-22 Active Point Ltd. Automatic virtual negotiations
US7028056B1 (en) 2000-04-14 2006-04-11 Microsoft Corporation Method and arrangements for generating debugging information following software failures
US20070011450A1 (en) 2004-09-14 2007-01-11 Mccreight Shawn System and method for concurrent discovery and survey of networked devices
US7290175B1 (en) 2002-08-26 2007-10-30 Unisys Corporation Forcing a memory dump for computer system diagnosis
US7062681B2 (en) 2002-12-03 2006-06-13 Microsoft Corporation Method and system for generically reporting events occurring within a computer system
JP2004213216A (ja) 2002-12-27 2004-07-29 Renesas Technology Corp 情報セキュリティマイクロコンピュータ、そのプログラム開発装置およびそれらを含んだプログラム開発システム
US20080294839A1 (en) 2004-03-29 2008-11-27 Bell Michael I System and method for dumping memory in computer systems
US7490268B2 (en) * 2004-06-01 2009-02-10 The Trustees Of Columbia University In The City Of New York Methods and systems for repairing applications
US7607123B2 (en) 2004-09-21 2009-10-20 Hewlett-Packard Development Company, L.P. Systems and methods for validating debug information for optimized code
US7380171B2 (en) * 2004-12-06 2008-05-27 Microsoft Corporation Controlling software failure data reporting and responses
US7693849B2 (en) 2005-05-19 2010-04-06 International Business Machines Corporation Masking object data based on user authorization
US7702959B2 (en) 2005-08-02 2010-04-20 Nhn Corporation Error management system and method of using the same
JP4846493B2 (ja) 2006-09-05 2011-12-28 富士通セミコンダクター株式会社 デバッグシステム及びデバッグ回路
US8122517B2 (en) * 2008-04-02 2012-02-21 International Business Machines Corporation Mediated access of software dumped data through specialized analysis modules
US8166313B2 (en) 2008-05-08 2012-04-24 Fedtke Stephen U Method and apparatus for dump and log anonymization (DALA)
US20090327809A1 (en) 2008-06-26 2009-12-31 Microsoft Corporation Domain-specific guidance service for software development
US7930597B2 (en) 2008-09-18 2011-04-19 Alcatel-Lucent Usa Inc. Method and apparatus for validating system properties exhibited in execution traces
US10102398B2 (en) * 2009-06-01 2018-10-16 Ab Initio Technology Llc Generating obfuscated data
US9383970B2 (en) * 2009-08-13 2016-07-05 Microsoft Technology Licensing, Llc Distributed analytics platform
US8713350B2 (en) 2009-12-08 2014-04-29 Hewlett-Packard Development Company, L.P. Handling errors in a data processing system
JP2012118884A (ja) 2010-12-02 2012-06-21 Toshiba Corp プロセッサ及び半導体装置
JP5225412B2 (ja) 2011-03-03 2013-07-03 株式会社東芝 通信装置および通信方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003186749A (ja) * 2001-12-19 2003-07-04 Fujitsu Ltd コンピュータ、メモリダンプ方法およびメモリダンププログラム
JP2005071196A (ja) * 2003-08-27 2005-03-17 Hitachi Ltd ディスクアレイ装置、及びその障害情報の制御方法
JP2007172414A (ja) * 2005-12-23 2007-07-05 Fuji Soft Inc 組込機器向けのコンパクトコアダンププログラム及びコンパクトコアダンプを用いた方法
US20080126301A1 (en) * 2006-08-02 2008-05-29 International Business Machines Corporation Locating and altering sensitive information in core dumps
US20090172409A1 (en) * 2007-12-29 2009-07-02 International Business Machines Corporation Core dump privacy during application failure
CN103067918A (zh) * 2012-12-25 2013-04-24 华为技术有限公司 一种通信网络中隐私数据匿名化方法、装置及系统

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
JPN6015032938; Michael Cherry: '"Windows Error Reportingバグ追跡の仕組みを探る"' Directions on Microsoft 第20号, 20030715, p.17-21, 株式会社メディアセレクト *
JPN6015032941; 中田 敦: '"Windows XP 知らないと怖い「プロの常識」"' 日経Windowsプロ no.103, 20051001, p.60, 日経BP社 *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018120297A (ja) * 2017-01-23 2018-08-02 富士通株式会社 情報処理装置、情報処理装置の制御方法及び情報処理装置の制御プログラム
WO2018220923A1 (ja) * 2017-05-30 2018-12-06 オムロン株式会社 プログラム開発支援装置、プログラム開発支援システム、プログラム開発支援方法、および、プログラム開発支援プログラム
JP2018205826A (ja) * 2017-05-30 2018-12-27 オムロン株式会社 プログラム開発支援装置、プログラム開発支援システム、プログラム開発支援方法、および、プログラム開発支援プログラム
US11287789B2 (en) 2017-05-30 2022-03-29 Omron Corporation Program development support device, program development support system, program development support method, and non-transitory computer-readable recording medium

Also Published As

Publication number Publication date
WO2013039519A1 (en) 2013-03-21
EP2756400B1 (en) 2020-12-23
CN102866961A (zh) 2013-01-09
EP2756400A1 (en) 2014-07-23
KR101759379B1 (ko) 2017-07-18
KR20140061443A (ko) 2014-05-21
CN102866961B (zh) 2016-06-22
EP2756400A4 (en) 2015-05-20
US8645763B2 (en) 2014-02-04
JP5875690B2 (ja) 2016-03-02
US20130067285A1 (en) 2013-03-14

Similar Documents

Publication Publication Date Title
JP5875690B2 (ja) トリアージダンプの生成方法及びコンピューティングデバイス
US8510523B2 (en) Memory dump with expanded data and user privacy protection
US11163702B2 (en) Apparatus and method for handling page protection faults in a computing system
US8875288B2 (en) Taint tracking mechanism for computer security
US8782607B2 (en) Contract failure behavior with escalation policy
US20060095895A1 (en) Method and apparatus for inserting code
US20140122826A1 (en) Detecting memory corruption
US10346199B2 (en) Handling exceptions related to corrupt application state
JPWO2005024630A1 (ja) 不正コードの防止方法および防止プログラム
Tang et al. Exploring control flow guard in windows 10
US10120738B2 (en) Hypervisor techniques for performing non-faulting reads in virtual machines
MX2007011026A (es) Metodo y sistema para la deteccion de codigo extrano.
US8752025B2 (en) Protecting breakpoints in a software debugger
US10311233B2 (en) Generic unpacking of program binaries
JP2018508883A (ja) 汚染されているデータをトラッキングするためのメカニズム
Bojanova et al. Classifying memory bugs using bugs framework approach
US10592267B2 (en) Tree structure for storing monitored memory page data
US10430223B2 (en) Selective monitoring of writes to protected memory pages through page table switching
CN112464231A (zh) 基于虚拟机的威胁检测方法及系统
Hiser et al. Meds: The memory error detection system
CN114491557A (zh) 一种基于容器环境java内存木马威胁检测方法
US11899782B1 (en) Preserving DLL hooks
US20240012736A1 (en) Real-time application log collection and log analytics using a single runtime entry-point
Li et al. Bridge the Future: High-Performance Networks in Confidential VMs without Trusted I/O devices
Wang et al. Input-Driven Dynamic Program Debloating for Code-Reuse Attack Mitigation

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140909

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20150523

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150713

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150818

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20151112

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160119

R150 Certificate of patent or registration of utility model

Ref document number: 5875690

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250