Freeze one incident and one candidate artifact
Record node, operating system, kernel, architecture, exact Asterisk build, executable and module hashes, process ID, signal, crash time, workload, recent change and the first observed symptom. Inventory candidate dumps with path, owner, size, timestamp and hash.
Do not merge repeated restarts or several core files into one timeline. Select the candidate whose process, time and executable identity match the incident, while retaining uncertainty when naming or collection metadata is incomplete.
Prove dump policy, limits, destination and capacity
Inspect the service account’s effective core-size limit, Asterisk start command, kernel.core_pattern, service-manager coredump path, directory permissions and free space. Confirm whether the kernel wrote a file, piped it to a collector, rejected it or truncated it.
A configured -g or permissive limit does not prove a dump was created. Correct only the first demonstrated policy, permission or capacity fault through the authorized owner, without inducing a production crash.
Match executable, modules and debug symbols
Compare the dump with the exact Asterisk executable and installed modules from the incident. Confirm DONT_OPTIMIZE and available debug symbols from build metadata or matching debug packages rather than inferring them from one readable frame.
Stop before package updates, module replacement or a rebuild changes those artifacts. A newer binary may run successfully while being unable to symbolize the old dump.
Generate reports with bounded operational impact
For a completed crash, run the documented ast_coredumper --tarball-coredumps workflow promptly against the selected path and retain command, version, status and generated hashes. If analyzing a running hang or suspected deadlock, obtain approval before --running because it pauses Asterisk and call processing.
Enable DEBUG_THREADS or BETTER_BACKTRACES only through a controlled build decision and capture core show locks only where supported. Do not use uppercase --RUNNING to bypass the safety prompt in an improvised production session.
Validate completeness before drawing a conclusion
Check that the report names the expected binary, resolves useful frames, covers all relevant threads and includes the active channels or bridges needed for the symptom. Align it with the narrow incident log and, when required, packet capture. Record unknown frames, missing modules and time gaps.
A backtrace can localize execution state but does not by itself prove root cause, caller impact or the corrective change. Reproduction and Valgrind-style investigation are separate, potentially costly work and require their own safe environment.
Sanitize, escalate and verify one correction
Preserve raw core, full tarball, binaries and modules in restricted storage. Redact the text report before a public issue, attach long output as files rather than pasting it, and include factual platform, version, frequency, reproduction and workaround details. Transfer raw memory only through maintainer-provided secure instructions.
Apply one evidence-backed correction in an approved environment, then verify startup, module state and one bounded call workflow separately. No host, dump, trace, crash, fix or support finding was inspected or tested for this diagnostic.
Distinguish a leak investigation from crash analysis
The memory-growth guide keeps allocation, reference, corruption, core and backtrace evidence independently attributable.
Use the deadlock path for a still-running frozen process
The deadlock diagnostic pairs core show locks and an all-thread backtrace without treating a forced core as the first step.
Sources & applicability
Primary references for the technical details above. Operational examples and planning checklists are VoIP.info editorial guidance.
- Asterisk getting a backtrace ↗
- Asterisk collecting debug information ↗
- Asterisk issue guidelines ↗
- Asterisk CLI commands useful for debugging ↗
- Asterisk Menuselect options ↗
- Asterisk debugging overview ↗
- Asterisk memory leak debugging ↗
- Asterisk MALLOC_DEBUG compiler flag ↗
- Asterisk reference count debugging ↗
- Asterisk log security ↗
- Asterisk logging configuration ↗
- Asterisk legacy backtrace and deadlock workflow ↗
Examples require adaptation to your topology. No live PBX or hardware testing is claimed.