「SEG CLIP」のハンドルリークを考察する

| コメント(0) | トラックバック(0)

IOデータでは問題ないとか結論付けている。

だがしかし、声を大にして、否と叫びたい。

プロセス内で確保できるハンドル数には上限があるらしい。
→出典:Windows の限界に挑む: ハンドル(Microsoft・TechNet)

ということは、ハンドル解放をしないまま、確保だけをし続けると、ハンドル確保できなくなるということを意味する。
ハンドル解放をしないまま、確保だけをし続ける状態は、ハンドルリークに他ならない。

ハンドル確保できる上限は、2^24より少し少ない数らしい。
約2^24と考えると、SEG CLIPは少なくとも毎秒2ずつハンドルを確保するため、2^23秒後までプログラムの正常状態が保たれることは、あり得ないことになる。
#ハンドル確保失敗例外が発生し、恐らく何らかの問題が発生し、プロセスが破たんすると考えられる。

2^23秒というと、大体97日、つまり3カ月ちょっと。
ただし、これは最長条件であり、SEG CLIPのウィンドウ操作などでもハンドルカウントが増えるため、実際には、もっと短い時間で破たんするはずだ。
#ウィンドウ操作によるハンドル数は、ものすごい増加を見せる場合がある。

ならば、しばらく視聴を楽しんだあと録画予約をした場合、ハンドルカウントの上限に達することで予約の実行に影響を与えることは十分に考えられる。
つまり、普通に機能を利用するだけで、問題は発生するということになる。

ここまでで、IOデータの回答の杜撰さは明白である。

 

さて、ハンドルとは何かと考えると、ハンドルは、オブジェクト(ファイル、イベント、GDI等)を指し示すものであるので、その先には何かオブジェクトがあるはずだ。

たとえば、GDIなどではハンドルと共に解放されないリソースなどあることだろう。
ハンドルと共にイベントも残りまくっていれば、実際には無効なイベントであっても、数万を超えるハンドルがある状態での割り込み処理は相当数になるはずである。
そういうことを考えると、単にハンドルを多く確保しているというだけで、OS全体へのパフォーマンスの影響はかなり大きくなる可能性がある。

OSへ影響が出ると共に、その前に、SEG CLIPプロセス自体への影響が出る可能性も高い。
これが、設定保存失敗や、終了できない、あるいは、[選局中・・・]状態で進まないといった副次的不具合を引き起こしているのではないか、とも考えられる。
#まだ、どんな種類のハンドルを確保しているのか、調査したわけではないが、恐らくGDI系のハンドルではないかと考えている。

予想通りであれば、IOデータではこのような調査を一切していないということになる。
あるいは、していて、知っているにも関わらず、やらず存ぜぬを貫いているのかも知れない。

 

さて、ハンドルリークに焦点を絞ってきたが、上記最後の部分、「調査を一切していない」のが一番の問題で、ハンドルリークは氷山の一角である可能性も否定できない。
一連の回答からは、「ハンドルリークを今まで知らなかった」ということが書かれていた。

出荷開始から2年以上も経った製品の、こんな顕著な問題点を、「知らなかった」というのは信じ難いことだが、仮にそれが真実だったとして、ハンドルリーク以外の潜在バグは、いくらでもありそうだと、ソフトウェア開発をすこしでも齧った人なら考えるはずである。
「知らなかった」というのが嘘だったとしても、回答同様に製品の信用が出来ないという点では同じである。

その上、「難しいから直せない」と回答されたら、どうだろうか。

そういう全てが意味するのは、もはや、IOデータの製品は購入するに値しないという、一点に尽きるのである。
#ついでに、金沢カレーも断ってみる。

 

さて、ハンドルリークに話を戻そう。

既にハンドルリーク込みで提供されている実行ファイルから、ハンドルリークを除去するにはどうしたらよいのだろうか。
#メーカーが直してくれないのなら、ユーザーレベルで対応するしかない。

Windows の限界に挑む: ハンドルにはハンドルの種類を判別する方法が記載されていて、参考にはなるだろうが、これはプログラムソースコードがあってはじめて修正に有効な情報となる。

実は、ここに一つ、問い合わせの最初の頃に送りつけられた実行ファイル(OneSegPc.exe)がある。
1秒に2個のハンドルリークは解消されていたようだが、実用できるレベルのものでなかったため封印しているが、これを使えないだろうか。

そう、実行ファイルの差分を取れば、ハンドルリーク発生原因もしくは、ハンドル解放箇所が容易に判明するのではないかということだ。
いくつか余分なコードも追加されているだろうし、バイナリを扱うのはそれほど簡単なことではないと思うが、そこから徐々に辿っていけば、何が問題で、どうすれば直るか、分かるのではないかという・・・実に楽観的過ぎる推測でいる。

#別件で、ある実行ファイルのバイナリ、昔少し読んだけど、さっぱり忘れてる俺だが・・・

トラックバック(0)

トラックバックURL: http://blog.fne.jp/mt/mt-tb.cgi/156

コメントしちゃいなよ

    

サイトカウンタ

Total: 211,632 Hits, (Recent24Hours: 0 Hits)
~ Since 2010/01 ~

埋め込みツイッター

取得失敗;;
Now: 2024/04/20 4:23:36 JST

このブログ記事について

このページは、ふぅみんが2010年4月11日 00:01に書いたブログ記事です。

ひとつ前のブログ記事は「キッチンマミー」です。

次のブログ記事は「HDD不調について」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

月別 アーカイブ

2024年2月

 日   月   火   水   木   金   土 
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29    

埋め込みQRコード