[asterisk-bugs] [JIRA] (ASTERISK-22854) Deadlock between cel_pgsql unload and core_event_dispatcher taskprocessor thread

Etienne Lessard (JIRA) noreply at issues.asterisk.org
Wed Nov 13 07:18:03 CST 2013


Etienne Lessard created ASTERISK-22854:
------------------------------------------

             Summary: Deadlock between cel_pgsql unload and core_event_dispatcher taskprocessor thread
                 Key: ASTERISK-22854
                 URL: https://issues.asterisk.org/jira/browse/ASTERISK-22854
             Project: Asterisk
          Issue Type: Bug
      Security Level: None
          Components: CEL/cel_pgsql
    Affects Versions: 11.6.0
            Reporter: Etienne Lessard


A deadlock can happens between a thread unloading or reloading the cel_pgsql module and the core_event_dispatcher taskprocessor thread.

When the core_event_dispatcher taskprocessor thread is deadlocked, bad things follow, like:
* queue member status are not updated
* BLF on SIP phones are not updated
* etc, i.e. everything that use the event system...

Observed and reproducible on asterisk 11.6.0.

Description of what is happening:

Thread 1 (for example, a netconsole thread):
# a "module reload cel_pgsql" is launched
# the thread enter the "my_unload_module" function (cel_pgsql.c)
# the thread acquire the write lock on psql_columns
# the thread enter the "ast_event_unsubscribe" function (event.c)
# the thread try to acquire the write lock on ast_event_subs[sub->type]

Thread 2 (core_event_dispatcher taskprocessor thread):
# the taskprocessor pop a CEL event
# the thread enter the "handle_event" function (event.c)
# the thread acquire the read lock on ast_event_subs[sub->type]
# the thread callback the "pgsql_log" function (cel_pgsql.c), since it's a subscriber of CEL events
# the thread try to acquire a read lock on psql_columns

To reproduce the problem, I use sipp to generate calls on asterisk, and at the same time, I do a 'while sleep 0.1; do echo "$(date) Reloading..."; asterisk -rx "module reload cel_pgsql.so"; done'

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.asterisk.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira



More information about the asterisk-bugs mailing list