释放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
答案 0 :(得分:0)
请指导
你所观察到的堆栈跟踪最可能的解释:要在不同机器上分析my_new_array = np.something(my_array, my_indices, 23)
print(my_new_array)
[[ 0.45110035 -1.08385534 1.2126054 ]
[ 1.51280316 23.0 -0.31839059]
[-0.00348102 23.0 23.0 ]
[ 23.0 23.0 23.0 ]
[ 23.0 23.0 23.0 ]]
# i.e.:
# col[3:]=23 col[1:]=23 col[2:]=23
从生产机器转储,并且使用错系统库即可。
有关如何正确执行此操作,请参见this answer。