gpt4 book ai didi

linux - 在 Linux 上,什么会导致 dlopen 发出 SIGFPE?

转载 作者:可可西里 更新时间:2023-11-01 11:50:54 25 4
gpt4 key购买 nike

我有一个来源可疑的库,它被 file 识别为 32 位可执行文件。然而,当我尝试在 32 位 CentOS 4.4 机器上 dlopen 它时,dlopen 以 SIGFPE 终止。当然,如果二进制文件的格式有问题,那么 dlopen 应该处理错误?

所以问题是:什么样的问题会导致 dlopen 发出 SIGFPE?

最佳答案

一些可能的原因是:

  1. 除以零(用 gdb 排除)
  2. 架构不匹配(您是在同一架构上自行编译 DSO 的吗?还是预构建的?)
  3. ABI 兼容性问题(在另一个 Linux 发行版上加载为一个 Linux 发行版构建的 DSO)。

Here是一个关于 GNU 系统中 ELF 格式哈希生成的有趣讨论,当您混合和匹配不是在该发行版/系统上构建的 DSO 时,ABI 不匹配会导致系统上出现 SIGFPE。

针对您的可执行文件运行 GDB:

]$ gdb ./my_executable
(gdb) run

当程序崩溃时,获取回溯

(gdb) bt

如果堆栈以 do_lookup_x () 结尾,那么您可能会遇到同样的问题,并且应该确保您的 DSO 对于您尝试加载它的系统是正确的...但是您确实这么说了具有可疑来源,因此该问题可能是与所描述的问题类似的 ABI 问题。

获取一个可靠的库/可执行文件! ;)

祝你好运

关于linux - 在 Linux 上,什么会导致 dlopen 发出 SIGFPE?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2697745/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com