解决Linux系统死机重启稳定性方面的工作回忆(未完待续)

下面纯属个人工作笔记零散记录,主要为了保存一份美好亲切的技术回忆,没打算让别人阅读。写的比较凌乱,抱歉。

博泰做的工作事情:

1:解决中断风暴的事情。
出现中断风暴原因:
1)imx6会固定把很多外设的中断绑在core 1上,里面有uart中断,usb设备中断。
2)外设在中断控制器里面对应的自己设备的中断,有不同类型,有电平中断,上升沿下降沿中断等。
当时usb的中断类型规定是在自己的设备服务程序起来后,必须对imx6的中断控制器发个回执信号,具体是写下usb相关的寄存器。
如果不发回执信号的话,imx6的中断控制器就会误认为设备端那边没有接收到该中断,然后下来会不停的狂发中断到该该设备端的。
这样就会有中断风暴出现。

所以有了上面两点现实情况后,我的那个问题就是在某种特殊的场景下发送的,我记得会把usb代码里面的有个worker,把该worker推迟5秒再发送到任务队列里面。
然后就是这种推迟几秒的操作,导致了usb中断服务程序里面并没有发送回执信号到中断控制器(没有发送中断回执信号,是我们改代码改出的问题)。然后下来出现usb的中断风暴了。

然后串口控制台突然失灵了,下来就是cpu就重启了。

当时定位bug原因就是把uart设备中断绑定到core 2上,然后出现此bug时,串口控制台就没有失灵了,我就可以利用串口控制台进行调试,通过cat /proc/interrupt,
发现产生usb的设备中断数目在狂增,所以定位到usb中断有问题,所以看了usb中断服务程序相关代码,发现是没有发送中断回执信号导致的问题。

2:解决车载机无法显示倒车图像的问题。
就是当时的32位cpu机,虚拟地址空间内核态3G - 4G区域,往4G去的区域有块DMA专用的虚拟内存区域。
然后负责倒车功能的程序需要用dma分配出大块的连续虚拟内存空间后,才能顺利显示倒车图像。
恰巧当时就是这种分配内存出错,导致无法显示倒车图像。
分配内存为什么出错,是因为当时的内核态,为dma分配虚拟内存这块代码写的有问题,所以我调整了下内存分配代码,
然后下来分配虚拟内存成功了,然后下来就顺利显示倒车图像了。

3:解决车载机camera图形显示卡住不动的bug(待添加)

因为内核hrtimer的一些缺陷,而做的修复方案。

4:其他内核崩溃问题
当时出现的内核崩溃问题,还会用objdump工具,解析vmlinux,结合last kmesg中的崩溃pc地址,会看到崩溃时对应的代码在内核的哪一行。
然后当时发现崩溃原因是代码指针相关问题。

 

小米做的事情:

1:内核态内存越界问题

在测试碎片整理内核态代码时,发现测试一段时间后,系统就会崩溃重启。但是根据崩溃的log,无法定位到具体是哪个地方的问题。
所以问了项目组另外一个人crash工具的使用方式,然后用crash工具解析生成的崩溃core文件,结合内核last kmesg里面的崩溃log,发现自己写的内核代码附近有一块内存区域被踩。
然后下来看了下运行kernel当时被编译时,对应生成的system.map文件,在该文件中找这块被踩内存的附近区域,看看附近区域的内存分配读写有无异常行为。
然后突然发现附近区域有个大的数组,是我实现内核碎片整理功能时,定义会频繁读写使用的。
该数组我分析了下,确实会存在数组越界的情形,然后如果越界后,就会去踩他附近的内存区域。

2:fuse文件系统架构及相关passthrough优化缺陷解决(待描述)

