Wine 未处理的堆栈溢出

Wine 未处理的堆栈溢出

我无法在 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 和图形界面。喜欢因缺少光标图标文件而导致的一般系统故障。

相关内容