一、导致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相关推荐

  1. php进程SIGBUS,SIGSEGV错误

    2019独角兽企业重金招聘Python工程师标准>>> 本文通过 OscPress 同步至oschina,最新版本请查看原文: https://www.cellmean.com/?p ...

  2. Linux C/C++ 对于SIGBUS、SIGSEGV等崩溃异常捕获实现

    前段时间我们发表过类似得 Try-Catch 实现,但是该实现本身是存在局限性的,因为它们不能无视 SIGSEGV,SIGSYS,SIGTRAP等崩溃信号,对于某些3RD代码根本无法处理(这些代码没有 ...

  3. SIGSEGV 和 SIGBUS gdb看汇编

    参考这篇文章: http://blog.chinaunix.net/uid-24599332-id-2122898.html SIGBUS和SIGSEGV也许是我们在平时遇到的次数最多的两个内存错误信 ...

  4. Qt调试错误:The inferior stopped because it received a signal from the Operating System.SIGSEGV

    现象: 调试时弹窗: Signal received The inferior stopped because it received a signal from the Operating Syst ...

  5. 关于SIGSEGV错误及处理方法

    关于SIGSEGV错误及处理方法     今天编程遇到了SIGSEGV错误,比较困惑,所以找了些资料,总结一下: (1)官方说法是: SIGSEGV --- Segment Fault. The po ...

  6. c语言sigsegv解决方法,关于SIGSEGV错误及处理方法(转)

    今天编程遇到了SIGSEGV错误,比较困惑,所以找了些资料,总结一下: (1)官方说法是: SIGSEGV --- Segment Fault. The possible cases of your ...

  7. linux SIGSEGV信号

    文章目录 关于SIGSEGV错误及处理方法 https://blog.csdn.net/brace/article/details/1102422 关于SIGSEGV错误及处理方法 今天编程遇到了SI ...

  8. iOS开发socket程序被SIGPIPE信号Terminate的问题

    以前在iphone上写socket的程序的时候,如果尝试send到一个disconnected socket上,就会让底层抛出一个SIGPIPE信号. client端通过 pipe 发送信息到serv ...

  9. Linux 进程间通信

    引言 进程通信的目的: 数据传输 一个进程需要将它的数据发送给另一个进程,发送的数据量在一个字节到几M字节之间 共享数据 多个进程想要操作共享数据,一个进程对共享数据 通知事 一个进程需要向另一个或一 ...

最新文章

  1. 计算机莫名其妙的游戏网页弹出,自动弹出游戏网页怎么办 自动弹出游戏网页解决方法【详解】...
  2. 多少人没熬过45-55这段危险期? 为家人, 请多看一眼!
  3. 2020 年 4 月全国程序员工资新鲜出炉,我拖后腿了!
  4. 史上最详细 最官方的 SpringBoot和SpringCloud的版本选择!!!! 绝对让你心服口服的版本选择方式!!!
  5. .html,.htm和.shtml的区别
  6. Java数字格式:DecimalFormat
  7. ppp和chap的区别
  8. 《Scikit-Learn与TensorFlow机器学习实用指南》第15章 自编码器
  9. 【二十】Jmeter:插件二次开发—— JMeter 源码导入 eclipse
  10. python将矩阵顺时针旋转90度_python 二维数组90度旋转的方法
  11. 计算机大学英语融合的课题有什么,【计算机信息论文】计算机信息管理学科交叉融合研究(共3910字)...
  12. Clojure 学习入门(2)- eclipse 插件
  13. (2)卷积 卷积和
  14. 解决tf报Graph disconnected错误
  15. 计算机无法 鼠标没反应,笔记本电脑鼠标动不了怎么办(鼠标没反应怎么解决)...
  16. 荣之学:跨境电商和淘宝哪个好?
  17. 如何卸载Cygwin
  18. KJava在移动设备中的应用
  19. swf用html怎么写,swfobject.js html中写入一个swf文件
  20. Linux多线程(最全,收藏)

热门文章

  1. 机器学习 对数几率回归模型(Python实现)
  2. 对数几率回归——Logistics Regression原理
  3. Relation-Aware Collaborative Learning for Unified Aspect-Based Sentiment Analysis(ACL 2020)
  4. 嵌入式c int转字符串_如何将角度分量嵌入transloco翻译字符串中
  5. AAAI'23 | 利用大规模辅助数据提升端到端语音翻译系统
  6. SpringBoot 官方文档示例:(17)SpringBoot 通过命令行参数指定配置文件的路径
  7. 对电冰箱制冷系统检漏抽真空的方法
  8. 电冰箱在冬季不能正常启动的故障
  9. java 读取文件夹下的所有文件和文件夹名
  10. 东北农业大学计算机学院,学院概况