CentOS7: How To Debug SEGV When Asterisk Starts With Autoload=yes ?

Home » Asterisk Users » CentOS7: How To Debug SEGV When Asterisk Starts With Autoload=yes ?
Asterisk Users 2 Comments

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 :