Ticket #3435 (closed Bugs: fixed)

Opened 3 years ago

Last modified 3 years ago

Parking timeout causes 100% CPU use. cli stuck in loop

Reported by: ErikU Assigned to: p_lindheimer
Priority: crash Milestone: 2.6
Component: Parking Lot Version: 2.5-branch
Keywords: loop crash Cc:
Confirmation: Unreviewed SVN Revision (if applicable): 7967
Backend Engine: Asterisk 1.4.x Backend Engine Version: 1.4.22

Description

Free PBX V 2.5, all modules up to date. Sys info:

Kernel Version 2.6.18-8.1.15.el5 (SMP) Distro Name CentOS release 5 (Final)

Asterisk core show version: 1.4.22

When a call times out from the parking lot and goes back to a ring group, CPU use pegs at 100% and the CLI shows the folling in an endless loop until re-boot:

{{{stack

-- Executing [600@ext-group:6] Set("SIP/2065690119-088788c8", "BLKVM_BASE=600") in new stack -- Executing [600@ext-group:7] Set("SIP/2065690119-088788c8", "DB(BLKVM/600/SIP/2065690119-088788c8)=TRUE") in new stack -- Executing [600@ext-group:8] Set("SIP/2065690119-088788c8", "RRNODEST=") in new stack -- Executing [600@ext-group:9] Set("SIP/2065690119-088788c8", "NODEST=600") in new stack -- Executing [600@ext-group:10] Set("SIP/2065690119-088788c8", "ALERT_INFO=External") in new stack -- Executing [600@ext-group:11] Set("SIP/2065690119-088788c8", "RecordMethod?=Group") in new stack -- Executing [600@ext-group:12] Macro("SIP/2065690119-088788c8", "record-enable|101-102-103-104-106-100-110|Group") in new stack -- Executing [s@macro-record-enable:1] GotoIf?("SIP/2065690119-088788c8", "1?check") in new stack -- Goto (macro-record-enable,s,4) -- Executing [600@ext-group:13] Set("SIP/2065690119-088788c8", "RingGroupMethod?=ringall") in new stack -- Executing [600@ext-group:14] Macro("SIP/2065690119-088788c8", "dial|60|trT|101-102-103-104-106-100-110") in new stack -- Executing [s@macro-dial:1] GotoIf?("SIP/2065690119-088788c8", "0?dial") in new stack -- Executing [600@ext-group:15] Set("SIP/2065690119-088788c8", "RingGroupMethod?=") in new stack -- Executing [600@ext-group:16] GotoIf?("SIP/2065690119-088788c8", "0?nodest") in new stack -- Executing [600@ext-group:17] Set("SIP/2065690119-088788c8", "NODEST=") in new stack -- Executing [600@ext-group:18] DBdel("SIP/2065690119-088788c8", "BLKVM/600/SIP/2065690119-088788c8") in new stack -- DBdel: family=BLKVM, key=600/SIP/2065690119-088788c8 -- Executing [600@ext-group:19] Goto("SIP/2065690119-088788c8", "ext-group|600|1") in new stack -- Goto (ext-group,600,1) -- Executing [600@ext-group:1] Macro("SIP/2065690119-088788c8", "user-callerid|") in new stack -- Executing [s@macro-user-callerid:1] Set("SIP/2065690119-088788c8", "AMPUSER=2065690119") in new stack -- Executing [600@ext-group:2] GotoIf?("SIP/2065690119-088788c8", "0?skipdb") in new stack -- Executing [600@ext-group:3] GotoIf?("SIP/2065690119-088788c8", "0?skipov") in new stack -- Executing [600@ext-group:4] Set("SIP/2065690119-088788c8", "NODEST=") in new stack -- Executing [600@ext-group:5] Set("SIP/2065690119-088788c8", "BLKVM_OVERRIDE=BLKVM/600/SIP/2065690119-088788c8") in new stack}}}

Change History

12/09/08 18:35:45 changed by ErikU

