JP2007141193A - ワイヤレスデバイスのリアルタイム性に適用するメモリリーク検出手法 - Google Patents

ワイヤレスデバイスのリアルタイム性に適用するメモリリーク検出手法 Download PDF

Info

Publication number
JP2007141193A
JP2007141193A JP2005358251A JP2005358251A JP2007141193A JP 2007141193 A JP2007141193 A JP 2007141193A JP 2005358251 A JP2005358251 A JP 2005358251A JP 2005358251 A JP2005358251 A JP 2005358251A JP 2007141193 A JP2007141193 A JP 2007141193A
Authority
JP
Japan
Prior art keywords
memory
wireless device
leak
diagnostic
allocated
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2005358251A
Other languages
English (en)
Inventor
Shiyousei Ou
昌正 王
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.)
MOVELL SOFTWARE KK
Original Assignee
MOVELL SOFTWARE KK
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 MOVELL SOFTWARE KK filed Critical MOVELL SOFTWARE KK
Priority to JP2005358251A priority Critical patent/JP2007141193A/ja
Publication of JP2007141193A publication Critical patent/JP2007141193A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)

Abstract

【課題】ワイヤレスデバイスのリアルタイム性に適用するメモリリーク検出手法の提供。
【解決手段】診断エンジンを常駐させてシステムの正常時に待ち状態に置き、診断エンジンがシステムリソース例えばCPUとメモリを使用しないようにし、予めアプリケーションにダイナミックに必要とするメモリの状況を学習してシステムに覚えさせ、システムにイベントがあったときに寝かせている診断エンジンの一部を起こして発生したメモリ割付や開放イベント、メモリの利用状態、プロセスの動作状態等の情報を記録してシステムの健康状態を監視し、システムにメモリリーク又は潜在的なメモリリークの不具合が起きたときに診断エンジンを部分的に起こして、これまで正常時に収集した診断データおよび学習した情報を用いて、発生したメモリリークの不具合を診断して、診断結果を診断レポートにまとめて診断サーバに送り、診断データベースに登録する。
【選択図】図1

Description

