[Home]

Summary:ASTERISK-17416: [patch] Jabber and Gtalk Do Not Load After the Reboot
Reporter:Vladimir Mikhelson (vmikhelson)Labels:
Date Opened:2011-02-16 10:47:37.000-0600Date Closed:2012-02-29 21:35:14.000-0600
Priority:MinorRegression?No
Status:Closed/CompleteComponents:Channels/chan_gtalk
Versions:1.8.2 Frequency of
Occurrence
Related
Issues:
Environment:Attachments:( 0) patch.diff
Description:I have noticed my outgoing calls started to fail after the system reboot.

Workaround: stop and re-start Asterisk.

FreePBX 2.8.1.0
Asterisk 1.8.2.3

Analysis revealed the following messages in the "full" log.

Should we preload libiksemel.so in modules.conf?


****** ADDITIONAL INFORMATION ******

[Feb 15 18:52:40] WARNING[2697] loader.c: Error loading module 'chan_jingle.so': libiksemel.so.3: cannot open shared object file: No such file or directory
[Feb 15 18:52:40] WARNING[2697] loader.c: Module 'chan_jingle.so' could not be loaded.
[Feb 15 18:52:40] WARNING[2697] loader.c: Error loading module 'chan_gtalk.so': libiksemel.so.3: cannot open shared object file: No such file or directory
[Feb 15 18:52:40] WARNING[2697] loader.c: Module 'chan_gtalk.so' could not be loaded.
[Feb 15 18:52:40] WARNING[2697] loader.c: Error loading module 'res_jabber.so': libiksemel.so.3: cannot open shared object file: No such file or directory
[Feb 15 18:52:40] WARNING[2697] loader.c: Module 'res_jabber.so' could not be loaded.
Comments:By: Leif Madsen (lmadsen) 2011-02-16 16:04:11.000-0600

Well libiksemel.so isn't an Asterisk module. It is the library that chan_gtalk and chan_jabber use for communications.

By: Vladimir Mikhelson (vmikhelson) 2011-02-16 17:21:21.000-0600

Good to know. Still looks like a timing issue to me.

Is there any mechanism for Asterisk to check on dependencies at the load time?

By: Leif Madsen (lmadsen) 2011-02-18 14:03:15.000-0600

Yes it's all built in and should already be doing that.

By: Leif Madsen (lmadsen) 2011-02-18 14:04:01.000-0600

I'm acknowledging this just so another developer can look at this when I import it. I'm not sure what to ask for, or if this is a bug, or something local.

By: Vladimir Mikhelson (vmikhelson) 2011-03-06 18:48:15.000-0600

Verified all LIBIKSEMEL modules were located in /usr/local/lib

[root@pbx lib]# ls -l
total 1200
-rw-r--r-- 1 root root 180666 Jan 15 21:20 libiksemel.a
-rwxr-xr-x 1 root root    813 Jan 15 21:20 libiksemel.la
lrwxrwxrwx 1 root root     19 Jan 15 21:20 libiksemel.so -> libiksemel.so.3.1.1
lrwxrwxrwx 1 root root     19 Jan 15 21:20 libiksemel.so.3 -> libiksemel.so.3.1.1
-rwxr-xr-x 1 root root 131866 Jan 15 21:20 libiksemel.so.3.1.1
-rwxr-xr-x 1 root root    955 Feb 12 12:09 libmpg123.la
lrwxrwxrwx 1 root root     19 Feb 12 12:09 libmpg123.so -> libmpg123.so.0.29.1
lrwxrwxrwx 1 root root     19 Feb 12 12:09 libmpg123.so.0 -> libmpg123.so.0.29.1
-rwxr-xr-x 1 root root 735581 Feb 12 12:09 libmpg123.so.0.29.1
-rw-r--r-- 1 root root 135496 Feb 27 00:46 libsrtp.a
drwxr-xr-x 2 root root   4096 Feb 12 12:09 mpg123
drwxr-xr-x 2 root root   4096 Feb 12 12:09 pkgconfig
[root@pbx lib]#

Checked the PATH, discovered /usr/local/lib not being in the PATH
[root@pbx lib]# echo $PATH
/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

Modified /etc/profile to include /usr/local/lib in the Path manipulation as follows:

# Path manipulation
if [ "$EUID" = "0" ]; then
       pathmunge /sbin
       pathmunge /usr/sbin
       pathmunge /usr/local/sbin
       pathmunge /usr/local/lib
fi

Rebooted, observed /usr/local/lib in the path:
[root@pbx lib]# echo $PATH
/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/lib:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

The problem did not go away, still jabber and gtalk were not loaded upon reboot.

Verified that running "/etc/init.d/asterisk reload" produces the negative effect whereas running "amportal restart" fixes the issue.

The last observation pretty much confirmed that the problem is rooted in the /etc/init.d/asterisk script.

Compared the scripts.

AMPORTAL:

AMPASTERISKGROUP=asterisk
......
export LD_LIBRARY_PATH=/usr/local/lib
/usr/sbin/safe_asterisk -U asterisk -G $AMPASTERISKGROUP


ASTERISK:

AST_SBIN=/usr/sbin

# Full path to asterisk binary
DAEMON=$AST_SBIN/asterisk

# Full path to safe_asterisk script
SAFE_ASTERISK=$AST_SBIN/safe_asterisk

..........
if [ -f $SAFE_ASTERISK ] ; then
       DAEMON=$SAFE_ASTERISK
fi
if [ $AST_CONFIG ]; then
       ASTARGS="$ASTARGS -C $AST_CONFIG/asterisk.conf"
elif [ $ALTCONF ]; then
       ASTARGS="$ASTARGS -C $ALTCONF"
fi
......
daemon $DAEMON $ASTARGS

Patched the ASTERISK script with "export LD_LIBRARY_PATH=/usr/local/lib"

It worked. See the diff attached.



By: Vladimir Mikhelson (vmikhelson) 2011-03-06 20:15:39.000-0600

Alternatively, /etc/ld.so.conf.d/libiksemel.conf can be created.

libiksemel.conf
/usr/local/lib

Do not forget to run ldconfig to recreate the /etc/ld.so.cache.

By: Dave Bowerman (dbowerman) 2012-02-29 21:35:14.118-0600

Not an Asterisk issue.