首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在linux上,什么会导致dlopen发出SIGFPE?

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

Stack Overflow用户
提问于 2010-04-23 18:17:47
回答 1查看 1.6K关注 0票数 3

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

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-04-23 18:43:19

一些可能的原因是:

DSO零除(排除了gdb)

  • Architecture不匹配的可能性)(您是否在相同的架构上自己编译了
  1. ?或者它是预先构建的?)
  2. ABI兼容性问题(将为一个Linux发行版构建的DSO加载到另一个发行版上)。

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

使用以下命令对可执行文件运行GDB:

代码语言:javascript
复制
]$ gdb ./my_executable
(gdb) run

当程序崩溃时,使用以下命令进行回溯

代码语言:javascript
复制
(gdb) bt

如果堆栈以do_lookup_x ()结尾,那么您可能会遇到同样的问题,并且应该确保您的DSO对于您试图加载它的系统是正确的……然而,您确实说它有可疑的起源,所以这个问题可能是一个类似于所述问题的问题。

获取非可疑的库/可执行文件!;)

好运

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2697745

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档