本発明は、ワイヤレスデバイス上でリアルタイム環境においてシステムに起きるメモリリークを検出する方法と、システムの正常時に寝かせてメモリ操作があった時又はメモリリークが発生した時に喚起させる診断エンジンと、診断エンジンを用いてメモリリークの検出と診断を行う機能を持つワイヤレスデバイスおよびワイヤレスデバイスの診断と復旧を実施するシステムに関するものである。
近年、携帯電話上でさまざまなリアルタイム性の強いアプリケーションを実装して、数多くのアプリケーションが高負荷の状態で動作し、メモリリークが多く発生すれば、メモリが足りなくなり、既に起動して走っているプロセスが異常となったり、新たに起動しようとするプロセスが起動できなくなる。しかし、メモリの利用状態を監視する時又はシステムに発生したメモリリークを検出する時に、CPUやメモリなどのシステムリソースを多く利用せず、システムのリアルタイム性に影響しない有効なメモリリークを検出する手法がない。
ワイヤレスデバイス上で発生するメモリリークを検出するために利用する従来のデバッグ手法例えば開発段階で利用しているデバッグツールMEMWATCH等は、多くのメモリを使ったり、平均的に5倍以上遅くなったり、リアルタイムの環境に利用することが不可能である。しかし、いま開発期間が大幅に短縮されているために、開発段階で十分なテストができず、また数百万台を出荷して様々な利用者の環境において様々な操作や利用状況によって開発段階と異なるメモリリークが発生するので、リアルタイム環境に適用できるメモリリーク検出手法が必要とされている。
ワイヤレスデバイス上で複雑な実行環境において発生したメモリリークは容易に判断できるものではない。割り付けられたメモリが開放すべき時までに開放しなければ、漏れたこと(リーク)と判断される。しかし、いつどこで開放すべきであるのがに対してシステムリソースを多く使用せずにリアルタイム性に影響しないように判断することが困難である。また、メモリリークはアプリケーションの中で連続的なメモリ割付と区別して正しく判断するべきである。メモリリークと連続的なメモリ割付を区別することも容易ではない。
また、アプリケーションにおいて漏れたメモリの量だけを報告して、メモリが漏れた場所を特定できなければ、発生したメモリリークおよびメモリリークによる他の不具合を診断するための役に立たない。従って、メモリリークが発生した場所と原因を特定する必要がある。
上述のように、現状では、ワイヤレスデバイス上でシステムのリアルタイム性に影響しないメモリ使用状態の監視手法と、メモリリークの診断手法がないために、メモリリークおよびメモリリークによって起こされた不具合の発生場所と原因を特定することが困難であり、同じ不具合が繰り返して多くの携帯電話上で発生し、携帯電話事業者と携帯電話メーカは発生した不具合に対して迅速な対応ができないので携帯電話利用者に十分に満足できるサービスを提供することができない。
そこで、本発明は、ワイヤレスデバイス上でシステムのリアルタイム性に影響させないためにシステムの正常時にメモリリークの診断エンジンを寝かせる手法と、システムにメモリ操作又はメモリに関する不具合が発生する時に寝ている診断エンジンを喚起する手法と、メモリリークの不具合を診断するために必要となる各種の診断データを収集する手法と、収集した診断データを用いてメモリリークおよびメモリリーク関連の不具合を診断する手法、これらの手法を実現したワイヤレスデバイスを提供することを目的とする。
本発明によるワイヤレスデバイスは、リアルタイム環境においてシステム上で発生するメモリリークおよびメモリリークによって起こされる不具合の診断エンジンを備えた携帯電話機であって、システムの正常時にシステムのメモリ状態を監視することができる診断エンジンを寝かせる手段と、システムにメモリ関連の異常又は不具合が発生した時に寝かせている診断エンジンを喚起する手段と、起こした診断エンジンによってメモリリークおよびメモリリークに関連するシステムの不具合を診断するために必要なデータを収集する手段と、収集したデータを分類・解析して必要な診断データを提供する手段を有することを特徴とする。
システムの正常時にシステム上のメモリ状態を監視することができる診断エンジンを寝かせる手段は、診断エンジンをシステム部とユーザ部の二つに分けて、システム部をオペレーティングシステムが走るカーネルスペースに常駐させ、ユーザ部をアプリケーションが走るユーザスペースに常駐させる。診断エンジンのシステム部は、プロセスの状態とプロセスのメモリ使用状態を監視し、診断エンジンのユーザ部は、メモリ割付や開放に関するデータを収集し、収集したデータを用いてメモリリーク又は潜在的なメモリリークの発生があったかどうかを検出する。診断エンジンのシステム部とユーザ部は、ワイヤレスデバイス上でシステムに常に動作することではなく、システムのリソース例えばCPUを利用しない待ち状態(スリープ)にある。診断エンジンのシステム部は、イベント例えばプロセスの起動や終了が発生した時に喚起し、メモリの利用状態に関わる情報例えばプロセスに割り付けられたメモリの状態を収集し、開放されないメモリの状態を分析し、システムのメモリ状態を監視する。
システム上でメモリ関連の異常又は不具合が発生した時に寝かせている診断エンジンを喚起する手段は、システムコールによってアプリケーションをプロセスとして起動させる時又は走っているプロセスを終了させる時に寝かせている診断エンジンのシステム部を喚起させ、カーネルスペース上の作業を済ませた後に、診断エンジンのシステム部からシステムコール又はソケットによってシグナルを待ち状態にある診断エンジンのユーザ部に送り、寝かせている診断エンジンのユーザ部を喚起させる。
起こした診断エンジンによってメモリリークの不具合を診断するために必要なデータを収集する手段は、起こされた診断エンジンのシステム部によってプロセスの動作状態、利用しているメモリ容量、プロセスに割り付けられたメモリ状態を記録してワイヤレスデバイス上のシステムに保存し、また、ワイヤレスデバイス上でシステムに発生するすべてのイベントと発生したイベントに対応する動作や状態と、プロセスの状態例えば起動や終了と、システムリソースの利用状態も記録する。
収集したデータを分類・解析して必要な診断データを提供する手段は、診断エンジンのシステム部より起こされた診断エンジンのユーザ部が診断エンジンのシステム部によって収集したメモリリーク関連のデータ例えばプロセスのメモリ使用量、プロセスに割り付けられたメモリの利用状態、システムリソース、イベント情報、プロセス情報と一緒に分類・解析し、発生したメモリ関連の不具合を診断するに必要な診断データを診断レポートに添付して提供する。
以上のように、本発明によれば、ワイヤレスデバイス上でリアルタイムシステムにおいてメモリリーク関連不具合の診断、不具合発生の回避を実施するためのシステムとして、ワイヤレスデバイスに診断エンジンを常駐させ、システムの正常時に診断エンジンを寝かせて待ち状態に置くためにシステムのリアルタイム性にまったく影響せず、システムにプロセスの起動・終了時に診断エンジンの一部を喚起し、メモリリークの検出を行い、メモリリーク関連不具合の診断に必要な診断データを収集して、収集したデータの分類・解析を行って管理し、メモリリークの不具合が発生する場合に不具合を診断するときに必要な診断データを提供することができ、システムにメモリリークが発生した時に収集したデータを用いてリアルタイムで発生したメモリリークを診断してメモリリークが発生したプロセスを終了させることによって漏れたメモリを開放することができるので、ほとんどの場合に事業者のカスタマサポートに連絡する必要がなく、修理受付窓口に持ち込まれる必要もない。たとえ、事業者のカスタマサポートに連絡されたときでも、サポートに必要な診断情報が既に分かりやすく解析して診断サーバに報告されており、すぐにカスタマへ対応ができる。また、ソフトウェア上でメモリリークのバグが見つかった場合に、バグに関する詳細なリアルタイムシステムの診断情報が収集され分類されて分かりやすい形に解析されており、メーカが即座に的確にバグを判断することができ、バグを直ちに直すことができる。事業者とメーカにとって、カスタマとプロダクトのサポートコストを著しく削減することができる。
以下、本発明の実施の形態を図面を参照して説明する。図1は、本発明によるワイヤレスデバイスのリアルタイム性に適用する診断手法を実現することができるシステムの構成を示すブロック図である。
図1に示す診断システムにおいて、ワイヤレスデバイス01に診断エンジン−1(診断エンジンのユーザ部)02、診断エンジン−2(診断エンジンのシステム部)03を実装して、プロセスの動作状態、プロセスのメモリ利用状況と発生するイベントを観察し、診断データ04を収集し、発生した不具合に対して収集した診断データを利用して診断を行い、診断の結果を診断サーバ05と診断データベース06に対してワイヤレスネットワーク07経由で報告する。
図2は、ワイヤレスデバイスのリアルタイム環境においてメモリリーク診断の実施を示すブロック図である。診断エンジン−1と診断エンジン−2はシステムが正常時に待ち状態にあり、プロセスの起動・終了のイベントがあるときに診断エンジン−2(診断エンジンのシステム部)03が起きてプロセスの状態とプロセスのメモリ利用状態をチェックして監視し、メモリの割付や開放が発生したときにアプリケーション10からシステムコールを呼んで診断エンジン−2(診断エンジンのシステム部)03を起こして、割付られたメモリの情報を記録し、割り付けられたメモリを開放する時に記録しているメモリ情報を更新して、シグナルを診断エンジン−1(診断エンジンのユーザ部)02に送り、診断エンジンのユーザ部を起こして記録したメモリ情報を分類・解析し、メモリリークを検出して発生したメモリリークの不具合を診断する。
図3は、ワイヤレスデバイス上でリアルタイム環境におけるメモリリーク診断を実施する手順の一例を示す説明図である。図3に示している例では、アプリケーション(ワイヤレスデバイス上で走るアプリケーション)の中でメモリ割付20があった時に割り付けられたメモリに関する情報記録21(例えば割り付けられたメモリのアドレス、メモリのサイズ)を行って、メモリ開放22があった時に記録情報更新23を行い、リーク検出24をして、メモリリークを検出した場合に、リーク報告25を行う。システムのメモリ利用状態監視にあたる情報記録21を行う際には、メモリ割付ごとに割り付けられたメモリに関する情報に割り付けられたメモリのアドレス、メモリのサイズ、メモリを要求した関数のアドレス、メモリを割り付けた変数のアドレスが含まれ、これらの情報データを一つのノードとしてリンクリストに登録し、検索を迅速に行えるためにハッシュテーブルを使う。割り付けられたメモリを使用した後にメモリ開放22があった時に開放するメモリにあたるノードをリンクリストから削除して記録情報更新23を行って、未開放のメモリ情報のみがこのリンクリストに残る。リンクリスト上に残った記録情報に基づいてリーク検出24を行う。割り付けられたメモリが開放すべき時に開放されなかったら、メモリが漏れたこととし、メモリリークを検出する。メモリリークが検出されたら、リーク報告25を行う。メモリリークに関する報告には、上記の漏れたメモリに関する記録情報のほかにメモリリークが発生したところまで発生したイベントログ、呼び出された関数のログ、プロセスの動作状態、システムリソースの利用状態等の情報が含まれる。これらの情報はメモリリークを診断する際に必要であり、発生したメモリリークの診断に利用できる。
メモリ割付の要求があった時に、アプリケーションからメモリ割付関数を呼び出す。割り付けられたメモリに関する情報記録21を行うために、呼び出されたメモリ割付関数(例えばmalloc)が入っている従来のライブラリを置き換える。置き換えたライブラリには、メモリ割付のほかにメモリ開放等のメモリ操作に関する関数が含まれる。こられの関数では、メモリ割付や開放等の従来のメモリ操作が従来の通りに従来のメモリ操作関数を用いて行われ、それらの従来のメモリ操作が終った後に診断に必要な情報記録21を行う。例えば、メモリ割付があった時に置き換えた関数の中でまず従来の通りに必要なメモリを割り付けて、割り付けたメモリの情報をリンクリストに記録し、メモリ開放があった時にまずポインタのアドレスでリンクリスト上でそのノードを検索し、該当するノードがあれば、従来の通りにメモリ開放を行い、その後に該当するノードをリンクリストから削除する。該当するノードがなければ、不法メモリ開放としてメモリ開放を要求したアプリケーションに警告する。
リーク検出24は、上記のリンクリストに残ったノードにある情報に基づいてプロセスが終了する時又は割付られたメモリを開放するべきの判断が分かった時に行われる。プロセスが終了する時にリンクリストに残ったノードがあれば、それらがメモリリークとなる。プロセスが終了せずに、明確にメモリリークが判断するにメモリを割り付けた変数のスコープを知る必要がある。ある関数の中で定義されたローカル変数であれば、その変数のスコープがその関数が終了するまでとなり、その関数が終了した際に開放しなかったら、そのメモリが漏れたこととなり、メモリリークが明確に判断できる。
メモリを割り付けた変数のスコープが特定できない時又はグローバル変数である時に、プロセスが終了するまでにメモリリークが明確に判断できない。この場合には、潜在的なメモリリークとして警告することができる。図4はワイヤレスデバイス上で潜在的なメモリリークの診断を実装する一例を示す説明図である。潜在的なメモリリークを判断するために、アプリケーションの中でダイナミックに割り付けられるメモリの状況を把握して学習30を行う。学習30の中でアプリケーションに潜在的なメモリリーク判断に必要な情報として例えば最大のメモリサイズ等を学習データ31として覚えさせる。この学習30は、開発段階又は出荷テストの段階で行う。デバイスが出荷された後にも学習することができる。学習データ31はフラッシュ上で保存する。リアルタイムの環境でアプリケーションが走る際に、メモリ割付20があった時にメモリリークの検出と同じように情報記録21を行い、潜在的リーク診断32の時に保存している学習データ31を用いて、メモリリークが潜在的に発生したかどうかを判断する。発生したことを判断する時に潜在リーク警告33を行う。
メモリリーク検出又は潜在的なメモリリーク警告は、システム全体のパフォーマンスを高めるためにシステムの中にすべてのプロセスに対して行う必要はなく、プロセスごとに指定することができる。また、この指定は、システムが動作している時にダイナミックに変えることもできる。
本発明によるワイヤレスデバイスのリアルタイム性に適用するメモリリーク診断手法を実現することができる診断システムの構成を示すブロック図である。 ワイヤレスデバイスのリアルタイム環境におけるメモリリーク診断を実施する一例を示すブロック図である。 ワイヤレスデバイス上でリアルタイム環境におけるメモリリーク診断を実施する手順の一例を示す説明図である。 ワイヤレスデバイス上で潜在的なメモリリークの診断を実装する一例を示す説明図である。
符号の説明
01 ワイヤレスデバイス(携帯電話、携帯端末)
02 診断エンジン−1
03 診断エンジン−2
04 診断データ
05 診断サーバ
06 診断データベース
07 ワイヤレスネットワーク
10 アプリケーション
20 メモリ割付
21 情報記録
22 メモリ開放
23 記録情報更新
24 メモリリーク検出
25 メモリリーク報告
30 メモリ情報学習
31 学習データ
32 潜在的メモリリーク診断
33 潜在的メモリリーク警告

