How To Use Breakpad As a Coredump Handler on Linux

This document presents a way to use Breakpad in order to generate minidumps system wide on Linux.

Please refer to Linux starter guide if instead you want to integrate breakpad into your application.

Motivation

When working on an embedded system, disk and memory space is often limited and when a process crashes it must be restarted as soon as possible. Sometime saving a full coredump takes to much time or consumes too much space.

Breakpad Core Handler

In such case the program core_handler can be use to generate minidumps instead of coredumps. core_handler reads the firsts sections of the coredump (where the various threads are described) generated by Linux from the standard input and then directly reads /proc/<pid>/mem to reconstruct the stacktraces.

One can test it with:

# echo "|/usr/libexec/core_handler %P /var/lib/minidump/%e-%i.md" >
                /proc/sys/kernel/core_pattern
# echo 1 > /proc/sys/kernel/core_pipe_limit

Be aware that a real world integration would likely require further customization and so core_handler can be wrapped into a script (for example to change the permission of the minidump file or to signal the presence of the minidump to another service).

Please refer to core(5) for more details.