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

linux segfault at 问题定位实践

问题:

程序崩溃,打印为:

app[13016]: segfault at 7fb668d29930 ip 00007fb668d3c23c sp 00007fb668e7de20 error 7 in mydefine.so[7fb668d34000+11000]

定位步骤:

  1. 基础分析数据,大概了解反馈信息

(根据chatGPT)

这是由名为“app”的应用程序2生成的消息,指示应用程序由于分段错误而崩溃。

特定的错误消息指示故障发生在内存地址“7fb668d29930”,

指令指针“ip”位于地址“00007fb668d3c23c”。

崩溃时的“sp”或堆栈指针位于地址“00007fb668e7de20”。

“错误 7”代码指示与无效内存引用相关的特定类型的分段错误。

消息的最后一部分提供有关崩溃原因的其他信息。它指示崩溃发生在名为“mydefine.so”的共享库中,并且该库的基址为“7fb668d34000”,大小为“11000”字节。这表明应用程序正在使用共享库中的代码,并且错误发生在此代码中。

总体而言,此错误消息提供了一些用于调试崩溃的有用信息,包括发生故障的内存地址和指令指针、分段错误的类型以及发生崩溃时正在使用的共享库的名称和位置。但是,可能需要进一步调查以确定故障的具体原因并解决问题。

2.计算偏移地址

偏移地址= 指令指针 - 库的基地址。

    7fb668d3c23c 
-   7fb668d34000 
=    823C 

这里仅仅使用了ip和so的基地址,其他的内存和sp地址信息暂未使用。

3.寻找对应的汇编位置

用了objdump -S mydefine.so | grep 823c:

反馈:

1823c:       40 88 ac 08 30 1a 01    mov    %bpl,0x11a30(%rax,%rcx,1)

和我们要的823c有点不一样,多了10000.

这里查看了objdump -S mydefine.so的信息中包含了:

Disassembly of section .text:0000000000010f00 <deregister_tm_clones>:10f00:    48 8d 3d 31 16 01 00     lea    0x11631(%rip),%rdi        # 22538 <__TMC_END__>10f07:    48 8d 05 2a 16 01 00     lea    0x1162a(%rip),%rax        # 22538 <__TMC_END__>............

这个根本没有823C,最低从10000开始?

由于计算的是指令地址,应该是.text中的偏移吧?大概是从10000偏移,这样的话1823c就是要找到的出错的地址。

接着就将objdump -S mydefine.so > 1.txt

生成独立的文件,用编辑工具打开来查看对应的1823c是属于哪一个函数,然后打开源码进行对应,定位是哪一个函数的哪一行出现的问题。

如本例子的大概定位如下:

0000000000018206 <A_hello>:18206:    55                       push   %rbp18207:    41 57                    push   %r1518209:    41 56                    push   %r14......1822e:    48 63 8b bc 02 00 00     movslq 0x2bc(%rbx),%rcx18235:    48 69 c9 00 6f 00 00     imul   $0x6f00,%rcx,%rcx1823c:    40 88 ac 08 30 1a 01     mov    %bpl,0x11a30(%rax,%rcx,1)......

4.对照源码,寻找出错源码行

由于可能程序使用了编译优化指令(如-O3等),所以需要对照着源码来猜测大概的行。

这里需要个人对汇编的基本理解和objdump生成的右侧的提示注释来自行判断。

这里这个单个例子的结果还是满意的,后续其他例子有问题再补充其他情况如何定位问题。

相关文章:

linux segfault at 问题定位实践

问题&#xff1a;程序崩溃&#xff0c;打印为&#xff1a;app[13016]: segfault at 7fb668d29930 ip 00007fb668d3c23c sp 00007fb668e7de20 error 7 in mydefine.so[7fb668d3400011000]定位步骤&#xff1a;基础分析数据&#xff0c;大概了解反馈信息&#xff08;根据chatGPT&…...

SpringCloud+SpringCloudAlibaba

架构的演进1.1单体架构将所有业务场景的表示层、业务逻辑层和数据访问层放在一个工程中&#xff0c;最终经过编译、打包&#xff0c;部署在一台服务器上。◆ 1.1.1单体架构的优点1&#xff09;部署简单: 由于是完整的结构体&#xff0c;可以直接部署在一个服务器上即可。2&…...

华为OD机试 - 路灯照明(C 语言解题)【独家】

最近更新的博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南)华为od机试,独家整理 已参加机试人员的实战技巧文章目录 使用说明本期题目:路灯照明…...

Linux程序替换

Linux程序替换创建子进程的目的&#xff1f;程序替换如何实现程序替换&#xff1f;什么是程序替换&#xff1f;先见一见单进程版本的程序替换程序替换原理多进程版本的程序替换execl函数组简易版Shell创建子进程的目的&#xff1f; 目的:为了帮助父进程完成一些特定的任务&…...

@JsonFormat @DataTimeFormat 时间格式

省流&#xff1a;用JsonFormat即可有时候会看到入参dto里&#xff0c;在时间类型的变量上用DateTimeFormat&#xff0c;代码如下。public class XXXdto{DateTimeFormat(pattern "yyyy-MM-dd hh:mm:ss")private Date startDate; }这是为了入参传日期格式的值。即前端…...

