进程崩溃 - emacs-eaf/emacs-application-framework GitHub Wiki
多线程引起的崩溃
EAF大量使用多线程技术来保证任何EAF应用的操作都不会卡住Emacs。
如果你在使用EAF过程中,发现某些操作会导致EAF进程崩溃,大概率是Elisp调用Python函数时,对应的Python函数没有添加 @PostGUI()
装饰器,导致EAF子线程接受到Elisp消息后,在子线程调用了Qt图形代码。子线程调用Qt图形代码会导致EAF进程瞬间崩溃。
修复方式很简单:
- 找到崩溃的Python函数
- 确保函数所在文件已经从
core.utils
模块 import 了PostGUI
函数 - 在发生崩溃的Python函数上面添加
@PostGUI()
装饰器
欢迎发送PR修复问题,帮助EAF运行的更加稳定。
PyQt环境引起的崩溃
我在Arch上遇到当PyQt环境有问题的时候会引起偶然崩溃, 解决方法如下:
- 清空系统的 PyQt 目录:
sudo rm -rf /usr/lib/python3.11/site-packages/PyQt*
- 重新安装依赖:
./install-eaf.py --force