Go to the first, previous, next, last section, table of contents.

SunOS 4.1 で "Fatal error (6).Abort" というメッセージと共に Emacs がクラッシュするのは何故でしょうか?

Emacs 18.57 のリリースと共にこの質問は無くなると期待したのですが, まだ 18.55 を使っている人がいるんですね.

これは SunOS 4.1 が提供している "localtime" ルーチンのバグです. tzsetwall から呼び出されるプライベート関数が localtime が確保した 8 byte のメモリ領域を越えて値を 0 に設定しようとし, GNU の malloc のメモリ・プールを破壊します. malloc がこれを検出すると abort します.

18.57 からは, このクラッシュが起らないように "#define SYSTEM_MALLOC" が SunOS 4.1 の設定ファイルに付け加えられています.

なお SunOS 4.1.1 でも, ライブラリの localtime.o は変更されておらず, すなわちこのバグは直っていません. Sun ではこのバグに気づいており, Sun が発表したドキュメントには Emacs を "#define SYSTEM_MALLOC" を追加してコンパイルするように 記述されています. このバグは Sun の /usr/etc/rpc.mountd にも影響するようです.

anonymous FTP で修正された localtime.o を取り寄せて 根本的にこのバグを直すことができます: (titan.rice.edu:incoming/localtime.tar.Z) {ただしこのファイルは現在公開されてないかもしれません.} この新しい localtime.o を /usr/lib/libc{.a,.so.*} にインストールしてください. 方法は `ar' コマンドのマニュアルと /usr/lib/shlib.etc ディレクトリの README を読んでください.

GNU の malloc が 8 byte を確保するように要求されたときも 16 byte を確保するように変更する, Eirik Fuller <eirik@theory.tn.cornell.edu> によるパッチがあります. このパッチを当てると Sun のバグによらず abort しません.

もうこの質問を繰り返すのは止めましょう! :-) :-)


Go to the first, previous, next, last section, table of contents.