带你玩转modbusTCP通信

modbus TCP Modbus TCP是一种基于TCP/IP协议的Modbus通信协议&#xff0c;它是Modbus协议的一种变体&#xff0c;用于在以太网上进行通信。Modbus TCP协议是一种开放的通信协议&#xff0c;它支持多种编程语言和操作系统&#xff0c;并且可以在不同的硬件和软件平台上进行通信…...

2021牛客OI赛前集训营-提高组(第三场)T2交替

2021牛客OI赛前集训营-提高组&#xff08;第三场&#xff09; 题目大意 一个长度为nnn的数组aaa&#xff0c;每秒都会变成一个长度为n−1n-1n−1的新数组a′aa′&#xff0c;其变化规则如下 如果当前数组aaa的大小nnn为偶数&#xff0c;则对于新数组a′aa′的每一个位置i(1≤…...

论文投稿指南——中文核心期刊推荐(金融)

【前言】 &#x1f680; 想发论文怎么办&#xff1f;手把手教你论文如何投稿&#xff01;那么&#xff0c;首先要搞懂投稿目标——论文期刊 &#x1f384; 在期刊论文的分布中&#xff0c;存在一种普遍现象&#xff1a;即对于某一特定的学科或专业来说&#xff0c;少数期刊所含…...

华为OD机试 - 不等式(C 语言解题)【独家】

最近更新的博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南)华为od机试,独家整理 已参加机试人员的实战技巧文章目录 使用说明本期题目:不等式题…...

90后老板用低代码整顿旅行社,创2000万年收,他是怎么做到的?(真实)

热爱旅游的92年成都小伙猴哥&#xff0c;大学毕业后开了一家旅行社&#xff0c;主要从事川藏、云南定制游服务。 从今年春节开始&#xff0c;国内各地旅游业开始复苏&#xff0c;向旅行社打电话咨询的人越来越多。 旅游的人多是好事&#xff0c;也是一种烦恼&#xff0c;因为…...

Apache Dubbo 存在反序列化漏洞(CVE-2023-23638)

漏洞描述 Apache Dubbo 是一款轻量级 Java RPC 框架 该项目受影响版本存在反序列化漏洞&#xff0c;由于Dubbo在序列化时检查不够全面&#xff0c;当攻击者可访问到dubbo服务时&#xff0c;可通过构造恶意请求绕过检查触发反序列化&#xff0c;执行恶意代码 漏洞名称Apache …...

【YOLO】YOLOv8训练自定义数据集(4种方式)

YOLOv8 出来一段时间了&#xff0c;继承了分类、检测、分割&#xff0c;本文主要实现自定义的数据集&#xff0c;使用 YOLOV8 进行检测模型的训练和使用 YOLOv8 此次将所有的配置参数全部解耦到配置文件 default.yaml&#xff0c;不再类似于 YOLOv5&#xff0c;一部分在配置文件…...

linux重置root用户密码

重置root密码 法一&#xff1a;rd.break 第 1 步&#xff1a;重启系统编辑内核参数 第 2 步&#xff1a;找到 linux 这行&#xff0c;在此行末尾空格后输入rd.break &#xff08;End键也可直接进入行尾&#xff09; 成功后显示页面为&#xff1a; 第 3 步&#xff1a;查看。…...

【DBC专题】-10-CAN DBC转换C语言代码Demo_接收Rx报文篇

案例背景(共15页精讲)&#xff1a; 该篇博文将告诉您&#xff0c;CAN DBC转换C语言代码Demo&#xff0c;只需传递对应CAN信号关联参数&#xff0c;无需每个信号"左移"和"右移"&#xff0c;并举例介绍&#xff1a;在CANoe/Canalyzer中CAPL中的应用&#xff…...

AtCoder292 E 思维

题意&#xff1a; 给定一副n(n≤3000)n(n\leq 3000)n(n≤3000)个顶点&#xff0c;mmm条有向边的图&#xff0c;可以在图中添加有向边&#xff0c;求添加的最少边数&#xff0c;使得这副图满足&#xff1a;如果顶点aaa到顶点bbb有边&#xff0c;顶点bbb到ccc右有边&#xff0c;…...

20230309英语学习

What Is Sleep Talking? We Look at the Science 为什么人睡觉会说梦话&#xff1f;来看看科学咋说 Nearly everyone has a story about people talking in their sleep.Though it tends to be more common in children, it can happen at any age:A 2010 study in the jour…...

CAD转换PDF格式怎么弄?教你几种方法轻松搞定!

CAD是从事与艺术创作相关等行业的打工人们必需的工作软件&#xff0c;可以用来完成建筑设计图、设计图纸等。在日常的工作中&#xff0c;一些伙伴经常需要传输图纸给合作方来完成探讨。但是CAD图纸需要使用专业软件才能打开&#xff0c;这就给文件传送带来了一定的困难。而且传…...

AtCoder 259E LCM

