Segmentation-Fault-Core-Dumped-报错

参考 Blog

介绍

“Segmentation Fault” 错误是由, 程序试图访问它不应该访问的内存区域时产生的. 而 “Core dump” 表示操作系统已经将程序的内存映像和寄存器状态保存到硬盘上的一个文件中可用于后续调试.

比如 attempting for writing to a read-only location 也会导致这个错误.

“Segmentation” 一词, 定义为程序中在内存保护下可读的 address space, 并且只有其中的 stack and the data segment 的 read-write portion 是可写的. 因此, 在尝试读取该 address space 以外的程序, 或者向 write-only 部分写入时, 会导致一个 “Segmentation fault”.

导致 Segmentation Fault 的典型原因

  1. 尝试访问不存在的内存地址 (超出进程地址空间的部分)
  2. 尝试访问程序无权访问的内存 (如进程上下文中的内核结构)
  3. 尝试写入只读内存 (如代码段)

而这些错误常由一些编程错误引发:

  1. 尝试执行未正确编译的程序 (一些编译器会在存在编译时错误的情况下产生可执行文件)
  2. 栈溢出
  3. 缓冲区溢出
  4. 分配或解引用已释放的指针 (悬空指针, 指向已被删除/释放/归还的内存)
  5. 分配或解引用未初始化的指针 (野指针, 指向随机的内存地址)
  6. 解引用空指针, 通常指向的地址不属于进程的地址空间部分

如何用 Ubuntu 启动镜像 Repair broken packages, 已知无法通过 chroot 到原磁盘使用 apt 命令, 因为会有 Segmentation Fault Core Dumped 报错.


Segmentation-Fault-Core-Dumped-报错
http://example.com/2024/05/06/Segmentation-Fault-Core-Dumped-报错/
作者
Jie
发布于
2024年5月6日
许可协议