[asterisk-bugs] [Asterisk 0015192]: segfault in local_devicestate() in chan_local.c

Asterisk Bug Tracker noreply at bugs.digium.com
Mon Jun 1 10:01:22 CDT 2009


A NOTE has been added to this issue. 
====================================================================== 
https://issues.asterisk.org/view.php?id=15192 
====================================================================== 
Reported By:                caspy
Assigned To:                
====================================================================== 
Project:                    Asterisk
Issue ID:                   15192
Category:                   Channels/chan_local
Reproducibility:            random
Severity:                   crash
Priority:                   normal
Status:                     feedback
Asterisk Version:           1.6.0.6 
Regression:                 No 
SVN Branch (only for SVN checkouts, not tarball releases): N/A 
SVN Revision (number only!):  
Request Review:              
====================================================================== 
Date Submitted:             2009-05-26 05:53 CDT
Last Modified:              2009-06-01 10:01 CDT
====================================================================== 
Summary:                    segfault in local_devicestate() in chan_local.c
Description: 
Asterisk crashes randomly:
(gdb) bt full
https://issues.asterisk.org/view.php?id=0  0xb7c95e1a in strcmp () from
/lib/i686/cmov/libc.so.6
No symbol table info available.
https://issues.asterisk.org/view.php?id=1  0xb7291599 in local_devicestate
(data=0xb7a52286) at chan_local.c:150
	exten = 0xb7a52200 "1181"
	context = 0xb7a52205 "toagent"
	opts = 0x0
	res = 1
	lp = (struct local_pvt *) 0x558
	__PRETTY_FUNCTION__ = "local_devicestate"


complete backtraces in attaches
====================================================================== 

---------------------------------------------------------------------- 
 (0105843) caspy (reporter) - 2009-06-01 10:01
 https://issues.asterisk.org/view.php?id=15192#c105843 
---------------------------------------------------------------------- 
valgrind is not an option. i've tried it, slowdown is unaccepable.


i'll try 1.6.0, but it can take some time cause a heavy production.


what about a dialplan:
- i have a number sip phones, like SIP/1234
- i have a Queue with members like Local/1234 at toagent 
  (members are added with device state of SIP channel: 
   AddQueueMember(callcenterq,Local/1234 at toagent,,,,SIP/1234) )
- 'toagent' context is:
context toagent {
  _XXXX => {
    Set(CDR(amaflags)=omit);
    ChanIsAvail(SIP/${EXTEN},s);
    if ("${AVAILCHAN}" != "") {
      Dial(SIP/${EXTEN});
    };
    Busy();
  };
};
- people are calling to this queue, where a number of agents are taking
calls.


what about you to try to reproduce: unfortunately, i's most likely
impossible. this error is very unpredictable. for example:
- compiling with DONT_OPTIMIZE make this crash more rare,
- turning on 'core set debug atleast 4' make this error more-and-more
rare,
- it is very-very load-dependent. as more load - more stable. but on
individual rare calls at night - all ok too. the best time to crash -
morning, where callers count just begin to grow.
- compiling DEBUG_TREADS moves crash to threads-tracking code. _moves_,
not making another one. :|


and also, please, look at bug https://issues.asterisk.org/view.php?id=14783. it
seems to be very close to this
issue, inspite of totally different parts of code. 
it looks like in both cases a crash is forced by situation, when one
thread is killing a variable, that is still used by another thread. 

Issue History 
Date Modified    Username       Field                    Change               
====================================================================== 
2009-06-01 10:01 caspy          Note Added: 0105843                          
======================================================================




More information about the asterisk-bugs mailing list