Claims (5)

  1. 少なくともひとつのプロセッサとメモリを搭載し、中に少なくともひとつのリアルタイム・オペレーティングシステムとひとつのソフトウェア・アプリケーションをもち、リアルタイムの環境においてワイヤレスデバイスを診断するエンジンと、診断結果を通知するためにワイヤレスネットワークを通してワイヤレスデバイスと接続できる遠隔地に置かれる診断データベース又はケーブルやメモリカードによってワイヤレスデバイスと接続して診断結果をダンプすることができるローカルに置かれる診断データベースから構成するワイヤレスデバイス診断システム。
  2. 請求項1に記載するワイヤレスデバイス上で起きるメモリリーク(割り付けられたメモリの開放漏れ)をワイヤレスデバイスのリアルタイム性に影響せずに検出するメソッド。本メソッドは、診断エンジンをワイヤレスデバイス上でメモリリークのない時に寝た振り(スリープ)の状態にさせ、システムにメモリ操作(例えば割付又は開放など)のある時又はメモリリークが発生した時にスリープしている診断エンジンを喚起して直ちにメモリリークを検出し、発生したメモリリークを診断する。
  3. 請求項1に記載するワイヤレスデバイス上でリアルタイムの環境においてメモリの操作とメモリの使用状態を監視するメソッド。本メソッドは、本来のメモリ操作(例えば割付や開放)を従来の通りにさせ、メモリリークの検出に必要な情報(例えば割り付けられたメモリのアドレスとサイズ)を記録し、記録した情報に基づいて割り付けられたメモリの使用状態と割り付けられたメモリのヒープ領域の状態を監視し、メモリへ不正なアクセス(例えばワイルドポインタ開放、ヌルポインタ開放、メモリの重複開放等)をしようとするメモリ操作があった時に不正なメモリアクセスをさせず、不正なメモリアクセスとして警告しシステムのクラッシュを回避する。
  4. 請求項1に記載するワイヤレスデバイス上でリアルタイムの環境においてメモリリークを検出するメソッド。本メソッドは、ワイヤレスデバイス上でプロセスが終了時に割り付けられたメモリを開放しないメモリリーク又はメモリ割付を必要とする変数のスコープ(メモリの使用範囲)を特定してそのスコープ内に割り付けられたメモリを開放しないメモリリークを検出する。
  5. 請求項1に記載するワイヤレスデバイス上でリアルタイムの環境において潜在的なメモリリークを検出するメソッド。本メソッドは、ワイヤレスデバイス上でメモリ割付のヒープ境界(最大のヒープ使用サイズ)を予めに学習しておき、100%で断定できない潜在的なメモリリークを検出する。
