Eya*_*hem 6 c linux fork solaris glibc
根据Oracle的多线程编程指南,fork()在信号处理程序内部应该是安全的.但是我的进程被卡在信号处理程序中,跟随回溯:
#0 __lll_lock_wait_private () at ../nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:95
#1 0x00007f86e6a9990d in _L_lock_48 () from /lib/x86_64-linux- gnu/libc.so.6
#2 0x00007f86e6a922ec in ptmalloc_lock_all () at arena.c:242
#3 0x00007f86e6ad5e82 in __libc_fork () at ./nptl/sysdeps/unix/sysv/linux/x86_64/../fork.c:95
#4 0x00007f86e7d9f125 in __fork () at ./nptl/sysdeps/unix/sysv/linux/pt-fork.c:25
....
#7 signal handler called
Run Code Online (Sandbox Code Playgroud)
那么malloc在信号处理程序中使用是不安全的fork呢?
提前致谢.
现在,这被 RedHat 列为错误:
Bug 1422161 - glibc:fork 不是异步信号安全的
...
+++ 该 bug 最初是作为 Bug #1422159 的克隆创建的 +++
POSIX 要求 fork 是异步信号安全的。我们目前的实施不是。
| 归档时间: |
|
| 查看次数: |
494 次 |
| 最近记录: |