[Galatea-users] galateatalk関連不具合の議論

アーカイブの一覧に戻る

Atsushi YAMADA studi****@gmail*****
2009年 11月 17日 (火) 00:47:09 JST


西本先生
皆様

山田です。

これらは新しいバグというよりも,以前からあっ
たバグが顕在化したもののようですね。ただ,
complete testはしていませんから,いずれにし
ろ,テストスイートは必要でしょうね。

> 19577 : gtalkでタグを正しく閉じていないと落ちる

山下先生も書かれているように,chaoneはxml処
理系なので,validでない入力は処理できません。
この対策としては,gtalkのtext.cで,入力テキ
ストをパースする際に,タグをスタックしてい
き,最後にスタックに残っているタグの終了タ
グを強制的に追加するということをすれば解決
できます。同様に,
<VOLUME>...<RATE>...</VOLUME>...</RATE>
のようなクロスしているタグについても,スタッ
クの処理で異常が見つかるので,そのような入
力はエラーメッセージを出して受け付けないと
いうことができます。
ただ,現状でgtalkがなぜ次の入力で落ちるのか
はよくわかりません。入力として意味はありま
せんが,たとえvalidなxmlであっても
...<VOLUME/>...
のように空タグの省略表記があると,chaoneの
処理は成功しますが,gtalkで落ちるようです。

> 19576 : 特定の文字を読ませようとするとgtalkが落ちる

対応する発音がない文字について,gtalkがその
場で落ちるようです。

> 19575 : ハイフンが入った文字列でgtalkが落ちることがある

私の環境では落ちるという現象が再現しません
でした。
なお,読みの不具合の原因は,readmeの4.1に書
かれているとおり,ISO 8601形式の日付,時刻
表記について,処理をして読み上げるようにす
るルーチンがtext.cに入っているのですが,こ
れの判定が甘いために,おかしな読み方になる
ことがあります。個人的には,日付として読ま
せたければ,CONTEXTタグでtype="DATE"を指定
すればよいので,設定ファイル (ssm.conf) に
おいて
  DATE: NO
  TIME: NO
と指定して,ISO 8601形式の処理を無効にすれ
ばよいと思います。
ISO 8601形式の読み上げをきちんとするために
は,text.c内の処理を精緻化する必要がありま
す。これについては,unidicの同梱物として,
XSLTで実装したnumtransというツールを公開し
ていますので,このロジックをCに移植していた
だくというのが一つの方法です。

以上,いずれもgtalkのソースに手を入れる必要
があるため,今の私の手には余りますので,Cに
堪能な方の参加を期待します。

Takuya Nishimoto さんは書きました:
> galatea-users 各位
> cc: galateaプロジェクト関係者各位
> 
> 西本です。
> 
> 新たにご報告いただいた不具合2件をチケットに登録しました。
> また、チケット #19337
> APBタグを使ったあとでgtalkが落ちる
> について、私も見落としていましたので、
> 別の不具合としてチケット登録しました。
> ただ、valid なタグを使うことは利用者の責任、
> という考えもありそうなので、
> 「サポートリクエスト」にしています。
> (とはいえ落ちるのはよくないことですが。。)
> 
> http://sourceforge.jp/projects/galatea/ticket/
> 19577 : gtalkでタグを正しく閉じていないと落ちる
> 19576 : 特定の文字を読ませようとするとgtalkが落ちる
> 19575 : ハイフンが入った文字列でgtalkが落ちることがある
> 
> 個別の問題に対応するだけでなく、
> きちんと実装テストスイートを整備して、
> バージョンアップの際にテストをする必要がありますね。
> 今後考慮したいと思います。
> 




Galatea-users メーリングリストの案内
アーカイブの一覧に戻る