书签+列表书签导致Emacs崩溃

时间:2013-12-09 19:25:41

标签: emacs bookmarks

我正在使用Ubuntu 12.04和GNU Emacs 23.3.1。

我刚刚尝试了书签+库(http://www.emacswiki.org/emacs/BookmarkPlus)我从该网站下载了文件,例如来自http://www.emacswiki.org/emacs/download/bookmark%2b.el

bookmarks+.el

我把文件放在~/emacs目录中,然后放

(setq load-path
      (append (list nil "~/emacs")
              load-path))
(require 'bookmark+)

在我的~/.emacs启动文件中。要调试我删除了~/.emacs ..

中的所有其他内容

为了简单起见,我们现在按照以下步骤启动Emacs:

bash$ emacs ~/.emacs &

然后我使用 C-x p m 添加一个书签,然后输入 C-x r l 调出书签缓冲区,我得到了以下屏幕截图:

enter image description here

现在有几种方法可以让Emacs崩溃:

  • 我可以等几秒钟
  • 我可以尝试使用 C-x b
  • 更改缓冲区
  • 我可以选择书签,然后返回.emacs缓冲区,然后再次按 C-x b ..

当它崩溃时,框架是灰色的,没有任何反应,而在Gnome终端,我收到错误信息

*** glibc detected *** emacs: realloc(): invalid next size: 0x000000000228e1a0 ***

1 个答案:

答案 0 :(得分:2)

如果在尝试不同的Emacs构建后遇到同样的问题(顺序不太重要,并且项目不一定相关 - 即尝试其中一项或多项):

  1. 从您的sexp中删除更新nil的{​​{1}}。并删除load-path,除非它是一个目录。 ~/.emacs应该是目录名列表。它应该包括Bookmark +文件所在的目录。通常,您load-path会将目录添加到(add-to-list 'load-path "/some/directory")

  2. 对于您的测试,除非您已经这样做,否则请删除书签文件。 IOW从零开始,正如您尝试清空load-path一样。从没有书签开始。

  3. 如果您在不加载书签+的情况下执行相同的操作(例如.emacs后跟C-x r l)会发生什么情况,即使用香草Emacs书签代码?

  4. 删除任何字节编译的Bookmark +文件,因此您使用C-x b个文件,而不是*.el。然后将*.elc设置为debug-on-error。 (但是如果Emacs崩溃那么你可能不会得到一个Lisp回溯。)

  5. 尝试t(或您认为可能发生崩溃的其他任何功能),然后使用M-x debug-on-entry switch-to-buffer逐步调试调试器(或跳过您不关心的部分,使用d)。为了最清晰(详细),请加载Lisp源文件,该文件定义您传递给c的函数。例如,如果它是debug-on-entry,那么在最近的Emacs构建中,文件将是switch-to-buffer。执行window.el(或任何函数)以查看要加载的文件。使用C-h f switch-to-bufferload-file(带有明确的load-library后缀)而非.el加载文件,以便加载require

  6. 每次Emacs崩溃都表明存在Emacs错误(Emacs永远不会崩溃)。如果崩溃在当前目录中创建了文件*.el,则使用emacs_backtrace.txt并将该文件包含在您的错误报告中。

  7. 如果调试这有助于缩小崩溃原因,请考虑使用M-x report-emacs-bug报告缩小的配方以重现崩溃。