栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

'int main(){return(0);上的浮点异常(SIGFPE);}'

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

'int main(){return(0);上的浮点异常(SIGFPE);}'

这听起来像是很远的事…但是您可以尝试以下方法吗?

$ readelf -a fail

并寻找GNU_HASH动态标签?我的猜测是二进制文件使用

GNU_HASH
,而您
ld.so
太旧了,无法理解。对GNU哈希部分的支持是在2006年左右添加到glibc的,并且主线发行版在2007年或2008年左右才成为仅GNU哈希的发行版。您的Centrino发行
glibc

2003年 ,它早于GNU哈希。

如果

ld.so
不能理解GNU哈希,它将尝试改用旧的ELF哈希部分,该部分为空。特别是,我怀疑您的崩溃发生在此行中
elf/do-lookup.h

for (symidx = map->l_buckets[hash % map->l_nbuckets];

由于链接器可能无法理解GNU哈希,因此

l_nbuckets
将其设置为0,从而导致崩溃。请注意,这
map
是一个具有约100个结构元素的大型结构,并且
l_nbuckets
在较新的结构中
ld.so
0x164= 4*89
,在较旧的结构中,该结构
ld.so
可能恰好是该成员)位于结构的第90个成员附近。

要查看这是否 最终 是问题,请使用

-Wl,--hash-style=sysv
或进行构建,
-Wl,--hash-style=both
并查看崩溃是否消失。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/405913.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号