该fuse架构缺陷问题会导致手机系统死锁重启。

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Linux系统宕机原因可能有多种,常见的可能有以下几种: 1. 内存泄漏:程序无法正确释放内存,导致内存不足,最终导致系统宕机。 2. 资源竞争:多个进程或线程争夺同一资源(如共享内存),导致系统无法正常工作。 3. 硬件故障:如CPU、内存、硬盘等硬件出现故障,导致系统无法正常工作。 4. 驱动程序错误:驱动程序可能存在bug,或者与某些硬件不兼容,导致系统无法正常工作。 5. 病毒攻击:恶意软件的攻击可能导致系统崩溃。 6. 软件缺陷:某些程序可能存在bug,或者与其他程序不兼容,导致系统无法正常工作。 对于Linux系统的宕机,应该首先考虑是否存在硬件故障,并检查系统日志、内核日志等信息,排查问题。同时,定期更新系统和软件,加强系统的安全性,减少软件缺陷和病毒攻击的风险。在使用第三方软件和驱动程序时,应谨慎选择,避免不必要的风险。 ### 回答2: 在Linux系统中,宕机是指系统突然停止工作的现象,这种情况可能导致数据丢失和其他损失。系统宕机是由多种原因导致的,可能是硬件故障、软件错误或其他问题。 硬件故障是导致Linux系统宕机的最常见原因之一。硬件故障包括:内存问题,磁盘问题和处理器故障。当硬件发生故障时,内核可能无法访问到数据,从而导致系统宕机。 软件错误也是导致Linux系统宕机的常见原因。当软件发生错误时,它可能会导致系统无法响应,从而导致系统停机。例如,如果一个进程死锁,它可能会导致其他进程无法继续运行,从而导致系统宕机。 其他可能导致Linux系统宕机的原因包括:系统配置错误、网络问题、过热等。 面对Linux系统宕机,我们可以采取以下措施来进行修复: 1.检查硬件是否正常。可以使用内存检测工具、磁盘检测工具、处理器诊断工具等进行检查。 2.检查系统配置是否正确。可能是配置文件被更改或删除,导致系统出现问题。 3.升级或回退软件版本,以便解决已知的软件问题。 4.监控系统运行状态,及时发现问题并进行修复。 5.保持系统安全,及时更新补丁,以减少安全漏洞的发生。 总之,Linux系统宕机是一个很严重的问题,我们应该认真分析原因并及时采取措施来解决问题。在使用Linux系统时,需要具备相应的技能和知识,以便快速准确地诊断和解决问题。 ### 回答3: 作为一种稳定而高效的操作系统Linux常常被用于企业级应用和科学研究中。但是,即使Linux系统出现宕机的情况,也要对其进行深入分析,以便找到并解决问题,提升系统稳定性和可靠性。 Linux系统出现宕机的原因有多种,以下是其中的几种。 1.硬件问题: 硬件故障是各种操作系统宕机最常见的原因,Linux系统也不例外。硬件故障包括CPU故障,硬盘故障,内存故障等等。这些故障会导致Linux系统崩溃或重启,无法正常工作。 2.操作系统问题: 操作系统问题可能是由于内核或操作系统软件的缺陷和错误引起的。例如,内核代码缺陷、系统文件损坏、软件安装错误等都可能导致Linux系统宕机。 3.软件问题: Linux系统上运行的软件也存在故障的风险。本身存在的缺陷或其他不兼容问题都可能导致系统宕机。例如,一个开发过程中可能遇到的指针错误可能会导致程序崩溃,并在此之后导致系统崩溃。 4.网络故障: 使用网络连接的设备或其他主机,也可能造成Linux系统的宕机。例如,一个突然出现的全局网络故障可能会导致系统无法正常运行。 针对这些原因,解决方法各不相同。如果是硬件问题,需要及时更换或修复,而如果是软件问题,则需要升级或重新安装软件。如果是网络问题,我们需要检查网络设备或更改网络连接等方式解决。 总之,Linux系统的宕机虽然会对运作产生影响,但也不是大问题。针对不同的问题我们可以采用对应的办法解决,以确保系统稳定性和高效性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值