最終更新日: 2016-06-26 日 01:23
ホーム | 文書トップ | 目次

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 は動作を停止しました」というダイアログが表示される。

アプリケーション終了時の動作なので、当初から私自身はそれほど気にしていなかったのだが、某掲示板で話題になっているようなので、そこで挙がっている情報を元に、少し検証をしてみた。 ただし、現状、原因も現象改善の方法もわかっていない。

表示されるダイアログ

数秒間このダイアログが表示された後、

emacs_abnormal_exit1.png

最終的にこのような表示になる。

emacs_abnormal_exit2.png

前提

ビルドしている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を終了する。

これでも、現象は改善しない。

(むしろこの手順だと、異常終了のダイアログは毎回表示される)

ホーム | 文書トップ | 目次
Created by Emacs 25.1.1 (Org mode 8.2.10)