为什么我的Emacs在Cygwin上运行Windows 7,总是创建Crash Dump?

时间:2011-01-20 10:51:59

标签: emacs cygwin

我非常满意GNU工具如何在Windows 7上的Cygwin中运行。我认为使用GNU / Linux更容易,但我公司的政策是将Windows 7用于程序员编程环境。所以,解决方案是Cygwin。我为了编程目的而密集使用Emacs。

但是,似乎在Cygwin中运行的Emacs会创建一个打印在控制台上的一致(phrew)故障转储。我不得不用C-l刷新它,但这让我想知道:无论如何问题是什么?

这里有没有人有同样的问题?什么是解决方案。 这是我运行org-googlecl的例子。

处理googlecl-list完成


*  List of blogs with  in the *  List of blogs with  in the title                       :gblog:

12719501 [main] emacs-X11 1168 exception::handle: Exception: STATUS_ACCESS_VIOLATION
                                                                                    12720164 [main] emacs-X11 1168 open_stackdumpfile: Dumping stack trace to emacs-X11.exe.stackdump
                      12889237 [main] emacs-X11 764 exception::handle: Exception: STATUS_ACCESS_VIOLATION
                                                                                                         12889852 [main] emacs-X11 764 open_stackdumpfile: Dumping stack trace to emacs-X11.exe.stackdump

它总是创建emacs-X11.exe.stackdump。当我从emacs中运行另一个进程时,总是会发生这种情况,即如果我从Emacs运行批处理文件。

谢谢

4 个答案:

答案 0 :(得分:10)

我最近在将我的Cygwin版本升级到1.7.9-1时遇到了这个问题。 pserice's solution看起来很有前途,但对我不起作用。对我有用的解决方案是运行rebaseall

  1. 关闭所有Cygwin进程(使用Process Explorer确保没有加载cygwin1.dll)
  2. 开始>运行> cmd.exe的
  3. cd \cygwin\bin
  4. ash
  5. PATH=.
  6. rebaseall -v
  7. 之后,emacs每次尝试运行子进程时都会停止崩溃。

答案 1 :(得分:6)

Win7中止覆盖部分堆栈的进程。如果您信任cygwin可执行文件,则可以按如下方式选择性地排除它们:

Computer -> Properties
         -> Advanced System Settings
         -> Performance
         -> Settings...
         -> Data Execution Prevention

我排除了以下内容:

C:\cygwin\bin\bash.exe
C:\cygwin\bin\emacs.exe
C:\cygwin\bin\emacs-nox.exe
C:\cygwin\bin\emacs-X11.exe
C:\cygwin\bin\startxwin.exe

答案 2 :(得分:2)

我无法解决具体问题,但作为一种可能的替代方案,您可以查看在Windows机器上托管的Linux VM中运行Emacs。您可以使用Cygwin的X.org服务器作为显示,因此最终结果与使用Cygwin的Emacs大致相同。

这意味着跳过更多的箍,但是I find it a good solution,它有望避免崩溃。

我正在使用VirtualBox托管我的虚拟机。

答案 3 :(得分:2)

在Windows 7上通过cygwin运行控制台emacs时遇到了同样的问题。

我的解决方案是安装原生GNU Emacs Windows客户端:http://ftp.gnu.org/gnu/emacs/windows/并将cygwin的bash.exe设置为我的shell。

您可以在https://github.com/tildedave/init.el/blob/master/init.el看到我的emacs.d / init.el:这是与确保Windows 7 Emacs在cygwin中运行良好相关的部分 -

(if is-windows 
    (progn 
      (add-hook 'comint-output-filter-functions
                'shell-strip-ctrl-m nil t)
      (add-hook 'comint-output-filter-functions
                'comint-watch-for-password-prompt nil t)
      (setq explicit-shell-file-name "bash.exe")
      (setq shell-file-name explicit-shell-file-name)))

对于轻量级控制台编辑,我使用nano,它不会核心转储。