現在オフラインです。再接続するためにインターネットの接続を待っています

IcmpCreateFile API を実行したプロセスで 96 バイトのメモリ リークが発生します

現象
以下の条件により、IcmpCreateFile API を実行したプロセスでメモリ リークが発生します。

- ICMP ( Internet Control Message Protocol ) API を約 10 秒以上の間隔で呼び出すような長期間稼働のプロセスを実行します。
- 別のプロセスで ICMP API を呼び出します。

以下の例のように長期間に渡って ICMP API を 10 秒以上の間隔を空けて繰り返し呼び出すプロセス A が動作しています。これとは別のプロセス B にて IcmpCreateFile API が呼び出された場合、以降、プロセス A が ICMP API を呼び出したタイミングで、プロセス B にて Private Bytes が 96 バイトずつ増加します。

プロセス A:
int main()
{
………………
While(1){
HANDLE hIcmpFile = IcmpCreateFile();
…………
IcmpSendEcho(hIcmpFile, …, …, …, …, …, …, …);
IcmpCloseHandle(hIcmpFile);
}
return 0;
}

プロセス B:
int main()
{
…………
HANDLE hIcmpFile = IcmpCreateFile();
While(1){

…………
}
return 0;
}


原因
この現象は、 ICMP API (iphlpapi.dll) の内部で、一部のオブジェクトの解放が漏れていることが原因です。

回避策
当現象によって、ICMP API が呼び出されるたびに 96 バイトのメモリが増加しますが、発生直後にシステムに深刻な影響を与えるものではありません。しかしながら、ICMP API を使用した 24 時間稼働のプロセスを長期間実行しておくことで、メモリを消費してしまいますので、一定期間ごとにプロセスを再起動するなどの対策を実施してください。
状況
マイクロソフトでは、この問題をこの資料の対象製品として記載されているマイクロソフト製品の問題として認識しています。
関連情報
KB 2384321 You may see memory leak when running ICMP multithread application on post-Vista OS
http://support.microsoft.com/kb/2384321/
注意 : これは、マイクロソフトのサポート組織内で直接作成された "緊急公開" の資料です。 この資料には、確認中の問題に関する現状ベースの情報が記載されています。 情報提供のスピードを優先するため、資料には誤植が含まれる可能性があり、予告なしに随時改定される場合があります。 その他の考慮事項については、使用条件を参照してください。
プロパティ

文書番号:2684917 - 最終更新日: 03/15/2012 10:08:00 - リビジョン: 1.0

Windows Vista Starter, Windows Vista Home Basic, Windows Vista Business, Windows Vista Enterprise, Windows Vista Ultimate, Windows 7 Home Premium, Windows 7 Home Basic, Windows 7 Professional, Windows 7 Enterprise, Windows 7 Ultimate, Windows Server 2008 Foundation, Windows Server 2008 Standard, Windows Server 2008 Datacenter, Windows Server 2008 Enterprise, Windows Server 2008 R2 Standard, Windows Server 2008 R2 Enterprise, Windows Server 2008 R2 Datacenter

  • KB2684917
フィードバック
>