JSPカーネルのcfgの不具合を調査

TOPPERS/JSP for Blackfinの次のリリースに向けて準備を始めました。次のリリースの詳細についてはsourceforge で告知します。

さて、準備中にいきなり躓きました。 Ubuntu 12.04 での環境を整備していたのですが、cfgをビルドして走らせると無応答になり、帰ってきません。Ubuntu 12.04 のβの頃には気づきませんでした。ひょっとするとテスト漏れだったのかもしれません。

この問題は昨年暮れにTOPPERSのMLでJSP 1.4.4の問題として報告されていましたが、未解決のまま放置されていました。

調査したところ、ライブラリの変更にともっなって、ファイル末尾の検出に変更があった(バグが混入した?)ことが原因のようです。 ファイル末尾でstd::istream.eof()が偽を返すのです。cfgのソースはeof()しか見ていないため、無限ループに入っていました。読み込んだ文字でもファイル末尾を検出するようにしたところ、正しく動きました。

現在MLに修正差分を提出して意見を諮っているところです。結果が良好であれば、TOPPERS/JSP for Blackfinプロジェクトでも採用します。

しっかしこんなバグが今時あるとは、GCCも油断がなりません。

コメントする

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください