Process finished with exit code 139 (interrupted by signal 11: SIGSEGV)-CSDN博客
139错误是Linux错误代码(参考Linux code error 139),异常导致某个进程崩溃产生的,可以出现在任何语言、程序中。其产生的原因也有很多,可能时内存泄漏、依赖的库版本不匹配、环境不满足等。在程序中只能debug逐步定位出错位置,揣测出错原因。
类似的段错误包括:SIGSEGV, SIGABRT, SIGBUS,以下转载自:程序段错误处理
对同一个指针free() 2次可能会产生SIGABRT
SIGBUS与SIGSEGV区别:
SIGBUS(Bus error)意味着指针所对应的地址是有效地址,但总线不能正常使用该指针。通常是未对齐的数据访问所致。
SIGSEGV(Segment fault)意味着指针所对应的地址是无效地址,没有物理内存对应该地址。
结论
SIGSEGV: 一般是非法内存访问错误;
SIGABRT: 重复释放内存则会导致;
SIGBUS : address alignment可能会导致。
程序中处理
https://www.5axxw.com/questions/content/nt5sbt
Linux 报错代码 139 解析与修复方法 (linux error code 139)-数据运维技术
常见的修复方法
虽然 Linux 报错代码 139 可能是一个非常恼人的问题,但是通常来说这个问题是可以解决的。下面我们提供一些常见的修复方法。
1. 检查代码
我们需要检查应用程序的代码。如果应用程序在使用指针时没有正确检查是否空,或者在使用数组时没有检查数组下标是否越界,这可能会导致 Linux 报错代码 139。因此,我们需要仔细检查代码并修复潜在的错误。
2. 检查系统库
有时候,Linux 报错代码 139 可能是由于系统库中的错误引起的。这时候,我们需要检查系统库是否正确安装、更新和配置。如果系统库存在问题,可以尝试重新安装、更新或者更改配置来解决问题。
3. 调试应用程序
在调试应用程序时,我们可以使用 gdb 工具来了解程序在崩溃时发生了什么。通过 gdb,我们可以查看程序状态、变量值、堆栈信息等,找到导致 Linux 报错代码 139 的根本原因,并尝试解决它。
4. 优化编译器选项
有时候,使用不正确的编译选项可能会导致 Linux 报错代码 139。例如,过度优化代码可能会导致指针和数组访问错误。因此,我们需要使用正确的编译器选项来编译应用程序。
5. 使用内存检测工具
我们可以使用内存检测工具来帮助我们找到代码中的内存访问错误。常见的工具包括 Valgrind、Memtest86 等。这些工具可以检测内存访问错误,并帮助我们尽早发现和解决这些问题。
Linux 报错代码 139 可能是一个非常令人沮丧的问题,但是通过一些简单的方法,我们可以找到并解决这些问题。对于开发人员来说,请确保程序代码没有内存访问错误,并使用正确的编译选项来编译应用程序。对于系统管理员来说,请确保系统库正确安装、更新和配置好,并使用内存检测工具来帮助找到和解决内存访问错误。通过这些方法,我们可以提高 Linux 系统的稳定性和可靠性,为用户提供更好的服务。