我无法在 Ubuntu 16.04 上启动任何版本的 wine。这并不是说我无法启动具体的用葡萄酒编程,这是我根本无法启动 Wine每次启动 Wine 时都会崩溃并给出以下错误:
wine: Unhandled stack overflow at address 0xXXXXX (thread XXXX), starting debugger...
err :seh:setup_exception_record stack overflow 1200 bytes in thread 0011 eip 7bc62f8d esp 00240e80 stack 0x240000-0x241000-0x3400000
唯一可以运行的程序是 winetricks,我无法使用它来启动 winecfg 或其他任何东西:每次都会出现这个错误。
我尝试使用 Wine2.0、wine1.8、1.6,尝试删除 .wine 文件夹或 wine 前缀,但一旦完成,我甚至无法通过 wineboot 来重新创建它。
我该如何修复此问题?
答案1
找到了。事实上,不仅是 Wine,还有很多程序(LeafPad、LxAppearance 和一些其他程序)都会导致分段错误和崩溃。
因此我strace
调查了这个错误,发现这些应用程序在崩溃时确实尝试加载光标图标文件,但不存在。
虽然我在一周前确实安装了一些光标主题(Breeze 主题,用于替代 Adwaita 主题),但它在当时并没有发挥作用,我也就不再关心它了(因为我使用 i3 作为窗口管理器,改变 i3 的一般图形行为有点复杂)。
显然,只有在切换后下次登录时才会考虑光标变化。一旦加载了“故障”光标主题,当无法找到指定图标时,它不会返回到默认的 X11 光标主题(或 Adwaita),而是会产生一些“超出内存范围”的问题。
问题已解决,卸载后重新正确安装 Breeze 主题(我也安装了很多主题)。在此系统上安装主题的方法如下:
- 将所有主题复制到 ~/.icons/ 中的单独文件夹中
find -type l -delete
使用以下方法删除这些主题文件夹中的所有符号链接- 为每个主题文件夹创建一个符号链接,以便它们也出现在 /usr/share/icons 中,就像它们在 ~/.icons 中一样
- 使用 lxappearance 切换主题(如果您之前没有删除符号链接,那么几乎每个程序都会出现分段错误)。此时,由于缺少链接,所有光标都会出现故障。
- 恢复您在步骤 2 中删除的所有符号链接,例如从主题档案中再次提取它们。
然后重启。一旦主题成功加载并被 LxAppearance 理解,分段错误就不会再发生。
您还可能会注意到,尽管某些主题内部有符号链接,但它们仍支持使用 LXA 开启(例如 AdWaita),而其他一些主题(如 Breeze 及其变体)则不支持,需要您每次都重复这些操作。
啊,Linux 和图形界面。喜欢因缺少光标图标文件而导致的一般系统故障。