免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 52147 | 回复: 56

月经结贴 -- 《Segmentation Fault in Linux》 [复制链接]

论坛徽章:
0
发表于 2009-12-21 17:24 |显示全部楼层
写在前面的话
    最近CU(chinaunix)出现了很多问segmentation fault的帖子,其实这也是个“月经贴”了,泡CU几年,每个月都有人问。为了减少重复回帖,笔者结合自己的经验,总结了SIGSEGV在Linux中产生的机理,并用实际例子概括哪些编程错误容易引发SIGSEGV。由于本人经验有限,文中难免有疏漏和错误,请发现的朋友发信到xing5820@163.com指正,笔者好即使修改。

内容提要
  本文简单介绍了Segmentation fault发生的原因,结合实际例子描述了内核向用户态程序发送SIGSEGV信号的流程。文中以实例回答了常见的一些SIGSEGV问题,例如“为什么函数返回了栈还可以访问?”、“为什么free()后的内存仍然可以使用”、“为什么我遇到的是SIGSEGV而不是SIGILL信号”等。最后笔者结合自己的经验,列举了一些预防SIGSEGV的编程习惯,供大家参考。SIGSEGV严格依赖操作系统、编译器、硬件平台,本文基于Linux、GCC、32bit IA32架构,但对其他平台操作系统也有借鉴意义。


大家在阅读的过程中发现什么错误,或我没有讲到的segfault情况,请及时指出,我好更正。

此贴附件不知为何没有了,大家可以到
http://bbs.chinaunix.net/thread-1632005-1-2.html
下载

[ 本帖最后由 zx_wing 于 2010-1-15 22:04 编辑 ]

Segmentation fault in Linux.pdf

309.26 KB, 下载次数: 4987

Segmentation fault in Linux.pdf

309.26 KB, 下载次数: 1747

评分

参与人数 2可用积分 +36 收起 理由
Godbach + 30 精品文章
liying_gg + 6 原创内容

查看全部评分

论坛徽章:
0
发表于 2009-12-21 17:35 |显示全部楼层
最近内核版真是好文辈出啊!

论坛徽章:
0
发表于 2009-12-21 20:05 |显示全部楼层
楼主是大牛啊
俺只能找typo啦
17页“内核使用 fixup的技巧来处理在处理此类错误。”

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
发表于 2009-12-21 21:07 |显示全部楼层
原帖由 platinum 于 2009-12-21 17:35 发表
最近内核版真是好文辈出啊!


众人拾柴火焰高啊。多谢zw_xing兄分享啊。

论坛徽章:
0
发表于 2009-12-21 22:56 |显示全部楼层
内核中的page fault应该也总结总结

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
发表于 2009-12-22 11:28 |显示全部楼层

回复 #1 zx_wing 的帖子

zw_xiong,图2中流程3和4是怎么关联起来的,条件3返回No的时候,走4吗

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
发表于 2009-12-22 11:41 |显示全部楼层
系统的看了一下全文,大有裨益,多谢zw_xing兄。

论坛徽章:
0
发表于 2009-12-22 12:46 |显示全部楼层
原帖由 Godbach 于 2009-12-22 11:28 发表
zw_xiong,图2中流程3和4是怎么关联起来的,条件3返回No的时候,走4吗

是的
这里两条线有点重

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
发表于 2009-12-22 12:57 |显示全部楼层
原帖由 zx_wing 于 2009-12-22 12:46 发表

是的
这里两条线有点重

明白了

论坛徽章:
0
发表于 2009-12-23 10:05 |显示全部楼层
多谢LZ总结!
看到一个字误,标注下,能否更新下PDF,谢谢!
2 指针越界和SIGSEGV。。。
一个越界的指针,如果不引用它。。。而即使引用了一个越界的指针

[ 本帖最后由 duanjigang 于 2009-12-23 10:08 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP