Undefined symbol when loading chan_dahdi.so

Hi,
I’ve just upgraded asterisk from v1.6 to v1.8.4.4, and now asterisk won’t run. dahdi seems to load okay, but asterisk won’t load chan_dahdi.so, and I’m not sure why. When trying to load the module manually:

orion*CLI> module load chan_dahdi.so
Unable to load module chan_dahdi.so
Command ‘module load chan_dahdi.so’ failed.
[Jul 26 19:30:37] WARNING[3169]: loader.c:449 load_dynamic_module: Error loading module ‘chan_dahdi.so’: /usr/lib64/asterisk/modules/chan_dahdi.so: undefined symbol: pri_connect_ack
[Jul 26 19:30:37] WARNING[3169]: loader.c:839 load_resource: Module ‘chan_dahdi.so’ could not be loaded.

I’m relatively new to asterisk. This system was upgraded from a fedora14 system using the atrpms packages. I’ve now removed those, since there is no fedora15 x86_64 support, and am trying to use the fedora packages. I’ve also installed dahdi directly from svn.

rpm -qva|egrep ‘dahdi|asterisk’

asterisk-dahdi-1.8.4.4-2.fc15.x86_64
dahdi-tools-2.4.1-1.fc15.x86_64
dahdi-tools-libs-2.4.1-1.fc15.x86_64
asterisk-1.8.4.4-2.fc15.x86_64

I’m using a TDM400P card:
Digium TDM400P: up to 4 analog ports
wctdm

lsmod|egrep ‘wc|dahdi’

wctdm 34147 0
dahdi 178485 1 wctdm
crc_ccitt 1597 1 dahdi

egrep -v ‘^#|^$|^;’ modules.conf

[modules]
autoload=yes
noload => pbx_gtkconsole.so
load => res_musiconhold.so
noload => chan_alsa.so
noload => chan_console.so
load => chan_dahdi.so
load => chan_sip.so
load => app_queue.so
noload => cdr_radius.so
noload => res_config_ldap.so
noload => res_smdi.so
noload => res_config_pgsql.so

egrep -v ‘^#|^$|^;’ chan_dahdi.conf

[trunkgroups]
[channels]
usecallerid=yes
callwaiting=yes
usecallingpres=yes
callwaitingcallerid=yes
threewaycalling=yes
transfer=yes
canpark=yes
cancallforward=yes
callreturn=yes
echocancel=yes
echocancelwhenbridged=yes
group=1
callgroup=1
pickupgroup=1
signalling = fxs_ks

I’m really not sure what information I can provide to troubleshoot this. Am I missing a module? Or perhaps a package? Are there default fedora installation instructions that might be helpful here?

Thanks,
Alex

Hi, thankfully I was able to figure this one out. Turns out after my upgrade from fedora14 to fedora15, a packaged called libpri1 remained, which I never knew existed. It’s apparently required by the asterisk-dahdi package:

# ldd /usr/lib64/asterisk/modules/chan_dahdi.so

    linux-vdso.so.1 =>  (0x00007fff5175a000)
    libtonezone.so.2.0 => /usr/lib64/libtonezone.so.2.0 (0x00007f4b6f0ec000)
    libpri.so.1.4 => /usr/lib64/libpri.so.1.4 (0x00007f4b6ee70000)
    libss7.so.1 => /usr/lib64/libss7.so.1 (0x00007f4b6ec5d000)
    libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f4b6ea42000)
    libc.so.6 => /lib64/libc.so.6 (0x00007f4b6e6a9000)
    libm.so.6 => /lib64/libm.so.6 (0x00007f4b6e424000)
    /lib64/ld-linux-x86-64.so.2 (0x000000304e000000)

There is apparently a problem with the dependencies because libpri is not required by any package, yet asterisk-dahdi most certainly requires it for the chan_dahdi.so asterisk module.

It was necessary to remove the old libpri1 package with --nodeps, then install the new libpri package.

Have some other problems to work out now, but at least the undefined symbol error is now resolved.

Thanks,
Alex