[Home]

Summary:ASTERISK-24865: Asterisk segfaults when paging speakers and phone - hanging up all lines
Reporter:scott fertig (scristopher)Labels:
Date Opened:2015-03-11 12:08:45Date Closed:2015-04-09 15:48:37
Priority:MajorRegression?No
Status:Closed/CompleteComponents:. I did not set the category correctly.
Versions:11.10.0 Frequency of
Occurrence
Frequent
Related
Issues:
Environment:Tested on the following: Freepbx Distro Centos 6.6 with asterisk and freepbx pbx in a flashAttachments:( 0) backtrace2.txt
( 1) backtrace3.txt
Description:When paging multiple phones and speakers asterisk segfaults resulting in the phones losing all calls, page appears to stay open on the phone but has cut off during the middle of the page. For example multiple people are on the phone then someone pages all phones and speakers, the phones that are currently active are skipped for the page - the person begins to speak and asterisk segfaults during this period. All calls are dropped the page is dropped and all phones are displaying their calls as still active.
Comments:By: scott fertig (scristopher) 2015-03-11 12:09:49.146-0500

Text output of
gdb -se "asterisk" -ex "bt full" -ex "thread apply all bt" --batch -c /tmp/core.pbx.local-2015-03-11T12:43:40-0400 > /tmp/backtrace.txt

By: Matt Jordan (mjordan) 2015-03-11 12:35:03.620-0500

Your backtrace is showing a crash in {{manager.c}}, which doesn't make much sense based on the description of the problem. That would imply that there is either memory corruption, or something else very strange going on.

Please provide explicit steps to reproduce the issue, including the dialplan that reproduces it, as well as the channel driver configuration files that reproduce the error.

By: scott fertig (scristopher) 2015-03-11 12:37:07.442-0500

Added correct backtrace my apologies

By: scott fertig (scristopher) 2015-03-11 12:38:07.162-0500

gdb -se "asterisk" -c core | tee /tmp/backtrace.txt

By: Matt Jordan (mjordan) 2015-03-11 12:49:29.192-0500

Well, your current one just shows a bunch of optimized stack traces, which unfortunately isn't useful.

Did you compile Asterisk with DONT_OPTIMIZE and BETTER_BACKTRACES?

By: scott fertig (scristopher) 2015-03-11 12:55:03.251-0500

I have a paging group setup which rings all extensions on the system. When using this paging group asterisk randomly segfaults I'm not exactly sure how to reproduce it except by paging this group over and over which would be group 3003

My dialplan for this group looks like so:
{noformat}
[app-paging]
include => app-paging-custom
exten => ssetup,1,Set(_SIPURI=)
exten => ssetup,n,Set(_ALERTINFO=Alert-Info: Ring Answer)
exten => ssetup,n,Set(_CALLINFO=Call-Info: <uri>\;answer-after=0)
exten => ssetup,n,Set(_SIPURI=intercom=true)
exten => ssetup,n,Set(_DOPTIONS=A(beep))
exten => ssetup,n,Set(_DTIME=5)
exten => ssetup,n,Set(_ANSWERMACRO=)
exten => ssetup,n,Set(PAGE_CONF=${EPOCH}${RAND(100,999)})
exten => ssetup,n,Return()

exten => _PAGE.,1(SKIPCHECK),Macro(autoanswer,${EXTEN:4})
exten => _PAGE.,n,Dial(${DIAL},${DTIME},${DOPTIONS})
exten => _PAGE.,n(skipself),Hangup

exten => _SPAGE.,1(chanspy),ChanSpy(${SP_DEVICE}-,qW)
exten => _SPAGE.,n,Hangup

;--== end of [app-paging] ==--;


[ext-paging]
include => ext-paging-custom
exten => 3001,1,Goto(app-pagegroups,3001,1)
exten => 3001,hint,Custom:PAGE3001

exten => 3006,1,Goto(app-pagegroups,3006,1)
exten => 3006,hint,Custom:PAGE3006

exten => 3003,1,Goto(app-pagegroups,3003,1)
exten => 3003,hint,Custom:PAGE3003

