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

Linux !ko/5.17-BBRplus AMD64(X86_64)内核致命的 futex_wait 函数死锁问题。

!ko 表示系统内核(system-kernel)

致命:

在 CentOS(RedHat)、Ubuntu、Debian 等多个发行版本 Linux 操作系统上,若人们升级 5.17-BBRplus 版本内核,那么在应用程式频繁的 futex_wait(syscall)等待唤醒时,或会存在 futex_wait 函数发生死锁的疑难问题。

LMP:

futex(2) - Linux manual page (man7.org)

注意:

该问题发生时,应用程序将无法被 KILL -9、系统无法回收进程资源,且若运行在 screen 之中,则 screen 无法被关闭,产生僵尸进程,持续耗费设备硬件及内存资源,直到设备系统被重启。

即为:

该问题常见于,基于 EPOLL、IO-URING 结构,且多线程驱动的应用程序(基于事件/消息驱动模型)。

或应用程式多线程时,大量使用,例如: pthread_mutex_lock,其底层实现通过 syscall 系统调用 futex(内核同步)。

额外补充一点,产生致命问题还有一个附加条件:

A:设备须为多个CPU核,而非一个CPU核,单个CPU核上,并未发现存在该问题。

解决办法:

采用发行版默认的内核版本,例如:5.4、6.1.4 ... 

后记:

该问题在本人一个开源项目工具之中被发现,我本人持续追踪了该问题且尝试进行应用层修复,大约耗费两个月左右把。

起初以为是应用程序本身的问题,把可能会导致该问题发生(deadlock)的地方,全部重新编写,但仍旧没有解决它。

所以,耗费了大量的精力去分析代码本身是否存在,设计之外的疑难问题漏洞,这包含对三方库(依赖项)源代码的细致探索及分析。

并且鉴于,该问题并非是,必定重现的小问题,它复现需要程序稳定工作、且交换大量的数据吞吐量,才有一定的概率性复现,即:至少需要先跑 7*24 小时,所以定位它就变得很困难及费事。


http://www.mrgr.cn/news/47563.html

相关文章:

  • 李正国教授、张钊博士到访美尔斯通,共绘心磁图技术新蓝图
  • 大语言模型兵马未动,数据准备粮草先行
  • Kotlin语言的循环实现
  • INT305 Machine Learning
  • C语言凯撒密码程序分享
  • 开源AI写小说-RWKV-Runner:基于RWKV模型的多功能AI助手
  • 力扣 前缀和
  • Java中的拦截器、过滤器及监听器
  • tcpdump深入浅出
  • C++从入门到起飞之——(multi)set与(multi)map的的使用 全方位剖析!
  • 6. 继承、重写、super、final
  • 算法: 前缀和题目练习
  • Corel VideoStudio Ultimate 会声会影2025旗舰版震憾来袭,会声会影2025旗舰版最低系统要求
  • 如何利用wsl-Ubuntu里conda用来给Windows的PyCharm开发
  • 【gRPC】4—gRPC与Netty
  • windows C++-移除界面工作线程(三)
  • 如何打破双亲委派机制
  • 网络安全知识|网安问答题|OSPF报文协议|抓包工具|路由器环路|序列化与反序列化|磁盘利用率|网络攻防
  • 嵌入式数据结构中线性表的具体实现
  • 免费使用Certbot在Amazon EC2上启用https证书
  • 深入浅出理解七层网络协议
  • 【JavaScript】拷贝对象的几种方式与对比
  • 实践体验密集小目标检测,以小麦麦穗颗粒为基准,基于YOLOv9全系列【yolov9/t/s/m/c/e】参数模型开发构建智能精准麦穗颗粒检测计数系统
  • 小猿口算APP脚本(协议版)
  • 毕设---中国移动网站平台管理系统的设计与实现
  • 结合大语言模型的机械臂抓取操作学习