Hello everyone,<br><br>I'm currently investigating a deadlock we're experiencing under high load in Asterisk and I have a question about hup_handler. I don't yet have enough information on this or a good enough repro to write up a report, but it appears to be a deadlock caused by hup_handler calling into ast_module_reload from a thread that is currently inside a system call. 
<br><br>Can anyone enlighten me about why ast_module_reload needs to be called from the SIGHUP handler? I see that this was added quite a few years ago (may '01), but I can't find anything in the code that explains the reasoning behind it.
<br>

<br>Thanks,<br>Jay<br><br><br>ps. for those who are curious about the deadlock. <br><br>#0&nbsp; 0x003637a2 in _dl_sysinfo_int80 () from /lib/ld- linux.so.2<br>#1&nbsp; 0x004352fb in __write_nocancel () from /lib/tls/libc.so.6<br>
#2&nbsp; 0x003dabdf in _IO_new_file_write () from /lib/tls/libc.so.6<br>#3&nbsp; 0x003d963b in _IO_new_do_write () from /lib/tls/libc.so.6<br>#4&nbsp; 0x003da0e8 in _IO_new_file_overflow () from /lib/tls/libc.so.6<br>#5&nbsp; 0x003dad02 in _IO_new_file_xsputn () from /lib/tls/libc.so.6
<br>#6&nbsp; 0x003d0111 in fputs () from /lib/tls/libc.so.6<br>#7&nbsp; 0x080baff6 in console_verboser (s=0x811cb00 &quot;&nbsp;&nbsp;&nbsp; -- Registered indication country 'fi'\n&quot;, pos=0, replace=0, complete=1) at asterisk.c:975<br>#8&nbsp; 0x08056cf3 in ast_verbose (fmt=0x810589c &quot;&nbsp;&nbsp;&nbsp; -- Registered indication country '%s'\n&quot;) at 
logger.c:896<br>#9&nbsp; 0x080c37ce in ast_register_indication_country (zone=0x8320d58) at indications.c :477<br>#10 0xf6ed19e5 in ind_load_module () at res_indications.c:346<br>#11 0x0805c05d in ast_module_reload (name=0x0) at 
loader.c:257<br>#12 0x080badd1 in hup_handler (num=-512) at asterisk.c:752<br>#13 &lt;signal handler called&gt;<br>#14 0x003637a2 in _dl_sysinfo_int80 () from /lib/ld-linux.so.2<br>#15 0x0050046f in __close_nocancel () from /lib/tls/libpthread.so.0
<br>#16 0xf6edb429 in agi_exec_full (chan=0x8bdcd10, data=Variable &quot;data&quot; is not available.<br>) at res_agi.c:297<br>#17 0x0808503d in pbx_exec (c=0x8bdcd10, app=0x8317d98, data=0xf3f29b59, newstack=1) at pbx.c:545
<br>#18 0xf6ed8ddc in handle_exec (chan=0x0, agi=0x0, argc=3, argv=0xf3f29950) at res_agi.c:1089<br>#19 0xf6edaf3b in agi_exec_full (chan=0x8bdcd10, data=Variable &quot;data&quot; is not available.<br>) at res_agi.c:1823<br>
#20 0x0809063d in pbx_extension_helper (c=0x8bdcd10, con=Variable &quot;con&quot; is not available.<br>) at pbx.c:545<br>#21 0x08090bdc in ast_spawn_extension (c=0x0, context=0xf6ede188 &quot;? &quot;, exten=0xf6ede188 &quot;? &quot;, priority=-152182392, callerid=0xf6ede188 &quot;? &quot;) at 
pbx.c:2218<br>#22 0xf675460c in macro_exec (chan=0x8bdcd10, data=0xf3f31889) at app_macro.c:210<br>#23 0x0808503d in pbx_exec (c=0x8bdcd10, app=0x834b4b0, data=0xf3f31889, newstack=1) at pbx.c:545<br>#24 0xf66ed0fe in dial_exec_full (chan=0x863e6d0, data=Variable &quot;data&quot; is not available.
<br>) at app_dial.c:1455<br>#25 0xf66ef46d in dial_exec (chan=0x0, data=0xf6ede188) at app_dial.c:1616<br>#26 0x0808503d in pbx_exec (c=0x863e6d0, app=0x8353fe8, data=0xf3f32960, newstack=1) at pbx.c:545<br>#27 0xf635ff13 in failoverdial_exec (chan=0x863e6d0, data=0xf3f36f70) at app_failoverdial.c:154
<br>#28 0x0809063d in pbx_extension_helper (c=0x863e6d0, con=Variable &quot;con&quot; is not available.<br>) at pbx.c:545<br>#29 0x080918f6 in __ast_pbx_run (c=0x863e6d0) at pbx.c:2218<br>#30 0x08092830 in ast_pbx_run (c=0x863e6d0) at 
pbx.c:2544<br>#31 0x08093205 in ast_pbx_outgoing_exten (type=0xf658f844 &quot;Local&quot;, format=64, data=0xf658f944, timeout=45000, context=0xf658fd44 &quot;dialout&quot;,<br>&nbsp;&nbsp;&nbsp; exten=0xf658fc44 &quot;outbound-handler&quot;, priority=1, reason=0xf3f39438, sync=2, cid_num=0xf658fe48 &quot;6419208463&quot;, cid_name=0xf658ff48 &quot;&quot;, vars=0xec01c8e0,
<br>&nbsp;&nbsp;&nbsp; account=0xf6590048 &quot;&quot;, channel=0x0) at pbx.c:5001<br>#32 0xf6c90208 in attempt_thread (data=0xf658f730) at pbx_spool.c:266<br>#33 0x004fb341 in start_thread () from /lib/tls/libpthread.so.0<br>#34 0x00443fee in clone () from /lib/tls/libc.so.6
<br><br>