用brew安装的railwaycat/emacsmacport 28.1,开启了native-comp,每次退出时都会发生crash
安装的参数为
brew install emacs-mac --with-mac-metal --with-rsvg --with-starter --with-native-comp
该怎么排查问题
用brew安装的railwaycat/emacsmacport 28.1,开启了native-comp,每次退出时都会发生crash
安装的参数为
brew install emacs-mac --with-mac-metal --with-rsvg --with-starter --with-native-comp
该怎么排查问题
不用猜了,就是 native comp 的锅,把 eln 都删了重新编译一遍
我这边native comp在没编译完的时候,退出就会崩溃。解决方案就是等它编译完
估计是因为你刚安装好 Emacs,一启动没多久就退出吧?
因为正在编译,如果退出就会崩溃。建议第一次启动,等一段时间,可以切换到 native-comp 编译那个 buffer,看到 finished 再退出。
感觉应该加一个选项:如果正在编译,退出时让用户确认一下。
我怎么记得有进程还在编译会有提示?
没有,至少我在Windows没有看到
而且,我看到编译完成了,下次进来直接给你退出,进都进不去了😬
bug多
哦,我使用的是macOS。不过我一般习惯加上这个:
(setq confirm-kill-emacs 'y-or-n-p)
默认的eln都放在哪里?
嗯,是好的想法
也许是版本原因,我从 Emacs mac 版本的Emacs,在Mac Emacs 28.1 似乎没有默认启动 native-comp 功能
或者说是假的28.1😣
.emacs.d/eln-
还是推荐emacs-plus或者emacs-head编译,我一直使用没有问题。
Cask 版本没有 native-comp。Formula 安装的话,需要使用 --with-native-comp 选项,默认是不打开的。
不知老哥解决了没? 我这边也常常在 C-x C-c 关闭 Emacs 的时候遇到 macOS 报错 Emacs exit unexpectedly.
今天得空寻找解决方案, 发现这个问题不怎么被讨论。让 kimi-k2 糊了一个, 主要意思是在退出 Emacs 前先把进程杀掉, 不晓得这个方案是否鲁棒。
(defun my-kill-all-subprocesses ()
(let ((procs (process-list)))
(dolist (p procs)
(set-process-query-on-exit-flag p nil)
(ignore-errors (delete-process p)))
(while (and (> (length procs) 0)
(cl-some #'process-live-p procs))
(sleep-for 0.2)
(setq procs (cl-remove-if-not #'process-live-p procs)))
(dolist (p procs)
(when-let ((pid (process-id p)))
(call-process "kill" nil 0 nil "-9" (number-to-string pid))))))
(add-hook 'kill-emacs-hook #'my-kill-all-subprocesses)
ps. 这个退出崩溃也可能是由 rime 导致的, 参考 Crash when exit emacs · Issue #161 · DogLooksGood/emacs-rime · GitHub
如果是 macos, 也可以根据崩溃时的详细信息来判断问题根源