Linux fdisk -l引起内核死锁分析

2024-04-24 19:08

本文主要是介绍Linux fdisk -l引起内核死锁分析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Linux fdisk -l查看分区,结果打印一个分区后引起内核死锁。

打印

root@www:~# fdisk -lDisk /dev/mtdblock0: 2 MB, 2621440 bytes
255 heads, 63 sectors/track, 0 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytesDisk /dev/mtdblock0 doesn't contain a valid partition tableINFO: task update_mcu.sh:254 blocked for more than 120 seconds.Not tainted 3.18.20 #2
"echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
update_mcu.sh   D c0887e9c     0   254      1 0x00000000
Backtrace: 
[<c0887b60>] (__schedule) from [<c08880f4>] (schedule+0xa0/0xa4)r10:019b00ec r9:00000002 r8:ffffffff r7:cb0c2200 r6:ce94d448 r5:cd81a018r4:cd81a000
[<c0888054>] (schedule) from [<c08883e4>] (schedule_preempt_disabled+0x30/0x40)
[<c08883b4>] (schedule_preempt_disabled) from [<c0889c3c>] (__mutex_lock_slowpath+0xc0/0x188)r4:ce94d444 r3:00000001
[<c0889b7c>] (__mutex_lock_slowpath) from [<c0889d3c>] (mutex_lock+0x38/0x3c)r9:ce94d444 r8:cf844590 r7:cf844500 r6:cd81b938 r5:cf8449f4 r4:ce94d010
[<c0889d04>] (mutex_lock) from [<c03c8f74>] (msm_nand_read_oob+0x3f0/0x8fc)
[<c03c8b84>] (msm_nand_read_oob) from [<c03c95c8>] (msm_nand_read_partial_page+0x148/0x22c)

分析

可以看到是内核死锁超时2分钟打印出backtrace,死锁函数msm_nand_read_oob中的mutex_lock锁等待超时死锁,通过Linux下使用额外增加文件方式查看debug信息添加开关代码如下:

static int msm_nand_read_oob(struct mtd_info *mtd, loff_t from,struct mtd_oob_ops *ops)
{if(1 == io_run_num) {printk(KERN_ERR "eason in\n");}mutex_lock(&info->lock);if(1 == io_run_num) {printk(KERN_ERR "eason out\n");}

fdisk -l死锁后打印如下:

eason in
eason out
QCMAP:bringup v6
enter sleep, msm_uport->obs: 0
msm_hs_pm_resume(): jun test1
resule from sleep, msm_uport->obs: 0
eason in
enter sleep, msm_uport->obs: 0
没有out出

移远回复说不支持查看nand flash,如果有其他设备可以使用fdisk /dev/*进行查看,原因未告知,且暂不解决;我个人认为这不合理的,其他设备上面fdisk就可以查看flash,且导致了内核死锁应该就是可以查看原因和解决的。

原因待继续查。。。

这篇关于Linux fdisk -l引起内核死锁分析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/932589

相关文章

SQL Server数据库死锁处理超详细攻略

《SQLServer数据库死锁处理超详细攻略》SQLServer作为主流数据库管理系统,在高并发场景下可能面临死锁问题,影响系统性能和稳定性,这篇文章主要给大家介绍了关于SQLServer数据库死... 目录一、引言二、查询 Sqlserver 中造成死锁的 SPID三、用内置函数查询执行信息1. sp_w

Linux脚本(shell)的使用方式

《Linux脚本(shell)的使用方式》:本文主要介绍Linux脚本(shell)的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录概述语法详解数学运算表达式Shell变量变量分类环境变量Shell内部变量自定义变量:定义、赋值自定义变量:引用、修改、删

MyBatis Plus 中 update_time 字段自动填充失效的原因分析及解决方案(最新整理)

《MyBatisPlus中update_time字段自动填充失效的原因分析及解决方案(最新整理)》在使用MyBatisPlus时,通常我们会在数据库表中设置create_time和update... 目录前言一、问题现象二、原因分析三、总结:常见原因与解决方法对照表四、推荐写法前言在使用 MyBATis

Python主动抛出异常的各种用法和场景分析

《Python主动抛出异常的各种用法和场景分析》在Python中,我们不仅可以捕获和处理异常,还可以主动抛出异常,也就是以类的方式自定义错误的类型和提示信息,这在编程中非常有用,下面我将详细解释主动抛... 目录一、为什么要主动抛出异常?二、基本语法:raise关键字基本示例三、raise的多种用法1. 抛

Linux链表操作方式

《Linux链表操作方式》:本文主要介绍Linux链表操作方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、链表基础概念与内核链表优势二、内核链表结构与宏解析三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势六、典型应用场景七、调试技巧与

Java死锁问题解决方案及示例详解

《Java死锁问题解决方案及示例详解》死锁是指两个或多个线程因争夺资源而相互等待,导致所有线程都无法继续执行的一种状态,本文给大家详细介绍了Java死锁问题解决方案详解及实践样例,需要的朋友可以参考下... 目录1、简述死锁的四个必要条件:2、死锁示例代码3、如何检测死锁?3.1 使用 jstack3.2

详解Linux中常见环境变量的特点与设置

《详解Linux中常见环境变量的特点与设置》环境变量是操作系统和用户设置的一些动态键值对,为运行的程序提供配置信息,理解环境变量对于系统管理、软件开发都很重要,下面小编就为大家详细介绍一下吧... 目录前言一、环境变量的概念二、常见的环境变量三、环境变量特点及其相关指令3.1 环境变量的全局性3.2、环境变

github打不开的问题分析及解决

《github打不开的问题分析及解决》:本文主要介绍github打不开的问题分析及解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、找到github.com域名解析的ip地址二、找到github.global.ssl.fastly.net网址解析的ip地址三

Linux系统中的firewall-offline-cmd详解(收藏版)

《Linux系统中的firewall-offline-cmd详解(收藏版)》firewall-offline-cmd是firewalld的一个命令行工具,专门设计用于在没有运行firewalld服务的... 目录主要用途基本语法选项1. 状态管理2. 区域管理3. 服务管理4. 端口管理5. ICMP 阻断

Linux实现线程同步的多种方式汇总

《Linux实现线程同步的多种方式汇总》本文详细介绍了Linux下线程同步的多种方法,包括互斥锁、自旋锁、信号量以及它们的使用示例,通过这些同步机制,可以解决线程安全问题,防止资源竞争导致的错误,示例... 目录什么是线程同步?一、互斥锁(单人洗手间规则)适用场景:特点:二、条件变量(咖啡厅取餐系统)工作流