aboutsummaryrefslogtreecommitdiff
path: root/docs/linux_core_handler.md
blob: 558940f2b672d1e208941bf410b96bb9b651e736 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# 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](./linux_starter_guide.md) 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)](https://man7.org/linux/man-pages/man5/core.5.html) for more
details.