localtime的死锁问题及规避方式

2024-04-16 22:08

本文主要是介绍localtime的死锁问题及规避方式,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

1、分析进程死锁原因

2、解决进程死锁问题

 


开发webrtc服务端录制时,录制中出现偶现死锁问题,导致一个用户的录制线程始终无法正常退出,录制进程一直残留在服务器上。

1、分析线程死锁原因

通过pstack 进程id 查看进程堆栈,发现如下堆栈信息:

#0  __lll_lock_wait_private () at ../nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:95
#1  0x00007f7690c0894a in _L_lock_10416 () from /lib64/libc.so.6
#2  0x00007f7690c062b5 in __GI___libc_malloc (bytes=140144917086240, bytes@entry=56) at malloc.c:2852
#3  0x00007f7691d9777e in _dl_map_object_deps (map=map@entry=0x7f7691fa2000, preloads=preloads@entry=0x0, npreloads=npreloads@entry=0, trace_mode=trace_mode@entry=0, open_mode=open_mode@entry=-2147483648) at dl-deps.c:511
#4  0x00007f7691d9d88c in dl_open_worker (a=a@entry=0x7f762d7f8958) at dl-open.c:261
#5  0x00007f7691d996c4 in _dl_catch_error (objname=objname@entry=0x7f762d7f8948, errstring=errstring@entry=0x7f762d7f8950, mallocedp=mallocedp@entry=0x7f762d7f8947, operate=operate@entry=0x7f7691d9d780 <dl_open_worker>, args=args@entry=0x7f762d7f8958) at dl-error.c:177
#6  0x00007f7691d9d24b in _dl_open (file=0x7f7690ced0a6 "libgcc_s.so.1", mode=-2147483647, caller_dlopen=<optimized out>, nsid=-2, argc=16, argv=0x7fffc6c85118, env=0x23ca1d0) at dl-open.c:650
#7  0x00007f7690ca6742 in do_dlopen (ptr=ptr@entry=0x7f762d7f8b70) at dl-libc.c:87
#8  0x00007f7691d996c4 in _dl_catch_error (objname=0x7f762d7f8b50, errstring=0x7f762d7f8b58, mallocedp=0x7f762d7f8b4f, operate=0x7f7690ca6700 <do_dlopen>, args=0x7f762d7f8b70) at dl-error.c:177
#9  0x00007f7690ca67df in dlerror_run (operate=operate@entry=0x7f7690ca6700 <do_dlopen>, args=args@entry=0x7f762d7f8b70) at dl-libc.c:46
#10 0x00007f7690ca6851 in __GI___libc_dlopen_mode (name=name@entry=0x7f7690ced0a6 "libgcc_s.so.1", mode=mode@entry=-2147483647) at dl-libc.c:163
#11 0x00007f7690c7dff5 in init () at ../sysdeps/x86_64/backtrace.c:52
#12 0x00007f7690f43953 in pthread_once () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_once.S:103
#13 0x00007f7690c7e10c in __GI___backtrace (array=array@entry=0x7f762d7f8c10, size=size@entry=64) at ../sysdeps/x86_64/backtrace.c:103
#14 0x00007f7690ba9d12 in backtrace_and_maps (do_abort=<optimized out>, do_abort@entry=2, written=<optimized out>, fd=fd@entry=2) at ../sysdeps/unix/sysv/linux/libc_fatal.c:47
#15 0x00007f7690bfd40f in __libc_message (do_abort=do_abort@entry=2, fmt=fmt@entry=0x7f7690cf26a8 "*** Error in `%s': %s: 0x%s ***\n") at ../sysdeps/posix/libc_fatal.c:172
#16 0x00007f7690c02c7e in malloc_printerr (action=3, str=0x7f7690cf2a40 "malloc(): memory corruption (fast)", ptr=<optimized out>) at malloc.c:4895
#17 0x00007f7690c04e8b in _int_malloc (av=av@entry=0x7f7608000020, bytes=bytes@entry=15) at malloc.c:3289
#18 0x00007f7690c062c0 in __GI___libc_malloc (bytes=bytes@entry=15) at malloc.c:2855
#19 0x00007f7690c0bd5a in __GI___strdup (s=0x7f7690ceed59 "/etc/localtime") at strdup.c:42
#20 0x00007f7690c3282d in tzset_internal (always=<optimized out>, explicit=explicit@entry=1) at tzset.c:441
#21 0x00007f7690c32b63 in __tz_convert (timer=0x7f762d7f9628, use_localtime=1, tp=0x7f7690f35580 <_tmbuf>) at tzset.c:629

