syslog 引发死锁

简介: <span style="color:rgb(55,55,55); font-family:'Helvetica Neue',Helvetica,Arial,sans-serif; font-size:15px; line-height:24px; background-color:rgb(255,255,255)">主线程在写 syslog,同时在信号处理函数中也在写syslog,当主线
主线程在写 syslog,同时在信号处理函数中也在写syslog,当主线程在写的时候,如果同时触发了信号,那么将会导致死锁。
$pstack 4289
#0 0x00000036768df9ee in __lll_lock_wait_private () from /lib64/libc.so.6
#1 0x000000367688d0dd in _L_lock_1685 () from /lib64/libc.so.6
#2 0x000000367688ce27 in __tz_convert () from /lib64/libc.so.6
#3 0x00000036768cff7d in __vsyslog_chk () from /lib64/libc.so.6
#4 0x00000036768d0580 in syslog () from /lib64/libc.so.6
#5 0x00000000004c8c81 in SigChldHandler ()
#6
#7 0x000000367688d2ad in __tzfile_compute () from /lib64/libc.so.6
#8 0x000000367688ce5f in __tz_convert () from /lib64/libc.so.6
#9 0x00000036768cff7d in __vsyslog_chk () from /lib64/libc.so.6
#10 0x00000036768d0580 in syslog () from /lib64/libc.so.6

#11 0x00000000004c5c21 in HandleNewBinRequest ()


根本原因是syslog内部会调用malloc,而malloc是不可重入函数,在信号处理函数中调用不可重入函数会导致死锁问题。


目录
相关文章
|
26天前
|
数据库连接
系统日志使用问题之如何区分WARN和ERROR级别的日志
系统日志使用问题之如何区分WARN和ERROR级别的日志
|
2月前
|
SQL 关系型数据库 MySQL
|
关系型数据库 MySQL
Mysql 查看死锁,解除死锁的方法
Mysql 查看死锁,解除死锁的方法
290 0
自省机制 (Introspective Facility)
自省机制 (Introspective Facility)
73 0
|
网络协议 关系型数据库 数据库连接
致命错误: 锁文件 "postmaster.pid" 已经存在
测试备份命令时发现,数据库连接有问题
1795 0
使用jstack检测Java应用的死锁(deadlock)状态
使用jstack检测Java应用的死锁(deadlock)状态
149 0
使用jstack检测Java应用的死锁(deadlock)状态
进程crash报错1000
进程crash,在应用程序日志里看到有1000 的报错
进程crash报错1000