過去の投稿記事 new!
・【画像】漫画でわかる外国人参政権
・東京電力のHPで停電状態が確認できたり(サービス再開!)
・戦国時代 ~ 江戸時代の徳川家康が熱かった
・vaio のバッテリは寿命が短いような気がする
・話題の Western Digital 製 WD20EARS を購入した
・C01LC をビックカメラで買ってきた
・2025年には空中都市が現実化?!
・【動画】わかりやすい「宇宙ひも理論」
・今世紀には「富士山噴火」「東海連動地震」「首都圏直下型地震」か?
・滅びた町、南浜町が Googleストリートビューで見れる

【 amazon 送料無料キャンペーン 】

バックリンクはご自由にどうぞ!     http://mfsocket.blogspot.com/feeds/posts/default?alt=rss リンク集 / ログイン

2011/09/29
【Windows】親プロセスの列挙時のレアバグ

 
親プロセスの列挙には Process32First / Process32Next を利用する事で、
親の親、さらには大元の root プロセスまで調べる事ができます。
getparentid
さて今回、自作アプリケーションにて1000回に1回確認できるかどうかの
レアバグに遭遇しました。
 
本バグをログに吐き出して調査した所上記 API …というべきか CreateToolhelp32Snapshot() にて矛盾点が確認できました。
 
現象は 親プロセスを辿っていくと、自分を直接起動した
親プロセスに再度辿りつくことがあるのでのです。
 
表にすると以下のようなイメージです。
自身のPID 1000
↑を起動した親PID 1001
↑を起動した親PID 1002
↑を起動した親PID 1003
↑を起動した親PID 1001
 
発生頻度としては、Windows を起動した直後は発生確率が上がる様子。
 
以前は再帰関数で列挙していたのですが、その時はスタックオーバフローで
全く関係の無いところで落ち、非常に悩まされました。
 
「親が存在して、初めて子供が生まれる。」
 
という概念がある限りありえないと考えてるのですが、いかがでしょうか。

0 コメント:

  • コメントには <b>, <strong>, <em>, <i>, <a> など一部の HTML タグを使用できます。