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

Yusuke Mitsuki mitsukiyusuke @ gvwave.com
2012年 6月 13日 (水) 13:26:42 JST


酔漢様、邑中様
みなさま

横から失礼します。
三ッ木と申します。はじめまして。

> 現象としては eof() では無く fail() が true になっているようです.
> 
とのことですので、istreamが処理中にエラーを検出しているということだと思います。
入力のデータを疑う方向の方がよいかもしれません。

c++のstreamクラスの説明です。
http://www.cppll.jp/cppreference/cppio_details.html

ただ、ここの無限ループを修正するということであれば
この前のブロックのエラーチェックにcurrent->stream->fail()を含めるとよいかと思います。

ubuntuの環境がないので申し訳ありませんが未検証です。
何かの参考になればと思います。

以上、よろしくお願いいたします。



From: Masaki Muranaka <monamour @ monaka.org>
Subject: (toppers-users 3984) Re: JSP1.4.4の不具合 (原因究明?)
Date: Wed, 13 Jun 2012 12:13:32 +0900

> こんにちは.
> 
> ざっと追試してみました.おそらく,
> -            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/
>>
>>
> 
-------------- next part --------------
テキスト形式以外の添付ファイルを保管しました...
ファイル名: parser.cpp.diff
型:         text/x-patch
サイズ:     483 バイト
説明:       無し
URL:        <http://www.toppers.jp/pipermail/users/attachments/20120613/1a60ce40/attachment.bin>