CentOS7: How To Debug SEGV When Asterisk Starts With Autoload=yes ?
Hello,
I was tasked to install Asterisk 13.16.0. from source on a CentOS7 platform.
For that purpose, I used an unmaintened script of mine, written 10 monthes ago, and I was surprised to get segmentation violations whenever I ran
“asterisk -cvvvvvvv -U asterisk”.
Usually, my /etc/asterisk/modules.conf file includes “autoload=yes” setting.
Basically, I see two alternative methods:
1. leave “autoload=yes and remove modules one by one in modules.conf. When segmentation violations stops, then focus on latest disabled module.
2.set “autoload=no and add modules one by one in modules.conf. When segmentation violations starts, then focus on latest enabled module.
I’ve not decided yet which method I should use but I must add here that I’m very suprised to observe things like bellow:
*CLI> module show Module Description Use Count Status Support Level res_pjsip.so Basic SIP resource
0 Not Running core
1 modules loaded
*CLI> module unload res_pjsip.so Unable to unload resource res_pjsip.so Command ‘module unload res_pjsip.so’ failed.
*CLI> module load reload show unload
*CLI> module show Module Description Use Count Status Support Level res_pjsip.so Basic SIP resource
0 Not Running core
1 modules loaded
*CLI> module unload res_pjsip.so Unable to unload resource res_pjsip.so Command ‘module unload res_pjsip.so ‘ failed.
*CLI> module reload res_pjsip.so The module ‘res_pjsip.so’ was not properly initialized. Before reloading the module, you must run “module load res_pjsip.so” and fix whatever is preventing the module from being initialized.
*CLI> module load res_pjsip.so Unable to load module res_pjsip.so Command ‘module load res_pjsip.so’ failed.
*CLI> module show Module Description Use Count Status Support Level res_pjsip.so Basic SIP resource
0 Not Running core
1 modules loaded
Form full file:
…
2017-06-12 10:15:05] WARNING[1649] loader.c: Unload failed, ‘res_pjsip.so’
is not loaded.
My questions are:
1. When autoload=yes, if module foo.so depens on bar.so, does loading of foo.so also loads bar.so ?
2. How shall I understand the above load/unload/reload sequence ?
3. I’m inclined to load modules one by one and set autoload=no, but I would like to be 100% sure to avoid runtime errors due to missing module/config file/dependency/whatever. What would you suggest ?
Regards
2 thoughts on - CentOS7: How To Debug SEGV When Asterisk Starts With Autoload=yes ?
Never a good idea. Disable half for starters. Then disable/enable half of the remaining, etc.
3. strace -eopen asterisk -U asterisk -c
IIRC the message that Asterisk prints for loading a module is only printed after the module is loaded, and hence you need strace.
Hi,
I think I was (once more) tricked by SELinux’s enforce mode. Changing it to permissive improved things.
Anyway, as I would like to learn more about strace, SELinux and Asterisk module loading, I’ll leave this thread “open”
and append my findings, in couple of days, when I’ll be back from a business trip.
2017-06-12 15:29 GMT+02:00 Tzafrir Cohen: