From: Tomohiro K. <ku...@de...> - 2003-02-16 13:10:37
|
久保田です。 mlterm が、segfault します。じつはこちらの環境のせいである 可能性が高いのですが (mlterm 側に問題がある可能性は皆無では ないと思うのですが)、pty 関連のところで問題が起きているっぽい ので、ここで質問させてもらいます。 じつは、最新の CVS 版 mlterm だけではなく、過去のバージョン (たとえば、2.6.2 とか) でも segfault します。きのうまで そんなことはなかったのに。昔に作った (コンパイルした) Debian パッケージでも segfault するので、こちらの環境が なにか変化してしまっていることは確実です。Debian unstable (sid) ですので、どこかのパッケージの更新が原因になっている 可能性があります。一方で、こちらの環境が変化したのは確か なんだけれども、それは正常な変化で、mlterm がその変化に ついていけないのがおかしい、との可能性もあると思います。 とにかく、原因を調べてみました。原因は、ふたつあるようです。 まずひとつめですが、x_term_manager.c の open_term() で、 open_pty_intern() を呼んでいますが、これが失敗しています。 その原因は、kiklib/src/kik_pty_streams.c の kik_pty_fork() の失敗です。その原因は、ptsname() の失敗です。NULL が返って います。 open_pty_intern() の失敗を受け、goto error するのですが、 そのエラー処理に問題があり、単に終了するのではなく、segfault するようになってしまっているようです。これがふたつめの問題です。 その原因は、x_sb_screen_delete() が同じ引数で 2 回呼ばれている ことです。1回目は、open_term() のエラー処理部分の x_display_close() から。2回目は、同じくx_sb_screen_delete() からです。 --- 久保田智広 Tomohiro KUBOTA <ku...@de...> http://www.debian.or.jp/~kubota/ |