NTEmacs 24.4 異常終了 について
Table of Contents
概要
NTEmacs(もはや、nt以下のビルドでなくなった今、Emacs for Windowsというべきか) 24.4以降は、24.3までとビルド方法が変わっていることが関係しているのか、挙動があやしい部分がある。
特に、C-x C-c にてアプリケーションを終了した際に、かなりの確率で「GNU Emacs: The extensible self-documenting text editor は動作を停止しました」というダイアログが表示される。
アプリケーション終了時の動作なので、当初から私自身はそれほど気にしていなかったのだが、某掲示板で話題になっているようなので、そこで挙がっている情報を元に、少し検証をしてみた。 ただし、現状、原因も現象改善の方法もわかっていない。
表示されるダイアログ
数秒間このダイアログが表示された後、
最終的にこのような表示になる。
前提
ビルドしているPCでも発生しているので、配布バイナリに対して、必要なdllが未同梱されていないわけではないと考えられる。
dynamic-library-alist
dynamic-library-alist を評価してみると、下記
( (xpm "libxpm.dll" "xpm4.dll" "libXpm-nox4.dll") (png "libpng16.dll" "libpng16-16.dll") (tiff "libtiff-5.dll" "libtiff3.dll" "libtiff.dll") (jpeg "libjpeg-8.dll") (gif "libgif-7.dll") (svg "librsvg-2-2.dll") (gdk-pixbuf "libgdk_pixbuf-2.0-0.dll") (glib "libglib-2.0-0.dll") (gobject "libgobject-2.0-0.dll") (gnutls "libgnutls-28.dll" "libgnutls-26.dll") (libxml2 "libxml2-2.dll" "libxml2.dll") (zlib "zlib1.dll" "libz-1.dll") )
これに対し、同梱しているdllが、dynamic-library-alist のそれぞれの要素の先頭に無いものを確認してみると、3つ。
- libXpm-noX4.dll ×
- libpng16-16.dll ×
- libtiff-5.dll
- libjpeg-8.dll
- libgif-7.dll
- librsvg-2-2.dll
- libgdk-win32-2.0-0.dll ×
- libglib-2.0-0.dll
- libgobject-2.0-0.dll
- libgnutls-28.dll
- libxml2-2.dll
- zlib1.dll
これを加味し、dynamic-library-alist を下記にように変更して試してみた。
(setq dynamic-library-alist '( (xpm "libXpm-noX4.dll") (png "libpng16-16.dll") (tiff "libtiff-5.dll") (jpeg "libjpeg-8.dll") (gif "libgif-7.dll") (svg "librsvg-2-2.dll") (gdk-pixbuf "libgdk-win32-2.0-0.dll") (glib "libglib-2.0-0.dll") (gobject "libgobject-2.0-0.dll") (gnutls "libgnutls-28.dll") (libxml2 "libxml2-2.dll") (zlib "zlib1.dll") ))
Emacsを起動後、上記のように dynamic-library-alist を変更し、jpg、png、gif ファイルを表示する。 その後、Emacsを終了する。
これでも、現象は改善しない。
(むしろこの手順だと、異常終了のダイアログは毎回表示される)