我有一个来源不明的库,它被file识别为32位可执行文件。然而,当我试图在32位CentOS 4.4机器上打开它时,dlopen以SIGFPE终止。当然,如果二进制文件的格式有问题,那么dlopen应该正在处理错误?
所以问题是:什么样的问题会导致dlopen发出SIGFPE?
发布于 2010-04-23 18:43:19
一些可能的原因是:
DSO零除(排除了gdb)
Here是一个关于在GNU系统中以ELF格式生成散列的有趣讨论,当您混合和匹配不是在该发行版/系统上构建的DSO时,ABI不匹配可能会导致系统上的SIGFPE。
使用以下命令对可执行文件运行GDB:
]$ gdb ./my_executable
(gdb) run当程序崩溃时,使用以下命令进行回溯
(gdb) bt如果堆栈以do_lookup_x ()结尾,那么您可能会遇到同样的问题,并且应该确保您的DSO对于您试图加载它的系统是正确的……然而,您确实说它有可疑的起源,所以这个问题可能是一个类似于所述问题的问题。
获取非可疑的库/可执行文件!;)
好运
https://stackoverflow.com/questions/2697745
复制相似问题