Подтвердить что ты не робот

Почему мой Emacs в Cygwin работает в Windows Seven, всегда создает Crash Dump?

Я вполне доволен тем, как работают инструменты GNU в моем Cygwin на Windows Seven. Я думаю, что проще использовать GNU/Linux, но моя компания здесь имеет политику использования Windows Seven для среды программирования Programmer. Таким образом, решение Cygwin. И я интенсивно использую Emacs для своей цели программирования.

Но, похоже, что Emacs, работающий в Cygwin, создает согласованный (phrew) аварийный дамп, который печатается на консоли. Мне пришлось обновить его с помощью C-l, но это заставляет меня задаться вопросом: в чем же проблема?

Есть ли у кого-то такая же проблема? И какое решение. Это мой пример запуска org-googlecl.

Закончить завершение googlecl-списка


*  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.

Спасибо

4b9b3361

Ответ 1

У меня была такая же проблема при запуске консольных emacs через cygwin в Windows 7.

Моим решением было установить собственный клиент GNU Emacs Windows: http://ftp.gnu.org/gnu/emacs/windows/ и установить cygwin bash.exe в качестве моей оболочки.

Вы можете увидеть мой emacs.d/init.el в https://github.com/tildedave/init.el/blob/master/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, который не является базовым дампом.

Ответ 2

Недавно я столкнулся с этой проблемой при обновлении моей версии Cygwin до версии 1.7.9-1. решение pserice выглядело многообещающим, но не работало для меня. Решение, которое сработало для меня, состояло в том, чтобы запустить rebaseall:

  • Закройте все процессы Cygwin (используйте Process Explorer, чтобы убедиться, что в нем загружено cygwin1.dll)
  • Пуск > Выполнить > Cmd.exe
  • cd \cygwin\bin
  • ash
  • PATH=.
  • rebaseall -v

После этого emacs перестает сбой при каждом запуске подпроцесса.

Ответ 3

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

Ответ 4

Я не могу помочь с конкретной проблемой, но в качестве возможной альтернативы вы можете посмотреть запуск Emacs на виртуальной машине Linux, размещенной в вашем окне Windows. Вы можете использовать сервер Cygwin X.org в качестве дисплея, поэтому конечный результат во многом такой же, как с использованием Cygwin Emacs.

Это означает перепрыгнуть через еще несколько обручей, но Я считаю это хорошим решением, и он, надеюсь, избежит сбоев.

Я использую VirtualBox для размещения моей виртуальной машины.