JP2005358251A 2005-11-14 2005-11-14 ワイヤレスデバイスのリアルタイム性に適用するメモリリーク検出手法 Pending JP2007141193A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2005358251A JP2007141193A (ja) 2005-11-14 2005-11-14 ワイヤレスデバイスのリアルタイム性に適用するメモリリーク検出手法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005358251A JP2007141193A (ja) 2005-11-14 2005-11-14 ワイヤレスデバイスのリアルタイム性に適用するメモリリーク検出手法

Publications (1)

Publication Number Publication Date
JP2007141193A true JP2007141193A (ja) 2007-06-07

Family

ID=38203935

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005358251A Pending JP2007141193A (ja) 2005-11-14 2005-11-14 ワイヤレスデバイスのリアルタイム性に適用するメモリリーク検出手法

Country Status (1)

Country Link
JP (1) JP2007141193A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9465701B2 (en) 2011-04-20 2016-10-11 Fujitsu Limited Relay device and recovery method
CN113918393A (zh) * 2021-09-16 2022-01-11 盾构及掘进技术国家重点实验室 一种功能安全系统内存检测方法
CN115220970A (zh) * 2021-12-10 2022-10-21 广州汽车集团股份有限公司 一种定位内存泄漏方法、装置、计算机设备及存储介质

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9465701B2 (en) 2011-04-20 2016-10-11 Fujitsu Limited Relay device and recovery method
CN113918393A (zh) * 2021-09-16 2022-01-11 盾构及掘进技术国家重点实验室 一种功能安全系统内存检测方法
CN113918393B (zh) * 2021-09-16 2024-04-23 盾构及掘进技术国家重点实验室 一种功能安全系统内存检测方法
CN115220970A (zh) * 2021-12-10 2022-10-21 广州汽车集团股份有限公司 一种定位内存泄漏方法、装置、计算机设备及存储介质
CN115220970B (zh) * 2021-12-10 2023-09-08 广州汽车集团股份有限公司 一种定位内存泄漏方法、装置、计算机设备及存储介质

