VoIP.info Troubleshooting

Asterisk appears deadlocked, core show locks is missing or the backtrace is incomplete

Find the first gap across process state, workload, diagnostic build, lock snapshot, symbols, all-thread stacks, logging, artifact custody and safe restoration.

Reviewed 2026-10-29Current official Asterisk CLI-debugging, backtrace, deadlock, issue-guideline, logging, Menuselect and log-security documentation was reviewed October 29, 2026; installed branch, packaging, compiler flags, symbols, executable, process, thread, lock, workload, taskprocessor state, debugger behavior, core-dump policy, logger output, reproduction, causal finding, correction and support response remain deployment-specific; the legacy deadlock page is explicitly scoped to Asterisk versions before 13.14.0 and 14.3.0 and is retained only for its version-labelled workflow; no Asterisk host, FreePBX system, binary, compiler flag, symbol, process, thread, lock, debugger session, core dump, backtrace, log, call, deadlock, fix or support case was inspected or testedAdvancedDocumentation based · not lab tested

Freeze one incident without restarting away the evidence

Record the node, exact Asterisk build, executable and modules, process ID, uptime, first failed action, call symptoms, CLI response, service-manager state, CPU, memory, taskprocessor depth, channel and bridge counts, external dependency health, recent change and synchronized timestamps. Preserve existing logs and process metadata read-only.

Do not begin with restart, package update, broad reload, forced core or repeated debugger attachment. Those actions can end calls, alter thread state and erase the evidence that distinguishes overload, an external wait, a blocked console and a lock cycle.

Explain a missing core show locks command

Check core show settings, package and build records for DEBUG_THREADS, BETTER_BACKTRACES and DONT_OPTIMIZE, then match the running executable to the intended build. Verify current CLI help rather than assuming that an online page describes this package.

core show locks is unavailable without the required build support, and useful stacks depend on the documented environment and symbols. If rebuilding is justified, use a controlled reproduction because DEBUG_THREADS has a documented CPU cost; do not replace an active production binary solely to make one command appear.

Capture threads, locks and queue evidence in one window

Retain core show threads, core show locks when available, taskprocessor statistics, narrow channel or bridge counts, exact timestamps, uptime and workload. Note whether each command completed, returned no rows, stalled or was unavailable. Preserve raw output before any restart.

A blank lock report does not prove the absence of a deadlock, and a held lock does not prove a cycle or caller impact. Compare waiting and holding stacks, repeated snapshots and the affected behavior before selecting the next evidence owner.

Repair incomplete all-thread backtraces before inference

Use the current official backtrace procedure for the installed branch and preserve executable, PID, modules, debug-symbol packages, debugger command, attach result and output. Gather the all-thread stack close to the lock snapshot and inspect it for unresolved frames, optimized-out values, missing modules or the wrong process.

Do not mix a legacy command, another restart, a different binary or a later process into the same incident set. A partial stack is a collection limitation, not proof that the visible top frame owns the freeze.

Bound disruption, logging and artifact exposure

Before debugger attachment, forced core, instrumented replacement or elevated logging, document approval, call impact, maintenance window, storage capacity, abort threshold and rollback. Collect the minimum channel-driver or debug interval requested for the symptom and restore normal levels afterward.

Restrict core files, logs, CLI output and backtraces because they may contain memory, credentials, call history, identifiers and source paths. Prepare a redacted text attachment for escalation while retaining the original under controlled custody.

Validate cause and recovery as separate outcomes

Correlate a reproducible symptom, matching lock and all-thread evidence, responsible code path, build and module identity and an evidence-backed correction. Repeat the same bounded workload and ordinary-call acceptance case after the change while monitoring taskprocessor, thread, lock and logger state.

A successful restart, quiet period, patch installation or cleared queue does not by itself prove root cause or durable restoration. No host, process, thread, lock, debugger session, core, backtrace, call, deadlock, performance result, fix or support finding was inspected or tested for this diagnostic.

Sources & applicability

Primary references for the technical details above. Operational examples and planning checklists are VoIP.info editorial guidance.

Examples require adaptation to your topology. No live PBX or hardware testing is claimed.