题意&#xff1a; 以唯一分解形式给出nnn个数&#xff1a; aipi,1ei,1pi,2ei,2...pi,tei,ta_{i}p_{i,1}^{e_{i,1}}p_{i,2}^{e_{i,2}}...p_{i,t}^{e_{i,t}} ai​pi,1ei,1​​pi,2ei,2​​...pi,tei,t​​ 现在可以将某个数改为111&#xff0c;求所有改法中&#xff0c;有多少个…...

MQTT协议-取消订阅和取消订阅确认

MQTT协议-取消订阅和取消订阅确认 客户端向服务器取消订阅 取消订阅的前提是客户端已经通过CONNECT报文连接上服务器&#xff0c;并且订阅了一个主题 UNSUBSCRIBE—取消订阅 取消订阅的报文同样是由固定报头可变报头有效载荷组成 固定报头由两个字节组成&#xff0c;第一个…...

90后小伙,用低代码“整顿”旅游业,年入2000万,他是怎么做到的?

热爱旅游的92年成都小伙猴哥&#xff0c;大学毕业后开了一家旅行社&#xff0c;主要从事川藏、云南定制游服务。 从今年春节开始&#xff0c;国内各地旅游业开始复苏&#xff0c;向旅行社打电话咨询的人越来越多。 旅游的人多是好事&#xff0c;也是一种烦恼&#xff0c;因为…...

基于算法竞赛的c++编程(28)结构体的进阶应用

结构体的嵌套与复杂数据组织 在C中&#xff0c;结构体可以嵌套使用&#xff0c;形成更复杂的数据结构。例如&#xff0c;可以通过嵌套结构体描述多层级数据关系&#xff1a; struct Address {string city;string street;int zipCode; };struct Employee {string name;int id;…...

业务系统对接大模型的基础方案:架构设计与关键步骤

业务系统对接大模型&#xff1a;架构设计与关键步骤 在当今数字化转型的浪潮中&#xff0c;大语言模型&#xff08;LLM&#xff09;已成为企业提升业务效率和创新能力的关键技术之一。将大模型集成到业务系统中&#xff0c;不仅可以优化用户体验&#xff0c;还能为业务决策提供…...

云原生核心技术 (7/12): K8s 核心概念白话解读(上):Pod 和 Deployment 究竟是什么?

大家好&#xff0c;欢迎来到《云原生核心技术》系列的第七篇&#xff01; 在上一篇&#xff0c;我们成功地使用 Minikube 或 kind 在自己的电脑上搭建起了一个迷你但功能完备的 Kubernetes 集群。现在&#xff0c;我们就像一个拥有了一块崭新数字土地的农场主&#xff0c;是时…...

深入剖析AI大模型:大模型时代的 Prompt 工程全解析

今天聊的内容&#xff0c;我认为是AI开发里面非常重要的内容。它在AI开发里无处不在&#xff0c;当你对 AI 助手说 "用李白的风格写一首关于人工智能的诗"&#xff0c;或者让翻译模型 "将这段合同翻译成商务日语" 时&#xff0c;输入的这句话就是 Prompt。…...

Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)

概述 在 Swift 开发语言中&#xff0c;各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过&#xff0c;在涉及到多个子类派生于基类进行多态模拟的场景下&#xff0c;…...

Java-41 深入浅出 Spring - 声明式事务的支持 事务配置 XML模式 XML+注解模式

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; &#x1f680; AI篇持续更新中&#xff01;&#xff08;长期更新&#xff09; 目前2025年06月05日更新到&#xff1a; AI炼丹日志-28 - Aud…...

从零实现STL哈希容器:unordered_map/unordered_set封装详解

本篇文章是对C学习的STL哈希容器自主实现部分的学习分享 希望也能为你带来些帮助~ 那咱们废话不多说&#xff0c;直接开始吧&#xff01; 一、源码结构分析 1. SGISTL30实现剖析 // hash_set核心结构 template <class Value, class HashFcn, ...> class hash_set {ty…...

10-Oracle 23 ai Vector Search 概述和参数

一、Oracle AI Vector Search 概述 企业和个人都在尝试各种AI&#xff0c;使用客户端或是内部自己搭建集成大模型的终端&#xff0c;加速与大型语言模型&#xff08;LLM&#xff09;的结合&#xff0c;同时使用检索增强生成&#xff08;Retrieval Augmented Generation &#…...

#Uniapp篇:chrome调试unapp适配

chrome调试设备----使用Android模拟机开发调试移动端页面 Chrome://inspect/#devices MuMu模拟器Edge浏览器&#xff1a;Android原生APP嵌入的H5页面元素定位 chrome://inspect/#devices uniapp单位适配 根路径下 postcss.config.js 需要装这些插件 “postcss”: “^8.5.…...

【Linux系统】Linux环境变量:系统配置的隐形指挥官

。# Linux系列 文章目录 前言一、环境变量的概念二、常见的环境变量三、环境变量特点及其相关指令3.1 环境变量的全局性3.2、环境变量的生命周期 四、环境变量的组织方式五、C语言对环境变量的操作5.1 设置环境变量&#xff1a;setenv5.2 删除环境变量:unsetenv5.3 遍历所有环境…...