如何在WSL2上调试Emacs崩溃问题

3
我使用这个网站上的指南安装了Emacs。一开始它运行得很好,但最近我经常遇到崩溃的问题。例如,每20分钟,Emacs会突然关闭并且不会保存任何内容。有时,我会在终端窗口中看到输出,例如:
When compiled with GTK, Emacs cannot recover from X disconnects.
This is a GTK bug: https://gitlab.gnome.org/GNOME/gtk/issues/221
For details, see etc/PROBLEMS.
Backtrace:
emacs(+0x146b12)[0x560737d11b12]
emacs(+0x48d1b)[0x560737c13d1b]
emacs(+0x49209)[0x560737c14209]
emacs(+0x48291)[0x560737c13291]
emacs(+0x48360)[0x560737c13360]
/lib/x86_64-linux-gnu/libX11.so.6(_XIOError+0x52)[0x7fcd36f391a2]
/lib/x86_64-linux-gnu/libX11.so.6(_XEventsQueued+0x7d)[0x7fcd36f3685d]
/lib/x86_64-linux-gnu/libX11.so.6(XPending+0x61)[0x7fcd36f28171]
/lib/x86_64-linux-gnu/libgdk-3.so.0(+0x7020f)[0x7fcd376d920f]
/lib/x86_64-linux-gnu/libglib-2.0.so.0(g_main_context_prepare+0x19f)[0x7fcd370af72f]
/lib/x86_64-linux-gnu/libglib-2.0.so.0(+0x520db)[0x7fcd370b00db]
/lib/x86_64-linux-gnu/libglib-2.0.so.0(g_main_context_pending+0x2c)[0x7fcd370b027c]
/lib/x86_64-linux-gnu/libgtk-3.so.0(gtk_events_pending+0x12)[0x7fcd379bc402]

我不能百分之百确认错误信息是否正确地诊断了问题。但是如果我们假设它是正确的诊断,那么我该如何重新安装Emacs以便它可以从X断开连接中恢复?或者,我该如何防止X断开连接?


也许尝试从https://www.reddit.com/r/emacs/comments/69xm04/if_i_dont_run_emacs_as_root_it_instantly_crashes/下载`/usr/bin/env XLIB_SKIP_ARGB_VISUALS=1 emacs`并运行。 - Picaud Vincent
1
[emacs.se]可能是一个更好的询问地点。 - Barmar
如果出现实际崩溃,请向Emacs开发人员报告:M-x report-emacs-bug。崩溃总是表示某种错误。 - Drew
感谢大家的建议。@TobiasFendin - 你能具体说明一下编译调试符号是什么意思吗?我在使用自己的代码时有很多调试符号的经验,但我不确定在这种情况下该怎么做。(i) 我应该传递什么标志给make?(ii) 我应该使用哪些工具来打印相关的调试信息?如果我只需要提供一个简单的开关给make,然后在emacs崩溃时自动在终端上打印更多信息,那就太好了。 - Philip Maybank
@PhilipMaybank 当阅读 ./configure --help 时,如何启用调试并不清楚,但我看到有两种可能的方法。将环境变量 CFLAGS 和 CPPFLAGS 设置为“-g”(猜测,我没有使用 WSL)。另一种可能的方法是在 configure 中传递 --enable-profiling 选项。如果其中任何一种成功,回溯将包含更多有用的信息,例如函数名称。 - Tobias Fendin
显示剩余3条评论
1个回答

0

由于我没有找到解决特定问题的方法,我决定停止使用需要在WSL2中使用X服务器的应用程序。我通过Chocolatey安装的Emacs - https://community.chocolatey.org/packages/Emacs,使用体验很好。我也有过使用VS Code的良好经历,它似乎与WSL2的通信和远程机器一样顺畅。


很高兴你找到了解决问题的方法,但是这个“答案”不会帮助其他有同样问题的人。也许你应该取消接受它? - tripleee

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接