当前位置: 首页 > news >正文

38 非法地址访问的 segment fault 的调试

前言

在前面一篇文章 coredump 的生成和使用 中, 我们看到 "测试用例2 - 非法地址访问"

产生了一个 segment fault 

我们这里 就来调试一下 这个 segment fault 是怎么回事 

 

 

测试用例

#include "stdio.h"int main(int argc, char** argv) {int x = 2;
int y = 3;
int z = x + y;char* p = (char*) z;
char pValue = *p;//char divZero = z / 0;//setenv("name", "jerry");
//char* envName = getenv("name");
//printf(" envName = %s, %s \n", envName, z);}

 

执行报错如下 

(initramfs) ./Test07CoreDump 
[  838.608478] Test07CoreDump[288]: segfault at 5 ip 0000000000400507 sp 00007fffab5dd360 error 4 in Test07CoreDump[400000+1000]
Segmentation fault

 

 

调试这个 segment fault

根据 address 查找最近的 vma, 根据 5 来找 

找到的事程序文件本身加载到内存中的一块 vma [0x400000 - 401000] 

但是显然 address 是不属于这块 vma 的, 这块 vma 也不允许向下扩张, 走的 bad_area 的处理

b2850966dcf1483e9768f88363b893a5.png

 

 

如果是用户 模式产生的 bad_area, 创建一个 SIGSEGV 信号量发送给目标进程 

我们这里断点的是 内核日志输出的地方 

709332bdb2e44a1ca959e52186dc8a53.png 

 

输出异常日志的地方 

6c772d4b530b44d485059b9ab66302ce.png

 

 

发送 SIGSEGV 信号的地方 

29c5e2f7f0444a1cb1e14df85436f9f6.png

 

 

 

 

 

http://www.lryc.cn/news/109797.html

相关文章:

  • c++中c_str()的用法详解
  • 谈谈关于新能源汽车的话题
  • EventBus 开源库学习(二)
  • 4_Apollo4BlueLite电源管理
  • Pytorch入门学习——快速搭建神经网络、优化器、梯度计算
  • 举例说明typescript的Exclude、Omit、Pick
  • 记录一次Linux环境下遇到“段错误核心已转储”然后利用core文件解决问题的过程
  • WPF中自定义Loading图
  • 用html+javascript打造公文一键排版系统14:为半角和全角字符相互转换功能增加英文字母、阿拉伯数字、标点符号、空格选项
  • 叮咚买菜财报分析:叮咚买菜第二季度财报将低于市场预期
  • 设计模式行为型——中介者模式
  • Vue——formcreate表单设计器自定义组件实现(二)
  • 人脸验证(Face verification) 和 人脸识别(Face recognition) 的区别
  • 前端如何打开钉钉(如何唤起注册表中路径与软件路径不关联的软件)
  • 数据可视化入门指南
  • React 18 响应事件
  • 面试总结-c++
  • Spring(九) - 解惑 spring 嵌套事务.2
  • Android Studio API 33 获取当前连接的WIFI名称
  • ICCV 2023 | 半监督三维目标检测新SOTA:密集匹配和量化补偿
  • python+django+mysql项目实践三(用户管理)
  • Java多线程 | 操作线程的方法详解
  • 【ConcurrentHashMap1.7源码】十分钟带你深入ConcurrentHashMap并发解析
  • 程序框架-事件中心模块-观察者模式
  • 通过AOP的ProceedingJoinPoint获取方法信息
  • 【JavaSE】初步认识类和对象
  • python中的matplotlib画饼图(数据分析与可视化)
  • 用Rust实现23种设计模式之 职责链模式
  • 进销存管理中的技术创新和数字化转型
  • 与“云”共舞,联想凌拓的新科技与新突破