【发布时间】:2019-02-02 15:33:57
【问题描述】:
Calloc 是从我的生产代码中的某个信号处理程序调用的。我知道从信号处理程序调用 calloc 是不安全的。 我需要在我的生产代码中找到这样做的点,但是回溯没有帮助。请指导
print $_siginfo.si_signo
我知道上面告诉了当前信号的信号号。但这并不能帮助我找到重点。
下面是调用栈,calloc下面的stacktrace是没有用的。
#26 0x00002aaaaaccfec9 in calloc () from
#27 0x00000000047c522f in Ox4074f61149c39b9f ()
#28 0x00000000047aa93a in Ox4074ff7b773cfdf6 ()
#29 0x000000000468c981 in Ox4074ea3d1f5df78f ()
#30 0x000000000468e667 in ?? ()
#31 0x000000000468f2dd in ?? ()
#32 0x0000000004686f2c in Ox4074ea18721a0b5d ()
#33 0x00000000047b3727 in Ox4075027a04de15e3 ()
#34 0x00000000047efdd4 in ?? ()
#35 <signal handler called>
#36 0x00002aaabc5d0332 in __lll_lock_wait () from /lib64/libpthread.so.0
#37 0x00002aaabc5cb5d8 in _L_lock_854 () from /lib64/libpthread.so.0
#38 0x00002aaabc5cb4a7 in pthread_mutex_lock () from
/lib64/libpthread.so.0
【问题讨论】:
-
我从 siginfo 结构中看到生成了 SIGSTOP 信号。据我了解 SIGSTOP 无法处理。那么谁从信号处理程序中调用 calloc 呢??