3

I want core dumps for my crashing application, but can't find them. According to this answer I should be using apport.

$> systemctl list-unit-files | grep apport                                                                                                                                           
apport-autoreport.path                     enabled        
apport-autoreport.service                  static         
apport-forward@.service                    static         
apport.service                             generated      
apport-forward.socket                      enabled

Looks okay, right?

$> cat /proc/sys/kernel/core_pattern
|/usr/share/apport/apport %p %s %c %d %P

But I don't see any core files in my current directory or /var/crash.

I also tried

$> sudo sysctl -w kernel.core_pattern=core.%u.%p.%t
$> cat /proc/sys/kernel/core_pattern
core.%u.%p.%t

I still don't see any core files being created.

What am I missing?

spraff
  • 493

2 Answers2

1

Have you solved this problem? rewrite core_pattern file can solve the paoblem,like echo "/var/crash/core.%u.%E.%p" > /proc/sys/kernel/core_pattern. but i don't want rewrite core_pattern file.

1

apport is Ubuntu specific: it is used to analyse crashed of Ubuntu related programs, e.g. programs installed via packages from their repositories. Ubuntu is by default not interested in crashes of programs you wrote or you have installed from 3rd party repositories.

As such apport skips core files generated for such programs:

$ tail /var/log/apport.log
ERROR: apport (pid 1094421) Mon Mar 24 15:37:34 2025: executable: ~/REPOS/LINUX/remake/make (command line "~/REPOS/LINUX/remake/make -C ~/REPOS/linux/build -f ~/REPOS/linux/Makefile olddefconfig")
ERROR: apport (pid 1094421) Mon Mar 24 15:37:34 2025: executable does not belong to a package, ignoring

$ sed -ne '739,746p' /usr/share/apport/apport # ignore non-package binaries (unless configured otherwise) if not apport.fileutils.likely_packaged(info['ExecutablePath']): if not apport.fileutils.get_config('main', 'unpackaged', False, bool=True): error_log('executable does not belong to a package, ignoring') # check if the user wants a core dump recover_privileges() write_user_coredump(pid, process_start, core_ulimit, coredump_fd) sys.exit(0)

You can enable generating crash reports for your programs: Add the following lines to ~/.config/apport/settings (create it if it doesn't exist):

[main]
unpackaged=true

See https://stackoverflow.com/questions/14204961/how-to-change-apport-default-behaviour-for-non-packaged-application-crashes