Fedora 36中Emacs 28.1搭配ESS包启动挂起问题求助
问题:Emacs 28.1升级后卡在加载ess-init.el并产生大量进程
Fedora 36系统中将Emacs升级至28.1版本后,Emacs无法正常启动,卡在加载site-start/ess-init.el的提示界面,同时会生成约10个额外的emacs进程,直至耗尽系统资源仍无进展。
已排查信息
ess-init.el仅包含一行代码:(require 'ess-site)- 提供
ess-site.el的是系统自带包emacs-ess-18.10.2-6.fc36.noarch ess-site.el的字节编译版本ess-site.elc是针对Emacs v23编译的:sh-5.1$ pwd /usr/share/emacs/site-lisp/ess sh-5.1$ ls -l ess-site.el* -rw-r--r--. 1 root root 4812 Nov 10 2018 ess-site.el -rw-r--r--. 1 root root 1869 Jan 20 03:57 ess-site.elc sh-5.1$ file ess-site.elc ess-site.elc: Emacs/XEmacs v23 byte-compiled Lisp data- 移除ESS包后,问题完全消失
原因分析
Emacs手册相关说明:
一般来说,任何版本的Emacs都可以运行由近期旧版本Emacs编译的字节码,但反过来不行。
这里的核心故障原因是:针对Emacs v23编译的ess-site.elc与Emacs 28.1版本差距过大,远超手册中“近期”的范畴,导致字节码兼容性彻底失效。
当Emacs加载这份老旧字节码文件时,触发了无法处理的兼容性错误,进而引发进程异常fork(生成大量子进程),最终陷入无响应状态。移除ESS包后问题消失,也直接验证了ESS组件的老旧字节码是故障根源。
内容的提问来源于stack exchange,提问作者jhu
相关产品推荐
相关产品推荐

