Skip to main content
The coredump feature is currently not supported and will be added in a future release.
A coredump is a memory snapshot of a user-space process that allows you to analyze the cause of a process crash. The system collects coredumps according to the Yocto Project Linux standard for all user-space process crashes. By default, the build allows coredumps. The device saves generated coredumps in the /var/coredump directory.
  • To verify the location of the coredump, run the following command:
    cat /proc/sys/kernel/core_pattern
    
    Sample output: /var/coredump/%e.core
  • To verify the size of the coredump, run the following command (the coredump size must be greater than 0 [zero]):
    ulimit -c
    
    Sample output: unlimited
  • If the coredumps aren’t enabled, use the following file to enable it:
    meta-qcom-distro/recipes-products/packagegroups/packagegroup-qcom-utilities.bb.
    RDEPENDS:${PN}-support-utils = " \
    dtc \
    efivar \
    file \
    less \
    ltrace \
    ++  procps \
     tinyalsa \
    
    • Use this patch to enable coredumps, then rebuild and reflash the device.

Analyze coredump using GDB

You can generate a coredump by forcibly killing a process. To do this, run the following commands:
ps -ef | grep -i 'tqftp*'
Sample output: root 1024 1 0 17:46 ? 00:00:00 /usr/bin/tqftpserv root 1047 934 0 17:47 pts/0 00:00:00 grep -i tqftp*
kill -11 1024
cd /var/coredump
ls
Sample output: tqftpserv.core The tqftpserv.core is the coredump file. If the device already has debug symbols, run the following commands to use the GDB tool on the coredump:
cd /usr/bin/
gdb tqftpserv /var/coredump/tqftpserv.core
Sample output:
gdb: warning: Couldn't determine a path for the index cache directory.
Copyright (C) 2022 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
Type "apropos word" to search for commands related to "word"...
Reading symbols from tqftpserv...

warning: exec file is newer than core file.
[New LWP 1024]
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/libthread_db.so.1".
Core was generated by `/usr/bin/tqftpserv'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0  0x0000ffff8629ef34 in __GI___select (nfds=4,
  readfds=readfds@entry=0xffffd04ccb28, writefds=writefds@entry=0x0,
--Type <RET> for more, q to quit, c to continue without paging--
  exceptfds=exceptfds@entry=0x0, timeout=timeout@entry=0x0)
  at ../sysdeps/unix/sysv/linux/select.c:69
69      ../sysdeps/unix/sysv/linux/select.c: No such file or directory.
(gdb) bt
#0  0x0000ffff8629ef34 in __GI___select (nfds=4,
  readfds=readfds@entry=0xffffd04ccb28, writefds=writefds@entry=0x0,
  exceptfds=exceptfds@entry=0x0, timeout=timeout@entry=0x0)
  at ../sysdeps/unix/sysv/linux/select.c:69
#1  0x00000000004013cc in main (argc=<optimized out>, argv=<optimized out>)
  at tqftpserv.c:552
Backtrace stopped: previous frame identical to this frame (corrupt stack?)
(gdb)
For more information, see Linux manual page.