やっちまった

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

実にえらいミスです。

概要は、こちら

それにしてもtry~catchが効かないってのは痛い。

catchできてれば、狭めていくことで分かるのに。
#いや、catchでスタックトレースすれば一発か?

今回は、トレースを入れて、どこまで出続けるかを追っていくという超アナログな方法を採用したため、非常に時間が掛った。

いや、言い訳に過ぎない。

少なくとも、自分で書いたコードは、分かっていなきゃいけない。

不明な例外とか、本来は出しちゃいけない。

で、今回の原因は、初期化漏れと、ビット演算時のマスク定数誤りが原因なわけだが。

初期化漏れに関しては、構造体をnewした際にコンストラクタがないため、不定なメモリ状態になっていた。
今後これを起こさないためには、structに対しても必ずコンストラクタを用意すること。

もうひとつのビット演算時のマスク定数誤りは・・・やはり単純にマスク後の値を見れば分かるはずだ。
#が、漏れちゃった・・・
0x0FFFのつもりが、コード見たら、0x0FFFFになってるなんざ、よほど抜けてるなぁ・・・

にしても、不具合報告が一件も無かったんですが、これ発生条件って稀なのかなぁ。
#いや、ほとんど使用されていないってのが現実か。

デバッグビルドで発生しなかったのは、おそらく、newで確保したメモリの初期化がおこなわれていたからだと思われ。
メモリリークは発生していたはずなんだけど、これもデバッグ実行時の報告に挙がってない・・・ってことはデバッガも万能じゃないってことか?設定ミスかも。

何はともあれ、不具合が潜在状態から顕在状態になったことは良いこと。
直すことができるから。

さぁ、直すぜ!

トラックバック(0)

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

コメントしちゃいなよ

    

サイトカウンタ

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

埋め込みツイッター

取得失敗;;
Now: 2024/04/25 20:58:27 JST

このブログ記事について

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

ひとつ前のブログ記事は「再現環境発見」です。

次のブログ記事は「共用体に翻弄される」です。

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

月別 アーカイブ

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コード