免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: zx_wing
打印 上一主题 下一主题

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

论坛徽章:
0
跳转到指定楼层
1 [收藏(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
2 [报告]
发表于 2009-12-22 12:46 |显示全部楼层
原帖由 Godbach 于 2009-12-22 11:28 发表
zw_xiong,图2中流程3和4是怎么关联起来的,条件3返回No的时候,走4吗

是的
这里两条线有点重

论坛徽章:
0
3 [报告]
发表于 2009-12-23 10:53 |显示全部楼层
原帖由 duanjigang 于 2009-12-23 10:05 发表
多谢LZ总结!
看到一个字误,标注下,能否更新下PDF,谢谢!

多谢,我相等Feedback多一点后一起改。
此外,这个“解”字什么地方错了呢 没看出来 。。。。

论坛徽章:
0
4 [报告]
发表于 2009-12-23 11:21 |显示全部楼层
原帖由 duanjigang 于 2009-12-23 11:08 发表


“解”字没错,呵呵,只是这句话中这里用个“解”字好像不通,是不是别的字打成这个字了,哈哈,汉语语句没读懂。。
都咬文嚼字了

这里的“解”表示 “解引用指针”

论坛徽章:
0
5 [报告]
发表于 2009-12-26 17:24 |显示全部楼层
原帖由 nait 于 2009-12-25 14:44 发表
请教楼主,我在用户态用如下代码dump cr3后segfault是什么情况呢?
代码:__asm__("movl %%cr3, %0;": "=r" (a));

这个我要查一下了,我不记得用户态是否可以读CR3了。

论坛徽章:
0
6 [报告]
发表于 2010-01-11 09:36 |显示全部楼层
我重新上传了,但还是现实“附件审核中”,什么原因呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP