Search code examples
clinuxshared-memorycoredump

Collect core dump with shared memory of running process


Core dump collects only process space but not the shared memory which is created for Inter-process communication. How can I make core dump to include shared memory of running process too?


Solution

  • Set the core file filter in /proc/PID/coredump_filter per http://man7.org/linux/man-pages/man5/core.5.html:

    Controlling which mappings are written to the core dump

       Since kernel 2.6.23, the Linux-specific /proc/PID/coredump_filter
       file can be used to control which memory segments are written to the
       core dump file in the event that a core dump is performed for the
       process with the corresponding process ID.
    
       The value in the file is a bit mask of memory mapping types (see
       mmap(2)).  If a bit is set in the mask, then memory mappings of the
       corresponding type are dumped; otherwise they are not dumped.  The
       bits in this file have the following meanings:
    
           bit 0  Dump anonymous private mappings.
           bit 1  Dump anonymous shared mappings.
           bit 2  Dump file-backed private mappings.
           bit 3  Dump file-backed shared mappings.
           bit 4 (since Linux 2.6.24)
                  Dump ELF headers.
           bit 5 (since Linux 2.6.28)
                  Dump private huge pages.
           bit 6 (since Linux 2.6.28)
                  Dump shared huge pages.
           bit 7 (since Linux 4.4)
                  Dump private DAX pages.
           bit 8 (since Linux 4.4)
                  Dump shared DAX pages.
    
       By default, the following bits are set: 0, 1, 4 (if the
       CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS kernel configuration option is
       enabled), and 5.  This default can be modified at boot time using the
       coredump_filter boot option.