[asterisk-bugs] [Asterisk 0017162]: missing libs in link command of chan_h323.so: module fails to load

Asterisk Bug Tracker noreply at bugs.digium.com
Tue Jul 27 13:32:33 CDT 2010


The following issue has been UPDATED. 
====================================================================== 
https://issues.asterisk.org/view.php?id=17162 
====================================================================== 
Reported By:                tzafrir
Assigned To:                tzafrir
====================================================================== 
Project:                    Asterisk
Issue ID:                   17162
Category:                   Channels/chan_h323
Reproducibility:            always
Severity:                   major
Priority:                   normal
Status:                     closed
Asterisk Version:           SVN 
JIRA:                       SWP-1280 
Regression:                 No 
Reviewboard Link:            
SVN Branch (only for SVN checkouts, not tarball releases): 1.6.2 
SVN Revision (number only!): 256483 
Request Review:              
Resolution:                 suspended
Fixed in Version:           
====================================================================== 
Date Submitted:             2010-04-10 11:58 CDT
Last Modified:              2010-07-27 13:32 CDT
====================================================================== 
Summary:                    missing libs in link command of chan_h323.so: module
fails to load
Description: 
It used to be that when building with chan_h323 enabled, asterisk would
fail the build after generating channels/h323/Makefile.ast . Now it
doesn't. However values from it don't seem to be used when linking
channels/chan_h323.so .

$ make clean
$ make NOISY_BUILD=1

  ...

gcc -o chan_gtalk.o -c chan_gtalk.c -MD -MT chan_gtalk.o -MF
.chan_gtalk.o.d -MP -pthread
-I/home/tzafrir/Proj/Asterisk/Git/asterisk/include   -I/usr/include/libxml2
-pipe -Wall -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations
-g3 -march=k8  -O0 -fPIC -DAST_MODULE=\"chan_gtalk\"
gcc  -o chan_gtalk.so -pthread      -shared  chan_gtalk.o  -liksemel  
-lssl -lcrypto
gcc -o chan_h323.o -c chan_h323.c -MD -MT chan_h323.o -MF .chan_h323.o.d
-MP -pthread -I/home/tzafrir/Proj/Asterisk/Git/asterisk/include  
-I/usr/include/libxml2 -pipe -Wall -Wstrict-prototypes -Wmissing-prototypes
-Wmissing-declarations -g3 -march=k8  -O0 -fPIC -DAST_MODULE=\"chan_h323\"
make -C h323 Makefile.ast
make[2]: Entering directory
`/home/tzafrir/Proj/Asterisk/Git/asterisk/channels/h323'
g++ -DNDEBUG -I../../include -include ../../include/asterisk/autoconfig.h
-fPIC -D_REENTRANT -Wall -DP_64BIT -fPIC -DPIC -I/usr/share/pwlib//include
-DPTRACING -I/usr/share/openh323/include -M ast_h323.cxx >> *.dep
make[2]: Leaving directory
`/home/tzafrir/Proj/Asterisk/Git/asterisk/channels/h323'
make[2]: Entering directory
`/home/tzafrir/Proj/Asterisk/Git/asterisk/channels/h323'
make[2]: Leaving directory
`/home/tzafrir/Proj/Asterisk/Git/asterisk/channels/h323'
make -C h323 libchanh323.a
make[2]: Entering directory
`/home/tzafrir/Proj/Asterisk/Git/asterisk/channels/h323'
g++ -DNDEBUG -I../../include -include ../../include/asterisk/autoconfig.h
-fPIC  -D_REENTRANT -Wall  -DP_64BIT -fPIC -DPIC
-I/usr/share/pwlib//include -DPTRACING -I/usr/share/openh323/include -O2
-pipe  -c ast_h323.cxx -o ast_h323.o
g++ -DNDEBUG -I../../include -include ../../include/asterisk/autoconfig.h
-fPIC  -D_REENTRANT -Wall  -DP_64BIT -fPIC -DPIC
-I/usr/share/pwlib//include -DPTRACING -I/usr/share/openh323/include -O2
-pipe  -c compat_h323.cxx -o compat_h323.o
g++ -DNDEBUG -I../../include -include ../../include/asterisk/autoconfig.h
-fPIC  -D_REENTRANT -Wall  -DP_64BIT -fPIC -DPIC
-I/usr/share/pwlib//include -DPTRACING -I/usr/share/openh323/include -O2
-pipe  -c cisco-h225.cxx -o cisco-h225.o
g++ -DNDEBUG -I../../include -include ../../include/asterisk/autoconfig.h
-fPIC  -D_REENTRANT -Wall  -DP_64BIT -fPIC -DPIC
-I/usr/share/pwlib//include -DPTRACING -I/usr/share/openh323/include -O2
-pipe  -c caps_h323.cxx -o caps_h323.o
ar crv libchanh323.a   ./ast_h323.o  ./compat_h323.o  ./cisco-h225.o 
./caps_h323.o
a - ./ast_h323.o
a - ./compat_h323.o
a - ./cisco-h225.o
a - ./caps_h323.o
make[2]: Leaving directory
`/home/tzafrir/Proj/Asterisk/Git/asterisk/channels/h323'
g++ -pthread     -shared -o chan_h323.so chan_h323.o h323/libchanh323.a

  ...


