ISHIKAWA,Chiaki
ishik****@yk*****
2013年 8月 24日 (土) 10:17:02 JST
(2013/08/23 9:08), 1xx wrote: > 2013年8月22日 2:07 ISHIKAWA,chiaki <ishik****@yk*****>: >> パッチをあてるまで jserver は Debian の64ビット環境で >> クラッシュしていました。 >> >> 問題の症状としては emacs のegg/tamago からアクセスすると問題ないのですが、 >> kinput2(-wnn) でアクセスして変換を数回するとクラッシュして >> /var/log/messages に次のようなメッセージがのこっていました。 >> >> Aug 20 23:49:52 vm-debian-amd64 kernel: [105365.379749] jserver[1090]: segfault at 7fff00000008 ip 000000000040e200 sp >> 00007fffffffdcc0 error 4 in jserver[400000+24000] >> Aug 20 23:58:42 vm-debian-amd64 kernel: [105894.260674] jserver[2051]: segfault at 7fff00000008 ip 000000000040e200 sp >> 00007fffcf9e7710 error 4 in jserver[400000+24000] > > この問題が、今回私が修正した箇所(本質的には1ヶ所)に > 起因しているのか確かめたくて、 > 再現を試みました。 > 1. VirtualBoxの上にDebian7.1 64bit環境を構築。 > ホストは https://dl.dropboxusercontent.com/u/86335040/DxDiag17.txt > 2. FreeWnn-1.1.1-a022.tar.bz2 をpatchを当てずにコンパイル > 3. kinput2の使い方を調べる。 > http://www2h.biglobe.ne.jp/hnakamur/technolab/freebsd/other/japanese/input.htm > > しかし、変換を繰り返してもSEGVを再現することはできませんでした。 > coreを採取して解析するつもりだったのですが、目的が果たせませんでした。 > > どういう操作をしたらクラッシュするのか教えていただければ幸いです。 > >> >> 手動修正して、またそのあとで configure/make をして気づきましたが、 >> cWnn/include kWnn/include の下に kaiseki.h というファイルが無いよう >> です。それぞれの ディレクトリの中のMakefileでの kaiseki.h へ言及しているルールを >> 削除しました。Makefile.in も同様の修正が必要のようです。 >> (多分 日本語 jserver だけ使っているのであれば問題ないのですが、 >> 中国語 server 、韓国語 server では問題あるかもしれません。他のサーバー >> は利用したことがないから状況は不明。) > > すいません。 > kaiseki.hは元々jserver/ directoryの下にありました。 > しかし、そこで宣言されている関数を他のソースからincludeしたかったので > include/ directoryにmvしました。 > > 具体的にはfwnn.specのpatchを当てている作業の中の > > %setup -q -n FreeWnn-%{base_version}-%{alpha_version} > %patch0 -p1 > %patch1 -p1 > %patch2 -p1 > %patch3 -p2 > %patch5 -p1 > %patch7 -p2 -b .s390x > %patch8 > %patch11 -p1 > %patch13 -p1 > %patch14 -p1 > %patch15 -p0 > %__mv Wnn/jserver/kaiseki.h Wnn/include/ # <-- ここ > %patch16 -p1 > > で、mvしています。 > その後%patch16の中で*Wnn/include/Makefile.inを書き換えています。 > >> >> 最初上でのべた kaiseki.h の問題とかでmake がうまくいきませんでした。 > >> また私の環境ではなぜか termio, termios のヘッダー関連が >> うまく処理されず、結局試行錯誤のすえ、次のコマンドを実行することで解決できました。 >> >> apt-get install libtinfo-dev >> >> (上のコマンドは手元の環境ではメタパッケージとかをたどって、結局 >> ncurses の開発環境をいれていたようです。ちょっと不思議。このコマンドを実行するまえにもすでに >> も termio, termios のヘッダーが入ってたのですが。なんとなくヘッダーのチェックの順序が >> それまでのパッケージのインストール状況とあってないみたいでしたが、まあ、動作し >> てるのでよしとしましょう。) > > 私は > apt-get install ncurses-dev > をしました。 > クラッシュの再現なのですが、「普通に」変換するとなぜか手元のDebian amd64だと2−3回変換するとサーバーがおちてしまったのです??? 変換入力した先は、iceweasel (firefoxのDebian独自コンパイル版)ですが、 他のthunderbirdなどでも同様だと思います。 今旅先で64ビット版にすぐアクセスできないので情報不足ですみません。 いしかわ