[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[freewnn:00077] illigal memory access.



 元木@ITLです。

 今日は autoconf 関連でなく、怪しい報告 & 怪しいパッチです。
 
 事の発端は、日々 FreeWnn を使っていると時々、付属語ファイル
 関連でエラーが出ることから始まります。

 さて、エラーになるのも腹が立つのでデバックしようと -g と 
 Electric Fence(malloc debugger の一種) をリンクした jserver 
 を立ち上げたのですが、エラー以前に segmentation fault して
 しまいました。

 調べてみると、sbn_kai(bnsetu_kai.c), zen_sbn(jikouho_d.c) 
 において fkz_ckvt の vector(引数) に WNN_VECT_NO(-1) をセッ
 トした状態で呼び出されているのが問題のようです。

 fkz_ckvt内で、引数を
>ft->kango_vect_area(struct kangovectへのポインター) + vector(引数)
 として fkz_ck_vector を呼び出しているのですが、
 fkz_ck_vector内で、このポインターの指す領域を参照している部
 分があり、ここで segmentation fault しているようです。
 (確保した領域の先頭から -1 した領域ならば segmentation
  fault で当然ですよね?)

 変換ルーチン全体を読んでいないので、いまいちパッチの正当性
 に自信が無いですが、とりあえず修正してみました。

 2つのパッチを Xsi/Wnn/jserver 以下であてて下さい。

 o 変更点

  - sbn_kai(bnsetu_kai.c), zen_sbn(jikouho_d.c) において、
    endvect1 が WNN_VECT_NO の場合は、fkz_ckvt を呼び出さない
    ようにした。

# 本題のエラーはさっぱり出なくなってしまいました (^^;

sin.

bnsetu_kai.c.diff

jikouho_d.c.diff