Similar Documents

Publication Publication Date Title
US10503623B2 (en) Monitoring containerized applications
US8291379B2 (en) Runtime analysis of a computer program to identify improper memory accesses that cause further problems
US8949671B2 (en) Fault detection, diagnosis, and prevention for complex computing systems
EP3036633B1 (en) Cloud deployment infrastructure validation engine
US7937623B2 (en) Diagnosability system
US8156475B2 (en) Device and method for testing embedded software using emulator
US7895483B2 (en) Software memory leak analysis using memory isolation
US20060253837A1 (en) Using a call stack hash to record the state of a process
US20080065928A1 (en) Technique for supporting finding of location of cause of failure occurrence
US8793289B2 (en) Method and system for detecting memory leaks and copying garbage collection files
JP6238221B2 (ja) ソフトウェアの実行を監視する装置、方法およびプログラム
JP2007207213A (ja) ワイヤレスデバイスのリアルタイム診断に適用する診断情報収集手法
JP2007141193A (ja) ワイヤレスデバイスのリアルタイム性に適用するメモリリーク検出手法
CN114048099A (zh) Java应用监控方法及装置、存储介质及电子设备
CN116521414A (zh) 故障代码定位方法、云端服务器、系统及存储介质
JP4558376B2 (ja) コントローラ
CN114398272A (zh) 一种结合性能瓶颈定位的压测方法及压测装置
JP2007052756A (ja) ワイヤレスデバイスの不具合診断に適用する学習型診断データベース
JP3459898B2 (ja) 組み込みシステムの障害情報トレーサ装置
US9852046B1 (en) Method and system for automated debugging memory allocation and memory release
JP2007068135A (ja) ワイヤレスデバイスのリアルタイム性に適用する診断手法
CN118113562A (zh) 异常告警方法、装置、设备及计算机程序产品
CN118113553A (zh) 一种内存文件系统监控方法及计算设备
CN114024825A (zh) 一种云计算环境下业务端到端的故障监测方法
CN116225863A (zh) 接口性能确定方法、装置、设备及存储介质