在localtime中出现了死锁问题

2、解决线程死锁问题

因为是系统函数,这里比较彻底的方式是替换localtime函数。采用gmtime获取系统时间。

 

这篇关于localtime的死锁问题及规避方式的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Java AOP面向切面编程的概念和实现方式

《JavaAOP面向切面编程的概念和实现方式》AOP是面向切面编程,通过动态代理将横切关注点(如日志、事务)与核心业务逻辑分离,提升代码复用性和可维护性,本文给大家介绍JavaAOP面向切面编程的概... 目录一、AOP 是什么?二、AOP 的核心概念与实现方式核心概念实现方式三、Spring AOP 的关

IDEA和GIT关于文件中LF和CRLF问题及解决

《IDEA和GIT关于文件中LF和CRLF问题及解决》文章总结:因IDEA默认使用CRLF换行符导致Shell脚本在Linux运行报错,需在编辑器和Git中统一为LF,通过调整Git的core.aut... 目录问题描述问题思考解决过程总结问题描述项目软件安装shell脚本上git仓库管理,但拉取后,上l

Linux挂载linux/Windows共享目录实现方式

《Linux挂载linux/Windows共享目录实现方式》:本文主要介绍Linux挂载linux/Windows共享目录实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录文件共享协议linux环境作为服务端(NFS)在服务器端安装 NFS创建要共享的目录修改 NFS 配

Vue3视频播放组件 vue3-video-play使用方式

《Vue3视频播放组件vue3-video-play使用方式》vue3-video-play是Vue3的视频播放组件,基于原生video标签开发,支持MP4和HLS流,提供全局/局部引入方式,可监听... 目录一、安装二、全局引入三、局部引入四、基本使用五、事件监听六、播放 HLS 流七、更多功能总结在 v

idea npm install很慢问题及解决(nodejs)

《ideanpminstall很慢问题及解决(nodejs)》npm安装速度慢可通过配置国内镜像源(如淘宝)、清理缓存及切换工具解决,建议设置全局镜像(npmconfigsetregistryht... 目录idea npm install很慢(nodejs)配置国内镜像源清理缓存总结idea npm in

pycharm跑python项目易出错的问题总结

《pycharm跑python项目易出错的问题总结》:本文主要介绍pycharm跑python项目易出错问题的相关资料,当你在PyCharm中运行Python程序时遇到报错,可以按照以下步骤进行排... 1. 一定不要在pycharm终端里面创建环境安装别人的项目子模块等,有可能出现的问题就是你不报错都安装

idea突然报错Malformed \uxxxx encoding问题及解决

《idea突然报错Malformeduxxxxencoding问题及解决》Maven项目在切换Git分支时报错,提示project元素为描述符根元素,解决方法:删除Maven仓库中的resolv... 目www.chinasem.cn录问题解决方式总结问题idea 上的 maven China编程项目突然报错,是

Python爬虫HTTPS使用requests,httpx,aiohttp实战中的证书异步等问题

《Python爬虫HTTPS使用requests,httpx,aiohttp实战中的证书异步等问题》在爬虫工程里,“HTTPS”是绕不开的话题,HTTPS为传输加密提供保护,同时也给爬虫带来证书校验、... 目录一、核心问题与优先级检查(先问三件事)二、基础示例:requests 与证书处理三、高并发选型:

Java发送SNMP至交换机获取交换机状态实现方式

《Java发送SNMP至交换机获取交换机状态实现方式》文章介绍使用SNMP4J库(2.7.0)通过RCF1213-MIB协议获取交换机单/多路状态,需开启SNMP支持,重点对比SNMPv1、v2c、v... 目录交换机协议SNMP库获取交换机单路状态获取交换机多路状态总结交换机协议这里使用的交换机协议为常

前端导出Excel文件出现乱码或文件损坏问题的解决办法

《前端导出Excel文件出现乱码或文件损坏问题的解决办法》在现代网页应用程序中,前端有时需要与后端进行数据交互,包括下载文件,:本文主要介绍前端导出Excel文件出现乱码或文件损坏问题的解决办法,... 目录1. 检查后端返回的数据格式2. 前端正确处理二进制数据方案 1:直接下载(推荐)方案 2:手动构造