(toppers-users 3984) Re: JSP1.4.4の不具合 (原因究明?)

Masaki Muranaka monamour @ monaka.org
2012年 6月 13日 (水) 12:13:32 JST


こんにちは.

ざっと追試してみました.おそらく,
-            if( current->stream->eof() )
+            if( !current->stream->good() )
だと動くのではと思います.
理由は定かではありませんが,
現象としては eof() では無く fail() が true になっているようです.

2012年6月12日 23:01 suikan <suikan7 @ yahoo.co.jp>:
> こんにちは。
>
> 試してみましたが私の環境では eof()を使うと無限ループになってしまいまし
> た。原因はわかりませんが、
> eof()は真にならないようです。
>
> 修正ですが、添付の修正でどうやらうまく動きます。
>
> 酔漢
>
> (2012/06/12 7:26), suikan wrote:
>> おはようございます
>>
>> 邑中さん
>>
>> コメントありがとうございます。eof()についてはもう少しつついてからもう一
>> 度報告します。
>>
>> 酔漢
>>
>>
>> (2012/06/11 10:15), Masaki Muranaka wrote:
>>> おはようございます.
>>>
>>> istream.eof() は,ファイルの最後に達していてさらに読み込んだ時に true になります.
>>> なので,g++のデグレードではなく,今までの parse.cpp が動いていたほうがおかしかった
>>> のではないかという気がします.(きちんと追いきれていないかもしれませんが)
>>>
>>> 修正案は添付頂いたパッチの通りでOKのはずです.
>>> ですが,個人的な好みですが,
>>>>                     if( ch == -1 )
>>>>>>>                       if( current->stream->eof() )
>>> のほうが意味が掴みやすいかなとは思います.
>>>
>>> 2012年6月10日 21:32 suikan <suikan7 @ yahoo.co.jp>:
>>>> みなさんこんにちは、酔漢です。
>>>>
>>>> 標記の件ですが、原因らしきものに当たりました。
>>>>
>>>> 環境 : Ubuntu 12.04, g++ 4.6.3
>>>> ソース : jsp 1.4.4-full ( UTF8に変換済み )
>>>> ターゲット linux
>>>>
>>>> 上記環境で jsp/configure -C linux を実行した後、 make depend すると既に
>>>> 報告されているとおりcfgが暴走します(実行状態から返ってこなくなる)。
>>>>
>>>> デバッガで追跡したところ、.cfg ファイルの末尾で無限ループに陥っていまし
>>>> た。どうやら、istream.eof() == FALSEかつ ch==-1 となるライブラリのよう
>>>> ですが、parser.cpp がそれに対応できておらず、ファイル末尾を検出できない
>>>> ことが原因のようです。
>>>>
>>>> 添付ファイルのような変更を行ったところ、とりあえずはsample1のmake depが
>>>> 通るようになりました。
>>>>
>>>> 恥ずかしながら c++ のライブラリには精通していないため、皆さんの検証をお
>>>> 願いします。
>>>>
>>>> 酔漢
>>>>
>>>> (2012/06/06 22:49), suikan wrote:
>>>>> みなさんこんにちは。酔漢です。
>>>>>
>>>>> 邑中さんが報告されている cfg の暴走の件ですが、Ubuntu 12.04 LTS でも同じ
>>>>> と思われる問題が発生します。g++ のバージョンは 4.6.3です。
>>>>>
>>>>> TOPPERS/JSP for Blackfinをバージョンアップしたいのですが、頭を抱えています。
>>>>>
>>>>> 酔漢
>>>>>
>>>>> (2012/01/21 14:53), Masaki Muranaka wrote:
>>>>>> みなさま:
>>>>>> こんにちは.
>>>>>>
>>>>>> 下記の件,Ubuntu 10.04.3 TLS と同 11.10 で動作チェックをしたところ,
>>>>>> 11.10 の共有ライブラリと jsp-1.4.4 の cfg での組み合わせで発生することが判りました.
>>>>>> (10.04.3 TLS では再現しません.また10.04.3 LTS で静的リンクした cfg は 11.10でも動作します.)
>>>>>>
>>>>>> 問題発生の箇所がソースコードのどの部分に対応するのかは現時点では不明です.
>>>>>> また,他のディストリビューションでの発生有無も同じく不明です.
>>>>>>
>>>>>> とりいそぎの対応策として,10.04.3 LTS
>>>>>> 上でビルドしたバイナリを下記の場所に置きました.(TOPPERSライセンスの報告条項を満たす手間を省くため,ソースコードも含んでいます.)
>>>>>> おそらくカーネルリビジョンが同じ他のディストリビューションでも動作すると思います.
>>>>>>
>>>>>> https://bitbucket.org/monaka/jsp_core/get/cfg-binary-ubuntu-32bit.zip
>>>>>> https://bitbucket.org/monaka/jsp_core/get/cfg-binary-ubuntu-64bit.zip
>>>>>>
>>>>>> TOPPERS公式のものではないことに留意してください.
>>>>>> また,上記バイナリを適用した結果に対して,私および私の所属組織は一切の責任を取りません.
>>>>>> 軽微な修正提案については,
>>>>>> https://bitbucket.org/monaka/jsp_core/issues にいただければ検討します.
>>>>>> 追加の個別サポートが必要な場合は,メールにてご相談ください.
>>>>>>
>>>>>> 2011年12月22日7:09 Masaki Muranaka <monamour @ monaka.org>:
>>>>>>> また,sample1 のビルドを試みると,cfg が暴走します.
>>>>>> (snip)
>>>>>>> 再現条件はまだよく判っていません.
>>>>>>> GCC4.6.1固有の問題なのか,このg++のビルドのみの問題なのか….
>>>> --
>>>> 酔漢
>>>> 組み込みBlog              http://d.hatena.ne.jp/suikan+embedded/
>>>> TOPPERS/ASP for LPC       http://sourceforge.jp/projects/toppersasp4lpc/
>>>> Blackfin Blog             http://d.hatena.ne.jp/suikan+blackfin/
>>>> TOPPERS/JSP for Blackfin  http://sourceforge.jp/projects/toppersjsp4bf/
>>>>
>>>>
>>
>
>
> --
> 酔漢
> 組み込みBlog              http://d.hatena.ne.jp/suikan+embedded/
> TOPPERS/ASP for LPC       http://sourceforge.jp/projects/toppersasp4lpc/
> Blackfin Blog             http://d.hatena.ne.jp/suikan+blackfin/
> TOPPERS/JSP for Blackfin  http://sourceforge.jp/projects/toppersjsp4bf/
>
>