パスワードを忘れた? アカウント作成
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。

バグや問題を「MSのせい」にする技術者、いませんか?」記事へのコメント

  • Windows CE 5.0の.NET Framework 2.0(C#)で
    はまった内容:

    悪い例:
    Form form = new HogeForm();
    form.ShowDialog();
    form.Dispose();

    良い例:
    Form form = new HogeForm();
    form.ShowDialog();
    form.Dispose();
    form = null;

    最後にnullを設定しないと、このフォームがガベージコレクトされず、
    メモリリークします。なんだそれ。

    マイクロソフトのサポートに問い合わせたところ、
    マイクロソフト側でも現象を確認したそうで、
    回答が「最後でnullを設定してね」でした。
    マイクロソフトはバグとは言いませんでしたが、どう見てもバグですね。

    メモリリークするよ~、あんたのコードが悪いんでしょ~、
    なんとかしてよ~、とつつかれて大変でした。

    • 変数のスコープにとどまったままとかそういうことじゃなくてですか? 変数のスコープから外れてるのにGCされないんだったら、どんなGC使ってんだよって思いますね。
      • by yoshimo (15798) on 2008年08月28日 15時12分 (#1411386)
        ちょっと説明不足でしたね。
        もちろん、スコープから外れても、ガベージコレクトされずに
        フォームオブジェクトが丸ごと残り続けてました。
        で、最終的にはOutOfMemoryExceptionになってしまいます。
        nullでリセットするようにしただけで解決しましたけどね。

        他にも、Windows CEの.NETの怪しい挙動をいくつか見つけており、
        (問い合わせてはいませんが)たぶんMSのバグだべ~と思っています。

        #↑で、こういう態度をとると
        # 「すぐにMSのせいにする技術者」
        # ってことになっちゃうんだな。
        # じゃあ一体どうしろと

        親コメント
        • # じゃあ一体どうしろと

          素人考えですが、その「Microsoft 製品のバグだろう」と思っている現象を Microsoft Connect [microsoft.com] で報告して他の人がバグであることを確認してくれれば、技術者相手には自分のせいでないと説得することができると思います。日本語の報告も受け付けていて [microsoft.com]、日本語の報告を Microsoft の担当者が英語に訳す場合もあるようです。 Connect はほとんど使ったことがないので、どのくらい他の人が再現に協力してくれるものかはわかりませんが。

          ただし、バグ報告を書くのは手間がかかるかもしれませんし、 Connect では技術者以外には説得材料にならないでしょうね。

          親コメント
        • なるほどー。formをnullにするだけで解決するってことは、スコープから出てもformが内部的にライブのままになってるんでしょうかね。とんでもないなあ。
          親コメント
        • by Anonymous Coward on 2008年08月28日 15時36分 (#1411409)
          「たぶんMSのバグ」って言うと嘘臭い感じがしますね.
          「おそらく .NET Compact Framework の garbage collection のバグです」とかいえば
          「MSのバグ」ほど馬鹿っぽく聞こえなくなりますよ?
          # 問題は何も解決しませんけど
          親コメント

人生の大半の問題はスルー力で解決する -- スルー力研究専門家

処理中...