stack
    -- Executing [600@ext-group:6] Set("SIP/2065690119-088788c8", "__BLKVM_BASE=600") in new stack
    -- Executing [600@ext-group:7] Set("SIP/2065690119-088788c8", "DB(BLKVM/600/SIP/2065690119-088788c8)=TRUE") in new stack
    -- Executing [600@ext-group:8] Set("SIP/2065690119-088788c8", "RRNODEST=") in new stack
    -- Executing [600@ext-group:9] Set("SIP/2065690119-088788c8", "__NODEST=600") in new stack
    -- Executing [600@ext-group:10] Set("SIP/2065690119-088788c8", "__ALERT_INFO=External") in new stack
    -- Executing [600@ext-group:11] Set("SIP/2065690119-088788c8", "RecordMethod=Group") in new stack
    -- Executing [600@ext-group:12] Macro("SIP/2065690119-088788c8", "record-enable|101-102-103-104-106-100-110|Group") in new stack
    -- Executing [s@macro-record-enable:1] GotoIf("SIP/2065690119-088788c8", "1?check") in new stack
    -- Goto (macro-record-enable,s,4)
    -- Executing [600@ext-group:13] Set("SIP/2065690119-088788c8", "RingGroupMethod=ringall") in new stack
    -- Executing [600@ext-group:14] Macro("SIP/2065690119-088788c8", "dial|60|trT|101-102-103-104-106-100-110") in new stack
    -- Executing [s@macro-dial:1] GotoIf("SIP/2065690119-088788c8", "0?dial") in new stack
    -- Executing [600@ext-group:15] Set("SIP/2065690119-088788c8", "RingGroupMethod=") in new stack
    -- Executing [600@ext-group:16] GotoIf("SIP/2065690119-088788c8", "0?nodest") in new stack
    -- Executing [600@ext-group:17] Set("SIP/2065690119-088788c8", "__NODEST=") in new stack
    -- Executing [600@ext-group:18] DBdel("SIP/2065690119-088788c8", "BLKVM/600/SIP/2065690119-088788c8") in new stack
    -- DBdel: family=BLKVM, key=600/SIP/2065690119-088788c8
    -- Executing [600@ext-group:19] Goto("SIP/2065690119-088788c8", "ext-group|600|1") in new stack
    -- Goto (ext-group,600,1)
    -- Executing [600@ext-group:1] Macro("SIP/2065690119-088788c8", "user-callerid|") in new stack
    -- Executing [s@macro-user-callerid:1] Set("SIP/2065690119-088788c8", "AMPUSER=2065690119") in new stack
    -- Executing [600@ext-group:2] GotoIf("SIP/2065690119-088788c8", "0?skipdb") in new stack
    -- Executing [600@ext-group:3] GotoIf("SIP/2065690119-088788c8", "0?skipov") in new stack
    -- Executing [600@ext-group:4] Set("SIP/2065690119-088788c8", "__NODEST=") in new stack
    -- Executing [600@ext-group:5] Set("SIP/2065690119-088788c8", "__BLKVM_OVERRIDE=BLKVM/600/SIP/2065690119-088788c8") in new stack

12/09/08 18:37:09 changed by ErikU

Also note that the Alert info set in the gui is "park", yet it sends "External"

12/09/08 19:03:21 changed by p_lindheimer

  • status changed from new to closed.
  • resolution set to invalid.

in the supported implementation (as in no patches to Asterisk) a timedout call goes back to the phone that parked it (not the destination), and the Alert-Info and CID won't apply either. It only goes to the destination and applies the Alert Info and CID prepend if the phone that parked it is no longer available (such as got unplugged or something). That is what an orphaned call is.

The short trace supplied above (which doesn't show anything about parking and is a bit to short to get a full view of what is going on) looks a bit like you have the ring group's destination as itself along with no phones in the ringgroup being available.

08/03/09 14:21:58 changed by jjshoe

  • svn_rev set to 7967.

fixed in r7967

08/07/09 17:20:26 changed by p_lindheimer

  • resolution changed from invalid to fixed.

(In [7969]) Merged revisions 7967-7968 via svnmerge from http://svn.freepbx.org/modules/branches/2.5

........

r7967 | jjshoe | 2009-08-03 12:19:34 -0700 (Mon, 03 Aug 2009) | 2 lines

fixes #3611, fixes #3435, fixes #3317, fixes #3307 Fixed pattern matching to prevent deadly parked call loop

........

r7968 | jjshoe | 2009-08-03 12:28:18 -0700 (Mon, 03 Aug 2009) | 4 lines

fixes #3735 Don't send the actual secret in the email

Also warn if a secret is blank.

........