<div dir="ltr"><div><div>Dear,<br><br></div>I started to see a  strange deadlock in some asterisk nodes. For every call, when calling pthread_exit from pbx_thread, the caller thread is stuck inside pthread_exit.<br><br></div><div>After a while, there will be tens-of-thousands of threads having the same backtrace. After some googling, I found this happens because of the default lazy linking of gcc linker.<br><br></div><div>Related issue of stackoverflow: <a href="http://stackoverflow.com/questions/11954527/dlopen-malloc-deadlock">http://stackoverflow.com/questions/11954527/dlopen-malloc-deadlock</a><br><br></div><div>Tried to recompile asterisk using:<br>export LDFLAGS=-Wl,-z,now<br></div><div>./configure && make && make install<br><br></div><div>and this deadlock problem didn't happen again; the problem cause is lazy binding with libgcc.<br><br></div><div>Shall we add this option by default or add it in menuselect?<br><br></div><div>I am using Asterisk 13.4 compiled on Ubuntu 14.04 64 bit with gcc 4.8.2, but probably this applies to other OSs/compilers.<br></div><div><br><br>============<br></div>Deadlock backtrace<br><div>============<br><br>Thread 6138 (Thread 0x2acfc684b700 (LWP 12259)):<br>#0  __lll_lock_wait () at ../nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:135<br>#1  0x00002ace66628672 in _L_lock_953 () from /lib/x86_64-linux-gnu/libpthread.so.0<br>#2  0x00002ace666284da in __GI___pthread_mutex_lock (mutex=0x2ace64b1b968 <_rtld_global+2312>) at ../nptl/pthread_mutex_lock.c:114<br>#3  0x00002ace6490c34e in _dl_open (file=0x2ace66630ccf "libgcc_s.so.1", mode=-2147483647, caller_dlopen=0x2ace6662ea43 <pthread_cancel_init+35>, nsid=-2, argc=1, argv=0x7fff1f751498, env=0x1907320)<br>    at dl-open.c:613<br>#4  0x00002ace670c30f2 in do_dlopen (ptr=ptr@entry=0x2acfc684ad80) at dl-libc.c:87<br>#5  0x00002ace64907ff4 in _dl_catch_error (objname=0x2acfc684ad60, errstring=0x2acfc684ad70, mallocedp=0x2acfc684ad50, operate=0x2ace670c30b0 <do_dlopen>, args=0x2acfc684ad80) at dl-error.c:187<br>#6  0x00002ace670c31b2 in dlerror_run (args=0x2acfc684ad80, operate=0x2ace670c30b0 <do_dlopen>) at dl-libc.c:46<br>#7  __GI___libc_dlopen_mode (name=<optimized out>, mode=<optimized out>) at dl-libc.c:163<br>#8  0x00002ace6662ea43 in pthread_cancel_init () at ../nptl/sysdeps/pthread/unwind-forcedunwind.c:52<br>#9  0x00002ace6662ec0c in _Unwind_ForcedUnwind (exc=0x2acfc684bd70, stop=stop@entry=0x2ace6662cbc0 <unwind_stop>, stop_argument=0x2acfc684ae60) at ../nptl/sysdeps/pthread/unwind-forcedunwind.c:129<br>#10 0x00002ace6662cd40 in __GI___pthread_unwind (buf=<optimized out>) at unwind.c:129<br>#11 0x00002ace66627535 in __do_cancel () at pthreadP.h:280<br>#12 __pthread_exit (value=value@entry=0x0) at pthread_exit.c:29<br>#13 0x000000000057a523 in pbx_thread (data=data@entry=0x2acf0c171588) at pbx.c:6773<br>#14 0x00000000005d734a in dummy_start (data=<optimized out>) at utils.c:1237<br>#15 0x00002ace66626182 in start_thread (arg=0x2acfc684b700) at pthread_create.c:312<br>#16 0x00002ace6708747d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:111<br><br><div><div><br></div><div>-- <br><div class="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div>Yousf Ateya,<br></div><div></div><div>StarkBits</div><div><a href="http://www.starkbits.com" target="_blank">www.starkbits.com</a></div></div></div></div></div>
</div></div></div></div>

<br>
<pre><font size="1" face="Courier New">This e-mail message is intended only for the use of the intended recipient(s).
The information contained therein may be confidential or privileged,
and its disclosure or reproduction is strictly prohibited.
If you are not the intended recipient, please return it immediately to its sender 
at the above address and destroy it. 
</font></pre>