EAF 的文件管理器有一个非常隐蔽的bug, 当快速搜索文件后立即按 ‘f’ 或者 ‘return’ 键, 手速太快的时候会导致整个EAF崩溃, 虽然 EAF 有 eaf-restart-process 命令可以快速恢复所有标签, 但始终是不好的体验。
尝试修复这个问题十几次了, 依然没有修好, 都快成为玄学了。 根据我的经验, 这种没有固定重现手速的bug, 一般都是子线程访问主线程GUI导致的崩溃。
直到今天早上起来, 偶然间发现崩溃的文件目录是被搜索高亮的, 猜测是否是因为EAF文件管理器为了支持 isearch 实时搜索所添加的 FetchSearchInputThread 线程代码导致的?
认真调研了一下, 果然是后续重构的时候 ,忘记给 EAF 文件管理器的 handle_search_file 信号处理函数忘记加了 PostGUI wrap
加了一个补丁, 建议EAF重度用户更新一下, 帮我测试一下是否还有这个问题, 我也再多测试几天。
有可能被我偶然修好了, 有可能这是另外一次失败的尝试…