Почему мой 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.
Спасибо
Ответы
Ответ 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 для размещения моей виртуальной машины.