When a Linux process crashes, the kernel can generate a coredump — a snapshot of the process memory, registers, and execution state at the moment of failure. These files are essential for post-mortem debugging, but managing them at scale across servers is a challenge. Without proper coredump handling, crashes are silent, debug information is lost, and production issues remain unresolved.
This guide compares three self-hosted Linux coredump management solutions: systemd-coredump, ABRT (Automatic Bug Reporting Tool), and minicoredumper. Each takes a fundamentally different approach to crash capture, storage, and analysis.
How Linux Coredump Generation Works
Before comparing tools, it helps to understand the underlying mechanism. When a process receives a fatal signal (SIGSEGV, SIGABRT, SIGILL, etc.), the Linux kernel invokes a core_pattern handler defined in /proc/sys/kernel/core_pattern. This handler is a pipe to a user-space program or a file path template.
The default core pattern on many systems is:
| |
The pipe symbol (|) tells the kernel to send the coredump data via stdin to the specified program, along with metadata arguments:
| Parameter | Meaning |
|---|---|
%P | PID of the crashing process |
%u | UID of the process owner |
%g | GID of the process owner |
%s | Signal number that caused the crash |
%t | Unix timestamp of the crash |
%c | Core file size soft resource limit |
%h | Hostname |
%e | Executable filename (comm) |
You can inspect the current pattern with:
| |
And set a custom handler:
| |
Tool Comparison Overview
| Feature | systemd-coredump | ABRT | minicoredumper |
|---|---|---|---|
| Origin | systemd project (freedesktop) | Fedora/RHEL project | Diamond Light Source |
| GitHub Stars | Part of systemd (70K+) | 242 | 56 |
| Last Updated | Active (2026) | May 2026 | May 2026 |
| Default On | Most systemd distros | Fedora/RHEL | Manual install |
| Core Format | Full coredump (compressed) | Full coredump + metadata | Minimal coredump |
| Storage Backend | Journal (lz4 compressed) | Filesystem + database | Filesystem |
| CLI Tools | coredumpctl | abrt-cli | minicoredumper config |
| Web UI | No | Yes (ABRT Web) | No |
| Auto-Reporting | No | Yes (Bugzilla, Email) | No |
| Size Efficiency | Compressed but full | Full + metadata | Minimal (stripped) |
| Docker Support | Yes (journal integration) | Yes | Yes |
| Config Complexity | Low | Medium | Low |
systemd-coredump — The Default Choice
systemd-coredump is the default coredump handler on virtually all systemd-based distributions. It compresses coredumps with lz4 and stores them in the systemd journal, making them queryable via coredumpctl.
Installation
On most modern Linux distributions, systemd-coredump is pre-installed. If not:
| |
Configuration
The configuration file is /etc/systemd/coredump.conf:
| |
Key options:
- Storage=external: Stores compressed cores in
/var/lib/systemd/coredump/instead of the journal - Storage=journal: Stores in the journal (limited by
JournalSizeMax) - Compress=yes: Uses lz4 compression (typically 3-5x reduction)
- ProcessSizeMax: Maximum process size to capture
Viewing and Analyzing Coredumps
| |
Docker Deployment
systemd-coredump works inside containers when journal access is available:
| |
ABRT — Automated Bug Reporting
ABRT (Automatic Bug Reporting Tool) goes beyond simple coredump capture. It collects crash data, analyzes it, and can automatically file bug reports to Bugzilla, send emails, or upload to a central server. It is the default crash handler on Fedora and RHEL.
Installation
| |
Configuration
ABRT uses a modular plugin architecture. Key configuration files:
/etc/abrt/abrt.conf — Main configuration:
| |
/etc/abrt/plugins/CCpp.conf — C/C++ crash handler:
| |
Key ABRT Components
| Component | Role |
|---|---|
abrtd | Main daemon, watches for crashes |
abrt-ccpp | C/C++ crash handler |
abrt-action-analyze-c | Crash analysis engine |
abrt-action-report-bugzilla | Auto-file Bugzilla bugs |
abrt-action-notify-email | Send email notifications |
Managing Crashes with ABRT
| |
ABRT Web Interface
ABRT includes a web UI for centralized crash management:
| |
The web interface provides:
- Dashboard of all crash reports
- Filtering by package, executable, or time
- One-click bug filing
- Statistics and trend analysis
Docker Deployment for ABRT
| |
minicoredumper — Lightweight Alternative
minicoredumper takes a radically different approach: instead of capturing full coredumps (which can be gigabytes), it generates minimal coredumps containing only the essential debugging information — stack frames, registers, and a small memory region around the crash point.
Why Minimal Coredumps?
Full coredumps of large processes can be 10-50 GB, making them impractical to store, transfer, or analyze. minicoredumper typically produces dumps under 1 MB while retaining enough information for most debugging scenarios.
Installation
| |
Configuration
/etc/minicoredumper.conf:
| |
Setting minicoredumper as the Core Handler
| |
Viewing Minicoredumps
minicoredumper produces standard ELF core files (just smaller), so all standard tools work:
| |
Size Comparison: Full vs Minimal Coredumps
| Process Size | Full Coredump | minicoredumper Output | Compression Ratio |
|---|---|---|---|
| 100 MB process | 100 MB | 200 KB | 500x |
| 1 GB process | 1 GB | 500 KB | 2000x |
| 10 GB process | 10 GB | 800 KB | 12,500x |
| 50 GB database | 50 GB | 1.2 MB | 41,667x |
The savings are dramatic, especially for large server processes.
Choosing the Right Coredump Manager
| Scenario | Recommended Tool |
|---|---|
| Default systemd distro | systemd-coredump (already installed) |
| Fedora/RHEL environments | ABRT (native integration) |
| Need automatic bug filing | ABRT (Bugzilla/email integration) |
| Large processes (databases, JVMs) | minicoredumper (minimal dumps) |
| Disk space constrained | minicoredumper (KB vs GB) |
| Centralized crash monitoring | ABRT + ABRT Web |
| Container environments | systemd-coredump (journal integration) |
| Minimal overhead | minicoredumper (fastest capture) |
Why Self-Host Coredump Management?
Running your own coredump management infrastructure gives you complete control over crash data. When a production process crashes, the difference between having a coredump and not having one is the difference between a 5-minute root-cause analysis and a days-long investigation.
Data ownership and privacy: Coredumps contain process memory, which may include sensitive data — credentials in memory, customer data, cryptographic keys. Self-hosting ensures crash data never leaves your infrastructure. With systemd-coredump, cores stay in your journal; with minicoredumper, you control exactly what memory regions are captured, reducing exposure.
Storage cost control: Full coredumps of large processes can consume terabytes of disk space on busy servers. minicoredumper reduces this by orders of magnitude — a 50 GB database process produces a 1.2 MB dump instead. Even with systemd-coredump’s lz4 compression, the size savings from minicoredumper are dramatic for memory-heavy workloads.
Compliance requirements: Many regulated industries (finance, healthcare, government) require that all crash data remain on-premises. ABRT’s ability to file bugs to an internal Bugzilla instance (rather than a public tracker) satisfies these requirements while still providing automated crash reporting.
Debugging workflow integration: Self-hosted coredump management integrates with your existing monitoring stack. For storage monitoring best practices, see our disk health monitoring guide. For log-based crash detection, our syslog aggregation comparison covers centralized log collection that complements coredump analysis. And for GPU-related crashes, our GPU monitoring guide shows how to correlate hardware metrics with process crashes.
FAQ
What is a coredump and why do I need one?
A coredump is a file containing the complete memory state of a process at the moment it crashed. It includes register values, stack traces, heap contents, and loaded library information. When a process segfaults or receives a fatal signal, the kernel can write this snapshot to disk. Without a coredump, debugging a production crash often requires reproducing the issue — which may be impossible for intermittent bugs. With a coredump, you can load it into GDB or LLDB and inspect the exact state at crash time.
How much disk space do coredumps consume?
Full coredumps are approximately the size of the process’s RSS (resident set size) at crash time. A 4 GB database process will produce a ~4 GB coredump. systemd-coredump compresses these with lz4 (typically 3-5x reduction). minicoredumper produces minimal coredumps under 1 MB regardless of process size by capturing only stack frames and critical memory regions. ABRT stores full coredumps plus metadata files (backtrace, environment, maps).
Can I use multiple coredump handlers simultaneously?
No. The kernel supports only one core_pattern handler at a time. However, you can chain handlers: write a wrapper script that invokes multiple tools sequentially. For example, a script could first save a full coredump via systemd-coredump, then invoke minicoredumper to produce a minimal dump. Or you could configure systemd-coredump as the primary handler and use ABRT’s post-crash analysis addon to process the stored cores.
Is minicoredumper suitable for production use?
Yes, but with caveats. Minimal coredumps are excellent for most debugging scenarios — null pointer dereferences, assertion failures, and stack overflows are all diagnosable with minimal dumps. However, if you need to debug heap corruption, memory leaks, or issues requiring full heap inspection, you will need a full coredump. A practical approach: use minicoredumper as the default handler and configure specific critical processes to use full coredumps via per-process core pattern overrides.
How do I disable coredumps entirely?
To disable coredumps system-wide:
| |
To set in sysctl persistently:
| |
Does ABRT work on non-Fedora distributions?
Yes, ABRT can be installed on any Linux distribution, though it is optimized for Fedora/RHEL. On Debian/Ubuntu, you can install it from the repositories (apt install abrt abrt-cli), but some plugins may require additional configuration. The core crash capture and CLI functionality works across distributions. The Bugzilla integration and web interface may need custom endpoint configuration for non-Fedora bug trackers.