[asterisk-bugs] [Asterisk 0012271]: segfault when using DETECT_DEADLOCKS flag

noreply at bugs.digium.com noreply at bugs.digium.com
Fri Mar 21 09:20:30 CDT 2008


A NOTE has been added to this issue. 
====================================================================== 
http://bugs.digium.com/view.php?id=12271 
====================================================================== 
Reported By:                junky
Assigned To:                
====================================================================== 
Project:                    Asterisk
Issue ID:                   12271
Category:                   Core-General
Reproducibility:            sometimes
Severity:                   crash
Priority:                   normal
Status:                     feedback
Asterisk Version:           SVN 
SVN Branch (only for SVN checkouts, not tarball releases):  1.4  
SVN Revision (number only!): 105409 
Disclaimer on File?:        N/A 
Request Review:              
====================================================================== 
Date Submitted:             03-21-2008 09:09 CDT
Last Modified:              03-21-2008 09:20 CDT
====================================================================== 
Summary:                    segfault when using DETECT_DEADLOCKS flag
Description: 
I've got that random crash:

(gdb) bt
http://bugs.digium.com/view.php?id=0  0x00000000004dcac5 in
ast_mark_lock_acquired (lock_addr=0x2a98c68470)
at utils.c:644
http://bugs.digium.com/view.php?id=1  0x0000002a98b5a860 in
__ast_pthread_mutex_lock (filename=0x2a98b63d8b
"chan_agent.c", lineno=2579, func=0x2a98b666e0 "agent_devicestate",
mutex_name=0x2a98b652a3 "&(&agents)->lock", t=0x2a98c68470)
    at /usr/src/ah_ast_1.4/include/asterisk/lock.h:374
http://bugs.digium.com/view.php?id=2  0x0000002a98b633f9 in agent_devicestate
(data=0x40076fe6) at
chan_agent.c:2579
http://bugs.digium.com/view.php?id=3  0x000000000045efd7 in ast_device_state
(device=0x2389958 "Agent/1029")
at devicestate.c:170
http://bugs.digium.com/view.php?id=4  0x000000000045fa7d in do_state_change
(device=0x2389958 "Agent/1029")
at devicestate.c:285
http://bugs.digium.com/view.php?id=5  0x000000000045ff2e in do_devstate_changes
(data=0x0) at
devicestate.c:369
http://bugs.digium.com/view.php?id=6  0x00000000004dd397 in dummy_start
(data=0x69c840) at utils.c:865
http://bugs.digium.com/view.php?id=7  0x0000003085e06137 in start_thread () from
/lib64/tls/libpthread.so.0
http://bugs.digium.com/view.php?id=8  0x00000030857c7543 in clone () from
/lib64/tls/libc.so.6
(gdb) bt full
http://bugs.digium.com/view.php?id=0  0x00000000004dcac5 in
ast_mark_lock_acquired (lock_addr=0x2a98c68470)
at utils.c:644
        lock_info = (struct thr_lock_info *) 0x6cada0
http://bugs.digium.com/view.php?id=1  0x0000002a98b5a860 in
__ast_pthread_mutex_lock (filename=0x2a98b63d8b
"chan_agent.c", lineno=2579, func=0x2a98b666e0 "agent_devicestate",
mutex_name=0x2a98b652a3 "&(&agents)->lock", t=0x2a98c68470)
    at /usr/src/ah_ast_1.4/include/asterisk/lock.h:374
        res = 0
        canlog = 1
        __PRETTY_FUNCTION__ = "__ast_pthread_mutex_lock"
http://bugs.digium.com/view.php?id=2  0x0000002a98b633f9 in agent_devicestate
(data=0x40076fe6) at
chan_agent.c:2579
        p = (struct agent_pvt *) 0x8f14b0
        s = 0x40076fe6 "1029"
        groupmatch = 0
        groupoff = 0
        waitforagent = 0
        res = 4
        __PRETTY_FUNCTION__ = "agent_devicestate"
http://bugs.digium.com/view.php?id=3  0x000000000045efd7 in ast_device_state
(device=0x2389958 "Agent/1029")
at devicestate.c:170
        buf = 0x40076fe6 "1029"
        number = 0x40076fe6 "1029"
        chan_tech = (const struct ast_channel_tech *) 0x2a98c67720
        res = 0
        tech = 0x40076fe0 "Agent"
        provider = 0x0
        __PRETTY_FUNCTION__ = "ast_device_state"
http://bugs.digium.com/view.php?id=4  0x000000000045fa7d in do_state_change
(device=0x2389958 "Agent/1029")
at devicestate.c:285
        state = 0
        devcb = (struct devstate_cb *) 0x51b633
        __PRETTY_FUNCTION__ = "do_state_change"
http://bugs.digium.com/view.php?id=5  0x000000000045ff2e in do_devstate_changes
(data=0x0) at
devicestate.c:369
        cur = (struct state_change *) 0x2389950
        __PRETTY_FUNCTION__ = "do_devstate_changes"
http://bugs.digium.com/view.php?id=6  0x00000000004dd397 in dummy_start
(data=0x69c840) at utils.c:865
        _buffer = {__routine = 0x428a68 <ast_unregister_thread>, __arg =
0x40077960, __canceltype = 0, __prev = 0x0}
        ret = (void *) 0x0
        a = {start_routine = 0x45fe79 <do_devstate_changes>, data = 0x0,
name = 0x69c880 "do_devstate_changes  started at [  386] devicestate.c
ast_device_state_engine_init()"}
        lock_info = (struct thr_lock_info *) 0x6cada0
        mutex_attr = {__mutexkind = 1}
http://bugs.digium.com/view.php?id=7  0x0000003085e06137 in start_thread () from
/lib64/tls/libpthread.so.0
No symbol table info available.
http://bugs.digium.com/view.php?id=8  0x00000030857c7543 in clone () from
/lib64/tls/libc.so.6
No symbol table info available.

====================================================================== 

---------------------------------------------------------------------- 
 junky - 03-21-08 09:20  
---------------------------------------------------------------------- 
(gdb) p lock_info->num_locks
$1 = 0
(gdb)


and to push it a little bit:
(gdb) p *lock_info
$2 = {thread_id = 1074231648, thread_name = 0x6cbbf0 "do_devstate_changes 
started at [  386] devicestate.c ast_device_state_engine_init()", locks =
{{file = 0x522173 "logger.c", line_num = 740,
      func = 0x523abf "ast_log", lock_name = 0x5223a2
"&(&logchannels)->lock", lock_addr = 0x663ed0, times_locked = 1, type =
AST_MUTEX, pending = 0}, {file = 0x515454 "channel.c", line_num = 1065,
      func = 0x516cd0 "channel_find_locked", lock_name = 0x516cfe
"&c->lock", lock_addr = 0x913898, times_locked = 0, type = AST_MUTEX,
pending = -1}, {file = 0x0, line_num = 0, func = 0x0,
      lock_name = 0x0, lock_addr = 0x0, times_locked = 0, type =
AST_MUTEX, pending = 0} <repeats 62 times>}, num_locks = 0, lock =
{__m_reserved = 1, __m_count = 1, __m_owner = 0x100000f38, __m_kind = 1,
    __m_lock = {__status = 0, __spinlock = 0}}, entry = {next = 0x6cbe10}} 

Issue History 
Date Modified   Username       Field                    Change               
====================================================================== 
03-21-08 09:20  junky          Note Added: 0084388                          
======================================================================




More information about the asterisk-bugs mailing list