Asterisk deadlock

An Asterisk deadlock has occured when the following criteria are met:

  • You cannot place new calls or accept new calls through Asterisk
  • Existing calls can continue as long as you like, until you kill -9 the asterisk process
  • Asterisk has NOT crashed and exited
  • from the CLI you can do such commands as "show channels" with no problem
  • CLI commands like "stop now" will freeze the CLI
  • the only way to stop asterisk is to kill -9 the asterisk process

It is recommended that if your system deadlocks as described above, you try the Asterisk debugging instructions and post the output on the bugs.digium.com bug tracker.

These are only the symptoms. What is the root cause? Someone please elaborate.

A program is in deadlock when it is in a state where one or more of its components are waiting on something they will never get. I don't now the internal structure of Asterisk but I believe it is multi-threaded. A simple example of a deadlock is if a thread A were waiting on a resource that thread B has locked, and thread B is waiting for something thread A has locked. Neither thread can continue because they are waiting on each other to relinquish a resource. Because of that neither thread ends, and asterisk cannot quit by itself. See http://en.wikipedia.org/wiki/Deadlock for more detailed info.



An Asterisk deadlock has occured when the following criteria are met:

  • You cannot place new calls or accept new calls through Asterisk
  • Existing calls can continue as long as you like, until you kill -9 the asterisk process
  • Asterisk has NOT crashed and exited
  • from the CLI you can do such commands as "show channels" with no problem
  • CLI commands like "stop now" will freeze the CLI
  • the only way to stop asterisk is to kill -9 the asterisk process

It is recommended that if your system deadlocks as described above, you try the Asterisk debugging instructions and post the output on the bugs.digium.com bug tracker.

These are only the symptoms. What is the root cause? Someone please elaborate.

A program is in deadlock when it is in a state where one or more of its components are waiting on something they will never get. I don't now the internal structure of Asterisk but I believe it is multi-threaded. A simple example of a deadlock is if a thread A were waiting on a resource that thread B has locked, and thread B is waiting for something thread A has locked. Neither thread can continue because they are waiting on each other to relinquish a resource. Because of that neither thread ends, and asterisk cannot quit by itself. See http://en.wikipedia.org/wiki/Deadlock for more detailed info.



Created by: oej, Last modification: Wed 28 of Mar, 2007 (13:12 UTC) by user_name
Please update this page with new information, just login and click on the "Edit" or "Discussion" tab. Get a free login here: Register Thanks! - Find us on Google+