利用coredump文件分析分析设备卡死问题

2024-02-20 14:32

本文主要是介绍利用coredump文件分析分析设备卡死问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在应用程序异常时,如内存非法访问,越界导致程序崩溃时。Core文件将记录设备当前的堆栈信息,寄存器等值。当设备出现卡死问题时,使用主动kill掉卡死线程,使设备应用程序挂掉,生成coredump文件,这样就可以分析堆栈,查看设备具体卡主到哪里,那把锁未释放,该方法对于解决死锁问题极为方便。

1 问题描述

在系统测试过程中出现设备IE控件无法正常登陆的情况,通过ps命令发现davinci进程存在,没有出现异常崩溃的现象.通过taskShow命令发现有线程累加同时有D状态线程出现,排查如下:

第一步:通过taskShow命令查看线程的运行状态,看是否有D状态
在这里插入图片描述
第二步:记录出现卡住线程的id信息,以后分析堆栈时使用

第三步:选一个线程,此处选择图1中线程id25298ipc_sdk110011线程。然后手动让程序生成coredump文件。
在这里插入图片描述
在这里插入图片描述

第四步:在gdb调试模式下输入info thread 命令
在这里插入图片描述
5步:输入t 133命令跳转到对应的栈帧中,在输入bt full命令查看堆栈信息
在这里插入图片描述
第6步:输入t 107 命令跳转到对应的栈帧中,在输入bt full命令查看堆栈信息
在这里插入图片描述
第六步:走查代码发现
netclient_set_piccfg_v30接口实现中,首先会获取一把全局锁g_param_mutexsem,然后再执行save_devinfo_config保存数据库。由于save_devinfo_config保存数据库出现异常,而用户使用控件登陆,首先要进行用户验证,要获取全局锁g_param_mutexsem。由于g_param_mutexsem一直被ipc_sdk110011线程占用,所以IE登陆时就出现卡在现象。

对于某些C库,可以直接通过查看g_param_mutexsem信息,获取到占用该锁的线程,这样就不需要本文中记录线程id信息了。如R0平台的GLIBC版本,可以用如下图9方式获知占用锁的线程,可以看到__owner=986为占用该全局锁的线程。

在这里插入图片描述

这篇关于利用coredump文件分析分析设备卡死问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/728531

相关文章

深度解析Nginx日志分析与499状态码问题解决

《深度解析Nginx日志分析与499状态码问题解决》在Web服务器运维和性能优化过程中,Nginx日志是排查问题的重要依据,本文将围绕Nginx日志分析、499状态码的成因、排查方法及解决方案展开讨论... 目录前言1. Nginx日志基础1.1 Nginx日志存放位置1.2 Nginx日志格式2. 499

kkFileView启动报错:报错2003端口占用的问题及解决

《kkFileView启动报错:报错2003端口占用的问题及解决》kkFileView启动报错因office组件2003端口未关闭,解决:查杀占用端口的进程,终止Java进程,使用shutdown.s... 目录原因解决总结kkFileViewjavascript启动报错启动office组件失败,请检查of

SpringBoot 异常处理/自定义格式校验的问题实例详解

《SpringBoot异常处理/自定义格式校验的问题实例详解》文章探讨SpringBoot中自定义注解校验问题,区分参数级与类级约束触发的异常类型,建议通过@RestControllerAdvice... 目录1. 问题简要描述2. 异常触发1) 参数级别约束2) 类级别约束3. 异常处理1) 字段级别约束

Linux之platform平台设备驱动详解

《Linux之platform平台设备驱动详解》Linux设备驱动模型中,Platform总线作为虚拟总线统一管理无物理总线依赖的嵌入式设备,通过platform_driver和platform_de... 目录platform驱动注册platform设备注册设备树Platform驱动和设备的关系总结在 l

Olingo分析和实践之EDM 辅助序列化器详解(最佳实践)

《Olingo分析和实践之EDM辅助序列化器详解(最佳实践)》EDM辅助序列化器是ApacheOlingoOData框架中无需完整EDM模型的智能序列化工具,通过运行时类型推断实现灵活数据转换,适用... 目录概念与定义什么是 EDM 辅助序列化器?核心概念设计目标核心特点1. EDM 信息可选2. 智能类

Olingo分析和实践之OData框架核心组件初始化(关键步骤)

《Olingo分析和实践之OData框架核心组件初始化(关键步骤)》ODataSpringBootService通过初始化OData实例和服务元数据,构建框架核心能力与数据模型结构,实现序列化、URI... 目录概述第一步:OData实例创建1.1 OData.newInstance() 详细分析1.1.1

Olingo分析和实践之ODataImpl详细分析(重要方法详解)

《Olingo分析和实践之ODataImpl详细分析(重要方法详解)》ODataImpl.java是ApacheOlingoOData框架的核心工厂类,负责创建序列化器、反序列化器和处理器等组件,... 目录概述主要职责类结构与继承关系核心功能分析1. 序列化器管理2. 反序列化器管理3. 处理器管理重要方

Python错误AttributeError: 'NoneType' object has no attribute问题的彻底解决方法

《Python错误AttributeError:NoneTypeobjecthasnoattribute问题的彻底解决方法》在Python项目开发和调试过程中,经常会碰到这样一个异常信息... 目录问题背景与概述错误解读:AttributeError: 'NoneType' object has no at

WinForm跨线程访问UI及UI卡死的解决方案

《WinForm跨线程访问UI及UI卡死的解决方案》在WinForm开发过程中,跨线程访问UI控件和界面卡死是常见的技术难题,由于Windows窗体应用程序的UI控件默认只能在主线程(UI线程)上操作... 目录前言正文案例1:直接线程操作(无UI访问)案例2:BeginInvoke访问UI(错误用法)案例

Spring的RedisTemplate的json反序列泛型丢失问题解决

《Spring的RedisTemplate的json反序列泛型丢失问题解决》本文主要介绍了SpringRedisTemplate中使用JSON序列化时泛型信息丢失的问题及其提出三种解决方案,可以根据性... 目录背景解决方案方案一方案二方案三总结背景在使用RedisTemplate操作redis时我们针对