[Freeswitch-users] loopback-b channels stay alive

Tamas Cseke cstomi.levlist at gmail.com
Thu Apr 2 09:46:57 PDT 2009


Hello,

We originate loopback channels and they end up in calling sofia
and transfer the call to a fifo.

If we have a heavy call volume loopback-b channels don't hangup properly.
They stay in core.db.
Unfortunetly we can't reproduce it on test boxes but happens every day. 
On this box we had to turn off debug logging, becase we had I/O problems.

The only thing I saw in log that switch_core_session_thread don't call

    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_NOTICE, "Session %" 
SWITCH_SIZE_T_FMT " (%s) Ended\n",
                      session->id, 
switch_channel_get_name(session->channel));

in these cases.
We have local patches (I don't think they are related) and we are 
running FS on virtual machine and we had some problem with that before 
so I'm not sure, but I guess it is maybe a lock or mutex problem.

I tried SWITCH_DEBUG_RWLOCKS, but I got build error, and I don't know 
what to do with it.

FS_CFLAGS = -O2 -ffast-math -g -ggdb -DSWITCH_DEBUG_RWLOCKS
export CFLAGS="-O2 -ffast-math -g -ggdb -DSWITCH_DEBUG_RWLOCKS"
export MOD_CFLAGS="-O2 -ffast-math -g -ggdb -DSWITCH_DEBUG_RWLOCKS"
./configure

gcc -I/DEVEL/freeswitch/src/include 
-I/DEVEL/freeswitch/libs/libteletone/src -fPIC -Werror 
-fvisibility=hidden -DSWITCH_API_VISIBILITY=1 -DHAVE_VISIBILITY=1 -g 
-ggdb -O2 -ffast-math -g -ggdb -DSWITCH_DEBUG_RWLOCKS -Wall -std=c99 
-pedantic -o .libs/freeswitch freeswitch-switch.o  -lm 
./.libs/libfreeswitch.so libs/apr/.libs/libapr-1.a -lrt -ldl -lcrypt 
-lpthread libs/libedit/src/.libs/libedit.a -lncurses -Wl,--rpath 
-Wl,/opt/freeswitch//lib
./.libs/libfreeswitch.so: undefined reference to 
`switch_core_session_read_lock'
./.libs/libfreeswitch.so: undefined reference to 
`switch_core_session_locate'
./.libs/libfreeswitch.so: undefined reference to 
`switch_core_session_rwunlock'
collect2: ld returned 1 exit status
make[2]: *** [freeswitch] Error 1

Could you please tell me how could I test mutexes, rwlocks?

Other option would be to omit loopback channels.
Anthony earlier suggested me to avoid it and call sofia directly

"you could make the loopback channel execute the eval app and do the
originate to the sofia channel from the dialplan.

<action application="eval" data="${originate(sofia/foo/a at b.com xyz)}"/>
or make the loopback chan exec a lua or js and fire an originate command and
exit

This way you don't have the loopback a and b leg as well as the sofia chan."

but it doesn't work, because originate api doesn't let us originate inside a session.
So we still using it.


Thanks in advance,
Tamas



More information about the Freeswitch-users mailing list