SIGBUS 和 SIGSEGV
一、导致SIGSEGV
1.试图对仅仅读映射区域进行写操作 。
2.訪问的内存已经被释放,也就是已经不存在或者越界。
3.官方说法是:
SIGSEGV --- Segment Fault. The possible cases of your encountering this error are:
(1)buffer overflow --- usually caused by a pointer reference out of range.
(2)stack overflow --- please keep in mind that the default stack size is 8192K.
(3)illegal file access --- file operations are forbidden on our judge system.
二、导致SIGBUS信号:
1.硬件故障,不用说,程序猿最常碰上的肯定不是这样的情形。
2.Linux平台上运行malloc(),假设没有足够的RAM。Linux不是让malloc()失败返回。 而是向当前进程分发SIGBUS信号。
注: 对该点执怀疑态度,有机会可自行測试确认当前系统反应。
3.某些架构上訪问数据时有对齐的要求,比方仅仅能从4字节边界上读取一个4字节的 数据类型。IA-32架构没有硬性要求对齐,虽然未对齐的訪问减少运行效率。另外一些架构,比方SPARC、m68k,要求对齐訪问,否则向当前进程分发SIGBUS信号。
4.试图訪问一块无文件内容相应的内存区域,比方超过文件尾的内存区域,或者以前有文件内容相应,如今为还有一进程截断过的内存区域。
三、SIGBUS与SIGSEGV信号一样。能够正常捕获。
SIGBUS的缺省行为是终止当前进程并产生core dump。
四、SIGBUS与SIGSEGV信号的一般差别例如以下:
1.SIGBUS(Bus error)意味着指针所相应的地址是有效地址,但总线不能正常使用该指针。一般是未对齐的数据訪问所致。
2.SIGSEGV(Segment fault)意味着指针所相应的地址是无效地址。没有物理内存相应该地址。
五、弄清楚错误以后,就要查找产生错误的根源,一般我用下面两种方法:
1.gcc -g 编译
ulimit -c 20000
之后执行程序,等core dump
最后gdb -c core <exec file> 来查调用栈
2.使用strace execfile。执行程序,出错时会显示那个系统调用错
SIGBUS 和 SIGSEGV的更多相关文章
- SIGSEGV 和 SIGBUS & gdb看汇编
参考这篇文章: http://blog.chinaunix.net/uid-24599332-id-2122898.html SIGBUS和SIGSEGV也许是我们在平时遇到的次数最多的两个内存错误信 ...
- 关于SIGSEGV错误及处理方法(转)
转自:http://blog.csdn.net/brace/article/details/1102422 今天编程遇到了SIGSEGV错误,比较困惑,所以找了些资料,总结一下: (1)官方说法是 ...
- 关于SIGSEGV错误及处理方法
http://blog.csdn.net/brace/article/details/1102422 今天编程遇到了SIGSEGV错误,比较困惑,所以找了些资料,总结一下: (1)官方说法是: SIG ...
- bug_ _ _常见的bug??
======= 7 Failure [INSTALL_FAILED_INVALID_APK] 执行 adb install -r test.apk.时出现错误 Failure [INSTAL ...
- IOS crash分析
此处不讨论具体的如何根据.dsym文件解析crash log的方式. 什么是崩溃: 不希望出现的中断,APP收到了系统发出的unhandle signal,来源主要由系统内核,处理器,或者应用程序本身 ...
- 【转】 当程序崩溃的时候怎么办 part-1
转自:http://www.tairan.com/archives/1006 有这样一种情形:当我们正在快乐的致力于我们的app时,并且什么看都是无比顺利,但是突然,坑爹啊,它崩溃了.(悲伤地音乐响起 ...
- iOS 并行编程:GCD Dispatch Sources
1 简介 dispatch source是一种用于处理事件的数据类型,这些被处理的事件为操作系统中的底层级别.Grand Central Dispatch(GCD)支持如下的dispatch sour ...
- php几个不起眼儿的小技巧
说是不起眼儿的小技巧,其实应该说是不常用的常规应用吧.很多事情就是这样,知道是一马事儿,会用是一马事儿,精习又是另外一马事儿.而成为高手更是需要扎实的基本功. str_repeat 重复输出字符串就靠 ...
- [ios-必看] IOS调试技巧:当程序崩溃的时候怎么办 iphone IOS
from:http://article.ityran.com/archives/1143 有这样一种情形:当我们正在快乐的致力于我们的app时,并且什么看都是无比顺利,但是突然,坑爹啊,它崩溃了.(悲 ...
随机推荐
- delphi 自定义内存管理
1.主要通过GetMemoryManager来hook原来的内存管理. 2.通过SetMemoryManager来设置你自己的新的内存管理,可以用一个内存池来优化和管理程序的内存调用情况. proce ...
- vue中watch的用法总结以及报错处理Error in callback for watcher "checkList"
首先确认 watch是一个对象,一定要当成对象来用. 对象就有键,有值. 键:就是你要监控的那个家伙,比如说$route,这个就是要监控路由的变化,或者是data中的某个变量. 值可以是函数:就是当你 ...
- 使用LNMP常见问题解答
使用LNMP常见问题解答 一.LNMP的安装过程详解,注:绿色文字为注释,实际使用过程中没有. ##先要下载,并根据不同系统进行安装: wget -c http://soft.vpser.net/ln ...
- Node.js 向一个文件添加内容
最简方案: fs.appendFile('message.txt', 'data to append', function (err) { }); 参考文档: http://www.codeweblo ...
- Sun公司开源游戏服务器
http://www.360doc.com/content/11/0307/12/2902158_98866885.shtml http://www.cnblogs.com/daidu/archive ...
- Java学习笔记1、常用dos命令
cd 改变当前目录 sys 制作DOS系统盘 copy 拷贝文件 del 删除文件 deltree 删除目录树 dir 列文件名 diskcopy 制磁盘 edit 文本编辑 format ...
- 操作系统CPU调度知识点
1.进程基本概念:进程是程序的一次运行. 是系统进程资源分配和调度的基本单位. 2.进程三态:运行状态.就绪状态.堵塞状态.三态转换规则,就绪状态的进程因为调度进程运行状态,运行状态因为时间片用完而进 ...
- Win7 + vs2012 + cocos2d-x2.2 配置开发环境
昨天開始打算学习Cocos2d-x,首先肯定是要在自己的电脑上配置开发环境.昨天折腾了一天,以下将自己在当中遇到的问题与解决方法跟大家分享一下.大多数会遇到的问题,我都遇到了.... 1.安装 ...
- C#实现冲顶大会辅助工具(截图+图像识别+搜索)
前两天在博客园看到 .NET开发一个微信跳一跳辅助程序, 原来可以通过C#连接手机操作.正好朋友圈有人分享“冲顶大会”.冲顶大会是一个在线答题APP.每次12道题,每道题有10秒钟的答题时间,全对者瓜 ...
- Linux下Tomcat 8080 端口被占用的解决办法
希望可以帮助你们 一,停止tomcat 并执行#netstat -an|grep 8080 查看发现有许多80端口进程在里面 二,执行# lsof -i :8080|grep -v "P ...