Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

recording_thread can not unlock session when record application is executed on hangup at the same time. #2645

Open
Django-xinfa opened this issue Nov 19, 2024 · 0 comments
Labels
bug Something isn't working

Comments

@Django-xinfa
Copy link

Django-xinfa commented Nov 19, 2024

Occasionally, some calls can not be released. I tracked the logs with the code and found this issue. Like recording_thread seems to be waiting for a signal so much that it can't be unlocked when record application is executed on hangup at the same time.

My vesion is based on 1.10.9. But I added some logs so that the number of lines of code wasn't exactly the same as the standard version.

I compared the code for 1.10.12 and found no changes in recording_thread. I don't know why the code doesn't call "switch_thread_cond_wait" before making a judgment on whether the session is valid or not.

Here's some useful output information by "pstack":

Thread 5 (Thread 0x7f1d10e35700 (LWP 61196)):
#0 0x00007f1d92e7539e in pthread_rwlock_wrlock () from /lib64/libpthread.so.0
#1 0x00007f1d95fa9c89 in fspr_thread_rwlock_wrlock (rwlock=) at locks/unix/thread_rwlock.c:97
#2 0x00007f1d95c65645 in switch_thread_rwlock_wrlock (rwlock=) at src/switch_apr.c:253
#3 0x00007f1d95ca3dbc in switch_core_session_write_lock (session=) at src/switch_core_rwlock.c:156
#4 0x00007f1d95c98683 in switch_core_session_thread (thread=, obj=) at src/switch_core_session.c:1747
#5 0x00007f1d95c93d5a in switch_core_session_thread_pool_worker (thread=0x7f1bc4030860, obj=) at src/switch_core_session.c:1792
#6 0x00007f1d95faff80 in dummy_worker (opaque=0x7f1bc4030860) at threadproc/unix/thread.c:151
#7 0x00007f1d92e71ea5 in start_thread () from /lib64/libpthread.so.0
#8 0x00007f1d9241a8dd in clone () from /lib64/libc.so.6
Thread 4 (Thread 0x7f1d110d4700 (LWP 80516)):
#0 0x00007f1d92e7539e in pthread_rwlock_wrlock () from /lib64/libpthread.so.0
#1 0x00007f1d95fa9c89 in fspr_thread_rwlock_wrlock (rwlock=) at locks/unix/thread_rwlock.c:97
#2 0x00007f1d95c65645 in switch_thread_rwlock_wrlock (rwlock=) at src/switch_apr.c:253
#3 0x00007f1d95ca3dbc in switch_core_session_write_lock (session=) at src/switch_core_rwlock.c:156
#4 0x00007f1d95c98683 in switch_core_session_thread (thread=, obj=) at src/switch_core_session.c:1747
#5 0x00007f1d95c93d5a in switch_core_session_thread_pool_worker (thread=0x7f1c1002c3e0, obj=) at src/switch_core_session.c:1792
#6 0x00007f1d95faff80 in dummy_worker (opaque=0x7f1c1002c3e0) at threadproc/unix/thread.c:151
#7 0x00007f1d92e71ea5 in start_thread () from /lib64/libpthread.so.0
#8 0x00007f1d9241a8dd in clone () from /lib64/libc.so.6
Thread 3 (Thread 0x7f1d109eb700 (LWP 81381)):
#0 0x00007f1d92e75a35 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
#1 0x00007f1d95d42e12 in recording_thread (thread=, obj=) at src/switch_ivr_async.c:1329
#2 0x00007f1d95faff80 in dummy_worker (opaque=0x7f1c640bb9f0) at threadproc/unix/thread.c:151
#3 0x00007f1d92e71ea5 in start_thread () from /lib64/libpthread.so.0
#4 0x00007f1d9241a8dd in clone () from /lib64/libc.so.6
Thread 2 (Thread 0x7f1bc9ad3700 (LWP 165508)):
#0 0x00007f1d92e75a35 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
#1 0x00007f1d95d42e12 in recording_thread (thread=, obj=) at src/switch_ivr_async.c:1329
#2 0x00007f1d95faff80 in dummy_worker (opaque=0x7f1cd01eb590) at threadproc/unix/thread.c:151
#3 0x00007f1d92e71ea5 in start_thread () from /lib64/libpthread.so.0
#4 0x00007f1d9241a8dd in clone () from /lib64/libc.so.6
Thread 1 (Thread 0x7f1d9649f780 (LWP 74493)):
#0 0x00007f1d924119a3 in select () from /lib64/libc.so.6
#1 0x00007f1d95fb15c5 in fspr_sleep (t=) at time/unix/time.c:246
#2 0x00007f1d95ca69d2 in switch_core_runtime_loop (bg=bg@entry=1) at src/switch_core.c:1201
#3 0x0000000000402f48 in main (argc=, argv=) at src/switch.c:1228

@Django-xinfa Django-xinfa added the bug Something isn't working label Nov 19, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

1 participant