exten => 3004,1,Goto(app-pagegroups,3004,1)
exten => 3004,hint,Custom:PAGE3004

exten => 3005,1,Goto(app-pagegroups,3005,1)
exten => 3005,hint,Custom:PAGE3005

exten => 3008,1,Goto(app-pagegroups,3008,1)
exten => 3008,hint,Custom:PAGE3008

exten => 3007,1,Goto(app-pagegroups,3007,1)
exten => 3007,hint,Custom:PAGE3007

;--== end of [ext-paging] ==--;


[app-pagegroups]
include => app-pagegroups-custom
exten => 3001,1,Macro(user-callerid,)
exten => 3001,n,Set(_PAGEGROUP=3001)
exten => 3001,n(busy-check),GotoIf($[${TRYLOCK(apppagegroups3001)}]?:busy)
exten => 3001,n(devstate),Set(DEVICE_STATE(Custom:PAGE3001)=INUSE)
exten => 3001,n,Answer
exten => 3001,n,Gosub(app-paging,ssetup,1())
exten => 3001,n,Set(PAGEMODE=PAGE)
exten => 3001,n,Set(PAGE_MEMBERS=100-1003-101-102-103-104-107-108-109-110-111-113-114-117-118-119-120-121-123-125-126-129-130-140-142-143-145-146-147-160)
exten => 3001,n,Set(PAGE_CONF_OPTS=)
exten => 3001,n(agi),AGI(page.agi)
exten => 3001,n,Set(CONFBRIDGE(user,template)=page_user_duplex)
exten => 3001,n,Set(CONFBRIDGE(user,admin)=yes)
exten => 3001,n,Set(CONFBRIDGE(user,marked)=yes)
exten => 3001,n(page),ConfBridge(${PAGE_CONF},,,admin_menu)
exten => 3001,n,Hangup
exten => 3001,n(busy),Set(PAGE${PAGEGROUP}BUSY=TRUE)
exten => 3001,n(play-busy),Busy(3)
exten => 3001,n(busy-hang),Goto(app-pagegroups,h,1)

exten => 3006,1,Macro(user-callerid,)
exten => 3006,n,Set(_PAGEGROUP=3006)
exten => 3006,n(busy-check),GotoIf($[${TRYLOCK(apppagegroups3006)}]?:busy)
exten => 3006,n(devstate),Set(DEVICE_STATE(Custom:PAGE3006)=INUSE)
exten => 3006,n,Answer
exten => 3006,n,Gosub(app-paging,ssetup,1())
exten => 3006,n,Set(PAGEMODE=PAGE)
exten => 3006,n,Set(PAGE_MEMBERS=104-130-142)
exten => 3006,n,Set(PAGE_CONF_OPTS=)
exten => 3006,n(agi),AGI(page.agi)
exten => 3006,n,Set(CONFBRIDGE(user,template)=page_user_duplex)
exten => 3006,n,Set(CONFBRIDGE(user,admin)=yes)
exten => 3006,n,Set(CONFBRIDGE(user,marked)=yes)
exten => 3006,n(page),ConfBridge(${PAGE_CONF},,,admin_menu)
exten => 3006,n,Hangup
exten => 3006,n(busy),Set(PAGE${PAGEGROUP}BUSY=TRUE)
exten => 3006,n(play-busy),Busy(3)
exten => 3006,n(busy-hang),Goto(app-pagegroups,h,1)

