这种信息一般都是由内存访问越界造成的,不管是用户态程序还是内核态程序访问越界都会出core, 并在系统日志里面输出一条这样的信息。
    这条信息的前面分别是访问越界的程序名,进程ID号,访问越界的地址以及当时进程堆栈地址等信息,比较有用的信息是最后的error number. 在上面的信息中,error number是6,转成二进制就是110, 即bit2=1, bit1=1, bit0=0, 按照上面的解释,我们可以得出这条信息是由于用户态程序读操作访问越界造成的:
error number是由三个字位组成的,从高到底分别为bit2 bit1和bit0,所以它的取值范围是0~7.
bit2: 值为1表示是用户态程序内存访问越界,值为0表示是内核态程序内存访问越界
bit1: 值为1表示是写操作导致内存访问越界,值为0表示是读操作导致内存访问越界
bit0: 值为1表示没有足够的权限访问非法地址的内容,值为0表示访问的非法地址根本没有对应的页面,也就是无效地址
内存不足不会引起段错误,段错误通常出现在访问了非法的地址后,非法地址分为3类:
    1. 访问的地址没有对应的物理内存。这类错误主要出现在越界访问,例如栈越界。比如说当前进程的栈只有5个页和它对应,共20k大小(x86平台),你访问的地址超过了这个范围,就会发生segmentation fault;
    2.对地址的操作与该地址的属性不符合。例如该地址对应的内存是只读的,如文本段,你却试图进行写操作;
    3.低权限访问高权限地址。这类情况发生在用户进程试图访问内核空间。例如x86中,TASK_SIZE以上的地址为内核空间,当用户态进程试图访问这些地址时,就会出现”segmentation fault“了
具体格式如下:

解决方法:

readelf -s a.out 可以查看符号表,根据rip所指的地址就能找到对应的函数了。
objdump -d a.out > a.s 可以反汇编,不但能找到函数,还能直接定位到指令。

注:本人测试没找到map文件(即a.out),故报错的程序和函数并未找到,有找到的博友可以回复告知操作过程,在此谢过!

另附上老外的原理解释:

  1. Well the rip pointer tells you the instruction that caused the crash. You need to look it up in a map file.
  2. In the map file you will have a list of functions and their starting address. When you load the application it is loaded to a base address.
  3. The rip pointer - the base address gives you the map file address. If you then search through the map file for a function that starts at
  4. an address slightly lower than your rip pointer and is followed, in the list, by a function with a higher address you have located the function that crashed.
  5. From there you need to try and identify what went wrong in your code. Its not much fun but it, at least, gives you a starting point.
  6. Edit: The "segfault at" bit is telling you, i'd wager, that you have dereferenced a NULL pointer. The rsp is the current stack pointer.
  7. Alas its probably not all that useful. With a memory dump you "may" be able to figure out more accurately where you'd got to in the function
  8. but it can be really hard to work out, exactly, where you are in an optimised build

转载于:https://blog.51cto.com/xxrenzhe/1185915

