AllStarLink / app_rpt

Refactoring and upgrade of AllStarLink's app_rpt, etc.
3 stars 2 forks source link

chan_tlb does not connect. #339

Closed KB4MDD closed 1 day ago

KB4MDD commented 4 days ago

Fred, w5mgm, is reported that chan_tlb is not connecting. There is a deadlock when queuing a frame to asterisk.

From the back trace:

Thread 54 (Thread 0x7f950812e700 (LWP 888) "asterisk"):
#0  __lll_lock_wait (futex=futex@entry=0x7f94d41566a0, private=0) at lowlevellock.c:52
#1  0x00007f9554d6a8d1 in __GI___pthread_mutex_lock (mutex=0x7f94d41566a0) at ../nptl/pthread_mutex_lock.c:115
#2  0x000055ab684b071d in __ast_pthread_mutex_lock (filename=0x55ab68633cc9 "channel.c", lineno=1019, func=0x55ab68637ff0 <__PRETTY_FUNCTION__.250> "__ast_queue_frame", mutex_name=0x55ab6863405b "chan", t=0x7f94d41566a0) at lock.c:347
#3  0x000055ab683e4c69 in __ao2_lock (user_data=0x7f94d41566f0, lock_how=AO2_LOCK_REQ_MUTEX, file=0x55ab68633cc9 "channel.c", func=0x55ab68637ff0 <__PRETTY_FUNCTION__.250> "__ast_queue_frame", line=1019, var=0x55ab6863405b "chan") at astobj2.c:241
#4  0x000055ab684263dd in __ast_queue_frame (chan=0x7f94d41566f0, fin=0x7f950812d890, head=0, after=0x0) at channel.c:1019
#5  0x000055ab68426c52 in ast_queue_frame (chan=0x7f94d41566f0, fin=0x7f950812d890) at channel.c:1135
#6  0x00007f95503b12f3 in TLB_reader (data=0x55ab69d80aa0) at chan_tlb.c:1883
#7  0x000055ab68598394 in dummy_start (data=0x55ab69919bd0) at utils.c:1574
#8  0x00007f9554d67ea7 in start_thread (arg=<optimized out>) at pthread_create.c:477
#9  0x00007f9554982a2f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Core show locks:

=== Thread ID: 0x7f955228f700 LWP:838 (do_devstate_changes  started at [  621] d evicestate.c ast_device_state_engine_init())
=== ---> Lock #0 (astobj2_container.c): MUTEX 310 internal_ao2_traverse self 0x5 5ab6a1d7c90 (1)
        asterisk __ast_pthread_mutex_lock()
        asterisk __ao2_lock()
        asterisk <unknown>()
        asterisk __ao2_callback_data()
        asterisk ast_channel_callback()
        asterisk ast_channel_get_by_name_prefix()
        asterisk ast_parse_device_state()
        asterisk <unknown>()
        asterisk <unknown>()
        asterisk <unknown>()
        asterisk <unknown>()
        [0x7f9554d67ea7] libpthread.so.0 pthread_create.c:478 start_thread()
        [0x7f9554982a2f] libc.so.6 clone.S:97 __GI___clone()
=== ---> Waiting for Lock #1 (channel.c): MUTEX 1290 ast_channel_by_name_cb chan  0x7f94d41566a0 (1)
        asterisk __ast_pthread_mutex_lock()
        asterisk __ao2_lock()
        asterisk <unknown>()
        asterisk ast_queue_frame()
        [0x7f95503b12f3] chan_tlb.so chan_tlb.c:1884 TLB_reader()
        asterisk <unknown>()
        [0x7f9554d67ea7] libpthread.so.0 pthread_create.c:478 start_thread()
        [0x7f9554982a2f] libc.so.6 clone.S:97 __GI___clone()
=== --- ---> Locked Here: channel.c line 920 (__ast_channel_alloc_ap)

I am investigating this issue.

jxmx commented 1 day ago

This will be included in app_rpt 3.0.1