exten => 3003,1,Macro(user-callerid,)
exten => 3003,n,Set(_PAGEGROUP=3003)
exten => 3003,n(busy-check),GotoIf($[${TRYLOCK(apppagegroups3003)}]?:busy)
exten => 3003,n(devstate),Set(DEVICE_STATE(Custom:PAGE3003)=INUSE)
exten => 3003,n,Answer
exten => 3003,n,Gosub(app-paging,ssetup,1())
exten => 3003,n,Set(PAGEMODE=PAGE)
exten => 3003,n,Set(PAGE_MEMBERS=100-1003-101-102-103-104-107-108-109-110-111-113-114-117-118-119-120-121-123-125-126-128-129-130-140-142-143-145-146-147-160-200)
exten => 3003,n,Set(PAGE_CONF_OPTS=)
exten => 3003,n(agi),AGI(page.agi)
exten => 3003,n,Set(CONFBRIDGE(user,template)=page_user_duplex)
exten => 3003,n,Set(CONFBRIDGE(user,admin)=yes)
exten => 3003,n,Set(CONFBRIDGE(user,marked)=yes)
exten => 3003,n(page),ConfBridge(${PAGE_CONF},,,admin_menu)
exten => 3003,n,Hangup
exten => 3003,n(busy),Set(PAGE${PAGEGROUP}BUSY=TRUE)
exten => 3003,n(play-busy),Busy(3)
exten => 3003,n(busy-hang),Goto(app-pagegroups,h,1)

exten => 3004,1,Macro(user-callerid,)
exten => 3004,n,Set(_PAGEGROUP=3004)
exten => 3004,n(busy-check),GotoIf($[${TRYLOCK(apppagegroups3004)}]?:busy)
exten => 3004,n(devstate),Set(DEVICE_STATE(Custom:PAGE3004)=INUSE)
exten => 3004,n,Answer
exten => 3004,n,Gosub(app-paging,ssetup,1())
exten => 3004,n,Set(PAGEMODE=PAGE)
exten => 3004,n,Set(PAGE_MEMBERS=100-101-102-108-119-125)
exten => 3004,n,Set(PAGE_CONF_OPTS=)
exten => 3004,n(agi),AGI(page.agi)
exten => 3004,n,Set(CONFBRIDGE(user,template)=page_user_duplex)
exten => 3004,n,Set(CONFBRIDGE(user,admin)=yes)
exten => 3004,n,Set(CONFBRIDGE(user,marked)=yes)
exten => 3004,n(page),ConfBridge(${PAGE_CONF},,,admin_menu)
exten => 3004,n,Hangup
exten => 3004,n(busy),Set(PAGE${PAGEGROUP}BUSY=TRUE)
exten => 3004,n(play-busy),Busy(3)
exten => 3004,n(busy-hang),Goto(app-pagegroups,h,1)

exten => 3005,1,Macro(user-callerid,)
exten => 3005,n,Set(_PAGEGROUP=3005)
exten => 3005,n(busy-check),GotoIf($[${TRYLOCK(apppagegroups3005)}]?:busy)
exten => 3005,n(devstate),Set(DEVICE_STATE(Custom:PAGE3005)=INUSE)
exten => 3005,n,Answer
exten => 3005,n,Gosub(app-paging,ssetup,1())
exten => 3005,n,Set(PAGEMODE=PAGE)
exten => 3005,n,Set(PAGE_MEMBERS=103-110-114-121)
exten => 3005,n,Set(PAGE_CONF_OPTS=)
exten => 3005,n(agi),AGI(page.agi)
exten => 3005,n,Set(CONFBRIDGE(user,template)=page_user_duplex)
exten => 3005,n,Set(CONFBRIDGE(user,admin)=yes)
exten => 3005,n,Set(CONFBRIDGE(user,marked)=yes)
exten => 3005,n(page),ConfBridge(${PAGE_CONF},,,admin_menu)
exten => 3005,n,Hangup
exten => 3005,n(busy),Set(PAGE${PAGEGROUP}BUSY=TRUE)
exten => 3005,n(play-busy),Busy(3)
exten => 3005,n(busy-hang),Goto(app-pagegroups,h,1)