php[6491]: segfault at * rip * rsp * error 6相关推荐

  1. kernel: segfault at *** rip *** rsp *** error

    kernel : *** : segfault at 0000000000000011 rip 00000032f8670454 rsp 00 0000004128fd30 error 4 这种信息一 ...

  2. segfault rip rsp error

    原文地址: http://blog.csdn.net/aicon/article/details/6269752 一个后台程序,编译的时候加了 -g -ggdb,也生成了map文件,开了core du ...

  3. Linux遭遇Segmentation fault

    原文地址::http://www.cppblog.com/sleepwom/archive/2012/01/13/164091.html Program terminated with signal ...

  4. Linux开机启动过程(8):初期中断(缺页中断)和异常处理

    内核初始化 第二部分 在原文的基础上添加了5.10.13部分的源码解读. 初期中断和异常处理 在上一个 部分 我们谈到了初期中断初始化.目前我们已经处于解压缩后的Linux内核中了,还有了用于初期启动 ...

  5. rsp rbp 寄存器用途

    概念 在最新的 x86_x64 架构中,通常用 rbp.rsp 这两个寄存器来保存进程栈的状态(需要硬件支持). 其中 rbp 保存的是栈中当前执行函数的基本地址,当前执行函数所有存储在栈上的数据都要 ...

  6. Linux 段错误详解

    1 背景 笔者早年写过一篇:<可恶的"Segmentation faults"之初级总结篇>,网络转载甚多.多年下来,关于段错误的讨论依旧很热烈,该问题也还是很常见.所 ...

  7. Linux内核深入理解系统调用(1):初始化-入口-处理-退出

    Linux内核深入理解系统调用(1):初始化-入口-处理-退出 rtoax 2021年3月 1. Linux 内核系统调用简介 这次提交为 linux内核解密 添加一个新的章节,从标题就可以知道, 这 ...

  8. Linux内核深入理解中断和异常(2):初步中断处理-中断加载

    Linux内核深入理解中断和异常(2):初步中断处理-中断加载 rtoax 2021年3月 1. 总体概览 关于idt_table结构的填充,在5.10.13中流程为: idt_setup_early ...

  9. Linux内核深入理解中断和异常(1)

    Linux内核深入理解中断和异常(1) rtoax 2021年3月 1. 中断介绍 内核中第一个子系统是中断(interrupts). 1.1. 什么是中断? 我们已经在这本书的很多地方听到过 中断( ...

  10. linux--Segfault详解

    linux--Segfault详解 1 简介 1.1 段错误的定义 1.2 痛点 2 知识点 2.1 报错内容 2.2 error number 3 排除步骤(借助汇编) 3.1 日志确定错误类型 3 ...

最新文章

  1. 测试字符串读取类: TStringReader
  2. Java相当于C#中的#region
  3. 【Linux高频命令专题(24)】grep
  4. VS2015一新建项目就出现未将对象引用设置到对象的实例怎么办?
  5. 包含Iphlpapi.h 编译错误 error C2065: 'HRASCONN'
  6. sql查询结果集根据指定条件排序的方法
  7. 从Linus Torvalds一封发飙的电邮开始谈设备树究竟是棵什么树?
  8. Js拼接嵌套php代码,分享一个js文件中嵌套php会出错的问题
  9. linux svn 指定端口号,linux(Ubuntu)搭建Subversion服务器+修改svn端口号
  10. java中getup用法_你还在 Java 代码中写 set/get 方法?赶快试试这款插件吧!
  11. 助力数字化运营:商超自动抓单系统
  12. spring boot2.0.4集成druid,用jmeter并发测试工具调用接口,druid查看监控的结果
  13. 跳频技术——学习总结(一)
  14. 免驱无线网卡插到电脑上突然驱动变成瑞昱网卡了无法正常联网
  15. 揭秘:张国荣葬礼,袁咏仪为何哭到失控?
  16. 用c语言实现1+2+3+...+n求和
  17. 弹性盒子 -- flex
  18. 装修工程施工质量控制工作方法及措施
  19. cityscapes数据集
  20. from home edition to professional on windows

热门文章

  1. bootchart.jar 编译过程
  2. Android Studio 主题、字体大小的设置
  3. php mysql 命令行模式_phpstudy(mysql命令行的增删改查)
  4. 一次Linux驱动升级的问题记录
  5. 错误使用 eig 输入矩阵包含 nan 或 inf_特斯拉AI主管提醒你神经网络的几大常见错误...
  6. 局域网打印机怎么连接_怎么连接同事已共享的打印机?
  7. 1949年-2021年历史县级行政区划分布数据 中国行政村边界数据、乡镇街道边界、行政区划边界
  8. 尺取法---poj3601
  9. vue脚手架实现选项卡_从零一步步实现一个前端脚手架
  10. python中 是什么运算_“是”运算符在Python中做了什么?