malloc和ctime_r之间的多线程程序中的死锁

时间:2015-07-22 09:28:02

标签: c++ multithreading time deadlock standard-library

我有一个C ++程序(在Linux上运行--Ubuntu 12.04 - gcc编译器),我在2个线程之间遇到死锁

T1 backtrace: 
#0  __lll_lock_wait_private () at ../nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:93
#1  0x00007f24bd454251 in _L_lock_10628 () at malloc.c:5253
#2  0x00007f24bd451f77 in __GI___libc_malloc (bytes=139793535074336) at malloc.c:2921
#3  0x00007f24bd457da2 in __GI___strdup (s=0x7f24bd54a4c2 "/etc/localtime") at strdup.c:43


T2 backtrace: 
#0  __lll_lock_wait_private () at ../nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:93
#1  0x00007f24bd480ee4 in _L_lock_2180 () at tzset.c:616
#2  0x00007f24bd480cf7 in __tz_convert (timer=0x7f24bd789ee8, use_localtime=1, tp=0x7f2455a0bc70) at tzset.c:619
#3  0x00007f24bd47e570 in ctime_r (t=<optimized out>, buf=0x7f2455a0bcf0 "\364\230\005\277$\177") at ctime_r.c:29

从我正在使用的静态库中调用T2。 我也读过ctime_r不是线程安全的。

我怎样才能避免这种情况发生僵局?

0 个答案:

没有答案