exten => 3008,1,Macro(user-callerid,)
exten => 3008,n,Set(_PAGEGROUP=3008)
exten => 3008,n(busy-check),GotoIf($[${TRYLOCK(apppagegroups3008)}]?:busy)
exten => 3008,n(devstate),Set(DEVICE_STATE(Custom:PAGE3008)=INUSE)
exten => 3008,n,Answer
exten => 3008,n,Gosub(app-paging,ssetup,1())
exten => 3008,n,Set(PAGEMODE=PAGE)
exten => 3008,n,Set(PAGE_MEMBERS=107-117)
exten => 3008,n,Set(PAGE_CONF_OPTS=)
exten => 3008,n(agi),AGI(page.agi)
exten => 3008,n,Set(CONFBRIDGE(user,template)=page_user_duplex)
exten => 3008,n,Set(CONFBRIDGE(user,admin)=yes)
exten => 3008,n,Set(CONFBRIDGE(user,marked)=yes)
exten => 3008,n(page),ConfBridge(${PAGE_CONF},,,admin_menu)
exten => 3008,n,Hangup
exten => 3008,n(busy),Set(PAGE${PAGEGROUP}BUSY=TRUE)
exten => 3008,n(play-busy),Busy(3)
exten => 3008,n(busy-hang),Goto(app-pagegroups,h,1)

exten => 3007,1,Macro(user-callerid,)
exten => 3007,n,Set(_PAGEGROUP=3007)
exten => 3007,n(busy-check),GotoIf($[${TRYLOCK(apppagegroups3007)}]?:busy)
exten => 3007,n(devstate),Set(DEVICE_STATE(Custom:PAGE3007)=INUSE)
exten => 3007,n,Answer
exten => 3007,n,Gosub(app-paging,ssetup,1())
exten => 3007,n,Set(PAGEMODE=PAGE)
exten => 3007,n,Set(PAGE_MEMBERS=200)
exten => 3007,n,Set(PAGE_CONF_OPTS=)
exten => 3007,n(agi),AGI(page.agi)
exten => 3007,n,Set(CONFBRIDGE(user,template)=page_user_duplex)
exten => 3007,n,Set(CONFBRIDGE(user,admin)=yes)
exten => 3007,n,Set(CONFBRIDGE(user,marked)=yes)
exten => 3007,n(page),ConfBridge(${PAGE_CONF},,,admin_menu)
exten => 3007,n,Hangup
exten => 3007,n(busy),Set(PAGE${PAGEGROUP}BUSY=TRUE)
exten => 3007,n(play-busy),Busy(3)
exten => 3007,n(busy-hang),Goto(app-pagegroups,h,1)

exten => h,1,ExecIf($[${ISNULL(${PAGE${PAGEGROUP}BUSY})}]?Set(DEVICE_STATE(Custom:PAGE${PAGEGROUP})=NOT_INUSE))

;--== end of [app-pagegroups] ==--;


[app-page-stream]
include => app-page-stream-custom
exten => s,1,Wait(1)
exten => s,n,Answer
exten => s,n,Set(CONFBRIDGE(user,template)=page_user_duplex)
exten => s,n,Set(CONFBRIDGE(user,marked)=yes)
exten => s,n,ConfBridge(${PAGE_CONF},,,)
exten => s,n,Hangup

;--== end of [app-page-stream] ==--;
{noformat}


By: scott fertig (scristopher) 2015-03-11 12:55:51.413-0500

I will recompile with DONT_OPTIMIZE and BETTER_BACKTRACES and report back. Thanks!

By: Richard Mudgett (rmudgett) 2015-03-11 13:27:52.757-0500

Please don't post extensive debug or logs inside the Description or Comment fields.

Thanks!

[1] https://wiki.asterisk.org/wiki/display/AST/Asterisk+Issue+Guidelines

By: Rusty Newton (rnewton) 2015-03-25 14:13:13.229-0500

[~scristopher] are you still experiencing the issue and can you provide the required backtrace?

If not, we'll go ahead and close out the issue. Then we can re-open if you can get the appropriate data in the future.

By: Rusty Newton (rnewton) 2015-04-09 15:49:18.844-0500

Suspended due to lack of activity. Please request a bug marshal in #asterisk-bugs on the IRC network irc.freenode.net to reopen the issue should you have the additional information requested. Further information on issue tracker usage can be found in the Asterisk Issue Guidlines [1].

[1] https://wiki.asterisk.org/wiki/display/AST/Asterisk+Issue+Guidelines