$ ldd channels/chan_h323.so
        linux-vdso.so.1 =>  (0x00007fffc9bff000)
        libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x00007f32f9a65000)
        libm.so.6 => /lib/libm.so.6 (0x00007f32f97e3000)
        libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x00007f32f95cc000)
        libpthread.so.0 => /lib/libpthread.so.0 (0x00007f32f93b0000)
        libc.so.6 => /lib/libc.so.6 (0x00007f32f905c000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f32fa015000)

If I try to load that module it would fail, due to missing symbols that
appear to come from openh323.


Now let's rebuild:

$ rm channels/chan_h323.so
$ make NOISY_BUILD=1

  ...

make[1]: Entering directory
`/home/tzafrir/Proj/Asterisk/Git/asterisk/channels'
g++ -pthread     -shared -o chan_h323.so chan_h323.o h323/libchanh323.a
-lopenh323 -lresolv -lpt -lldap -llber -lldap_r -lpthread -lsasl2 -lssl
-lcrypto -lexpat -lresolv -ldl
make[1]: Leaving directory
`/home/tzafrir/Proj/Asterisk/Git/asterisk/channels'

  ...

$ ldd channels/chan_h323.so
        linux-vdso.so.1 =>  (0x00007fffad5ff000)
        libopenh323.so.1.18.0 => /usr/lib/libopenh323.so.1.18.0
(0x00007f5d2d492000)
        libresolv.so.2 => /lib/libresolv.so.2 (0x00007f5d2d27c000)
        libpt.so.1.10.10 => /usr/lib/libpt.so.1.10.10 (0x00007f5d2cc7f000)
        libldap_r-2.4.so.2 => /usr/lib/libldap_r-2.4.so.2
(0x00007f5d2ca34000)
        liblber-2.4.so.2 => /usr/lib/liblber-2.4.so.2 (0x00007f5d2c825000)
        libpthread.so.0 => /lib/libpthread.so.0 (0x00007f5d2c608000)
        libsasl2.so.2 => /usr/lib/libsasl2.so.2 (0x00007f5d2c3ef000)
        libssl.so.0.9.8 => /usr/lib/libssl.so.0.9.8 (0x00007f5d2c19a000)
        libcrypto.so.0.9.8 => /usr/lib/libcrypto.so.0.9.8
(0x00007f5d2bdf9000)
        libexpat.so.1 => /usr/lib/libexpat.so.1 (0x00007f5d2bbd1000)
        libdl.so.2 => /lib/libdl.so.2 (0x00007f5d2b9cd000)
        libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x00007f5d2b6bc000)
        libm.so.6 => /lib/libm.so.6 (0x00007f5d2b43a000)
        libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x00007f5d2b224000)
        libc.so.6 => /lib/libc.so.6 (0x00007f5d2aecf000)
        libgnutls.so.26 => /usr/lib/libgnutls.so.26 (0x00007f5d2ac2c000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f5d2e189000)
        libz.so.1 => /usr/lib/libz.so.1 (0x00007f5d2aa14000)
        libtasn1.so.3 => /usr/lib/libtasn1.so.3 (0x00007f5d2a804000)
        libgcrypt.so.11 => /usr/lib/libgcrypt.so.11 (0x00007f5d2a58b000)
        libgpg-error.so.0 => /usr/lib/libgpg-error.so.0
(0x00007f5d2a388000)

That looks more like bad old chan_h323.


Now, rebuild, but also remove channels/h323/Makefile.ast:

$ rm channels/chan_h323.so channels/h323/Makefile.ast
$ make NOISY_BUILD=1

  ...

make[1]: Entering directory
`/home/tzafrir/Proj/Asterisk/Git/asterisk/channels'
g++ -pthread     -shared -o chan_h323.so chan_h323.o h323/libchanh323.a
make[1]: Leaving directory
`/home/tzafrir/Proj/Asterisk/Git/asterisk/channels'

$ ldd channels/chan_h323.so
        linux-vdso.so.1 =>  (0x00007fffdc3ff000)
        libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x00007f4750a6e000)
        libm.so.6 => /lib/libm.so.6 (0x00007f47507ec000)
        libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x00007f47505d5000)
        libpthread.so.0 => /lib/libpthread.so.0 (0x00007f47503b9000)
        libc.so.6 => /lib/libc.so.6 (0x00007f4750065000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f475101e000)

$ ls channels/h323/Makefile.ast
ls: cannot access channels/h323/Makefile.ast: No such file or directory


As a temporary workaround, I included a simple patch to the main makefile
to allow me to cleanly generate channels/h323/Makefile.ast
======================================================================
Relationships       ID      Summary
----------------------------------------------------------------------
has duplicate       0017507 Channel h323 does not load
has duplicate       0017679 load module error
related to          0017226 [patch] using opal instead of pwlib/ope...
====================================================================== 

---------------------------------------------------------------------- 
 (0125133) lmadsen (administrator) - 2010-07-27 13:32
 https://issues.asterisk.org/view.php?id=17162#c125133 
---------------------------------------------------------------------- 
I'm suspending this issue for now. If the reporter or anyone else would
like to move this issue forward they are welcome to reopen it. Thanks! 

Issue History 
Date Modified    Username       Field                    Change               
====================================================================== 
2010-07-27 13:32 lmadsen        Note Added: 0125133                          
2010-07-27 13:32 lmadsen        Status                   assigned => closed  
2010-07-27 13:32 lmadsen        Resolution               open => suspended   
======================================================================




More information about the asterisk-bugs mailing list