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是不可重入函数,在信号处理函数中调用不可重入函数会导致死锁问题。


目录
相关文章
|
11月前
|
SQL 关系型数据库 MySQL
MySQL因为hung住,自动重新启动,InnoDB: Semaphore wait has lasted > 600 seconds
从错误日志中检查,有两个信号量等待时间超长,MySQL自动crash了
256 0
dpkg: 错误: 另外一个进程已经为 dpkg frontend lock 加锁
dpkg: 错误: 另外一个进程已经为 dpkg frontend lock 加锁
542 0
|
7月前
|
SQL 关系型数据库 MySQL
Mysql主从同步报错解决:Fatal error: The slave I/O thread stops because ..
Mysql主从同步报错解决:Fatal error: The slave I/O thread stops because ..
104 0
|
关系型数据库 MySQL
Mysql 查看死锁,解除死锁的方法
Mysql 查看死锁,解除死锁的方法
269 0
自省机制 (Introspective Facility)
自省机制 (Introspective Facility)
63 0
|
SQL 缓存 关系型数据库
slave开启MTS时执行mysqldump引发死锁案例(1)
slave开启MTS时执行mysqldump引发死锁案例
slave开启MTS时执行mysqldump引发死锁案例(1)
|
SQL 关系型数据库 MySQL
slave开启MTS时执行mysqldump引发死锁案例(2)
slave开启MTS时执行mysqldump引发死锁案例
|
网络协议 关系型数据库 数据库连接
致命错误: 锁文件 "postmaster.pid" 已经存在
测试备份命令时发现,数据库连接有问题
1606 0
使用jstack检测Java应用的死锁(deadlock)状态
使用jstack检测Java应用的死锁(deadlock)状态
135 0
使用jstack检测Java应用的死锁(deadlock)状态