[Home]

Summary:ASTERISK-15239: System completely hangs after executing an ODBC function
Reporter:Theo Belder (tbelder)Labels:
Date Opened:2009-11-30 03:26:07.000-0600Date Closed:2011-06-07 14:00:45
Priority:MajorRegression?No
Status:Closed/CompleteComponents:Functions/func_odbc
Versions:Frequency of
Occurrence
Related
Issues:
Environment:Attachments:
Description:Currently I am working to upgrade asterisk 1.4.21 to 1.4.27. During testing of my dialplan I discovered that the system will completely hangs after executing an ODBC query in the h extension. The CLI shows no verbosity and debug messages. Also the SSH connection is dropped and no new SSH connection can be made. The only reaction of the system is a ping reply. The system has to be turned off and on to make the system work again!!

This problem is introduced in asterisk 1.4.22. However, I cannot find out which change causes this problem. I have searched in the changelog for a possible cause, but I cannot find out.

Below you can find the steps to reproduce. When the dialplan executes the odbc query in the h extension, the whole system hangs.


****** ADDITIONAL INFORMATION ******

dialplan:
-------------
exten = 422,1,Noop(MAKE A CALL)
exten = 422,n,Set(PCMEXT=${ODBC_CST(SELECT nr FROM viewextensiondata WHERE
nr = '422' LIMIT 1)})
exten = 422,n,Dial(SIP/422)

exten = h,1,Noop(HANGUP)
exten = h,n,Set(PCMEXT=${ODBC_CST(SELECT nr FROM viewextensiondata WHERE nr
= '422' LIMIT 1)})
exten = h,n,Hangup

func_odbc.conf:
-----------------------
[CST]
dsn=cst
read=${ARG1}
Comments:By: Tilghman Lesher (tilghman) 2009-11-30 10:32:56.000-0600

Are you starting Asterisk with the -p flag?

By: Theo Belder (tbelder) 2009-12-01 01:32:16.000-0600

No, I'm starting asterisk with -vvvgc

By: Theo Belder (tbelder) 2009-12-03 02:05:23.000-0600

What about this issue? Do you have any idea why this problem occurs?

By: Tilghman Lesher (tilghman) 2009-12-03 10:34:20.000-0600

Other than using the p flag, I know of no other possible cause of a complete system hang.  It's probably a kernel bug of some sort.

By: Elazar Broad (ebroad) 2009-12-03 11:15:39.000-0600

What happens if you take out:

exten = h,n,Hangup

By: Theo Belder (tbelder) 2009-12-04 02:07:53.000-0600

This dialplan works fine:
exten = 422,1,Noop(MAKE A CALL)
exten = 422,n,Set(PCMEXT=${ODBC_CST(SELECT nr FROM viewextensiondata WHERE
nr = '422' LIMIT 1)})
exten = 422,n,Dial(SIP/422)

exten = h,1,Noop(HANGUP)
exten = h,n,Hangup


This will hang your system:
exten = 422,1,Noop(MAKE A CALL)
exten = 422,n,Dial(SIP/422)

exten = h,1,Noop(HANGUP)
exten = h,n,Set(PCMEXT=${ODBC_CST(SELECT nr FROM viewextensiondata WHERE nr
= '422' LIMIT 1)})
exten = h,n,Hangup


Only when executing an ODBC function in the h extension fails.
This problem is introduced in version 1.4.22, in version 1.4.21 this problem did not occured.

By: Theo Belder (tbelder) 2009-12-07 09:40:01.000-0600

A small update: I've discovered that the crash only occurs when the calling party hangs up. When the called party hangs up, the ODBC function will be executed without any problem.

By: Theo Belder (tbelder) 2010-04-29 03:24:47

This issue may be closed. Upgrading to a newer kernel fixes the problem. Resolved in kernel version 2.6.23.

But strange that some code change in asterisk (1.4.21->1.4.22) causes this issue...