libGL.so.1 中的分段错误

libGL.so.1 中的分段错误

不久前我发布了一个关于在 Debian Wheezy 64 位中运行 32 位应用程序

谢谢@约瑟夫R我能够运行它而没有出现令人讨厌的could not find libGL.so.1错误。

然而现在,应用程序在执行过程中崩溃了。崩溃后,终端中出现此消息:

Aug  2 10:04:16 acs-laptop kernel: [  213.472753] aquaria[7006]: segfault at 8 ip 00000000f41238fb sp 00000000ffceabc0 error 4 in libGL.so.1.2[f4107000+54000]

重新安装驱动程序并没有解决问题,我不确定是什么原因造成的。 32位版本libGL.so在64位系统上运行有bug吗?

答案1

libgl1-mesa-glx安装的是 OpenGL API 的免费实现。

通常专有驱动程序会提供自己的二进制实现(优化、硬件加速)。

您已经重新安装了驱动程序(如何?哪个?),但可能会安装 amd64 libGL 版本,而不是游戏寻找 i386(这样什么也不会发生)

您可以在游戏运行时验证使用的是哪个版本,例如:

grep libGL /proc/$(pidof aquaria)/maps

或者再次使用ldd上一篇文章中建议的命令。

无论如何,问题可能是游戏正在使用 libGL 中未实现的某些功能,或者以意想不到的方式使用某个功能,了解问题的唯一方法是调试

您可能想要安装该libgl1-mesa-glx-dbg:i386软件包,并且当段错误发生时,您可能会得到一些函数名称,而不是数字。

我从来没有gdb在 64 位机器上使用过来调试 32 位二进制文​​件(我会检查一下),但是 abacktrace对于开始来说会很有用。

那么如果是你正在玩的水族馆..它是开源的(不是游戏数据),这意味着很有可能让它工作,甚至构建游戏来运行 64 位本机。

编辑

  • 是原始存储库
  • 是一个
  • 这里论坛提供了一些有用的信息,关于安装新二进制文件后的 cp 脚本
  • 这里为 ubuntu amd64 和 i386 预构建的软件包,幸运的是您可以尝试按原样安装 deb,或者至少aquaria从 amd64 中提取可执行文件.deb

如果你想尝试一下这个......备份首先是你的工作副本

相关内容