Skip to main content

Providing Backtraces

To ensure the best results and facilitate resolution when reporting segfaults, it is highly recommended that a backtrace be provided. A backtrace is "a summary of how your program got where it is. It shows one line per frame, for many frames, starting with the currently executing frame (frame zero), followed by its caller (frame one), and on up the stack".

Source: GDB Manual

This document will provide instructions, some of which may be OS-specific, for generating a file containing the backtrace. Please note that you must have the debug symbols for Budgie Desktop installed on your system. This may already be the case if you built Budgie Desktop yourself, but we provide some OS-specific instructions below.

Debug Symbols

A debug symbol is a special kind of symbol that attaches additional information to the symbol table of an object file, such as a shared library or an executable. This information allows a symbolic debugger to gain access to information from the source code of the binary, such as the names of identifiers, including variables and routines.

Source: Wikipedia

In the case of Budgie Desktop, this helps us identify various parts of the Budgie Desktop codebase across its range of components that may affect any issue that requires a backtrace.

sudo dnf debuginfo-install budgie-desktop

GDB

The GNU Project Debugger (GDB) is widely available across various Linux-based operating systems. We recommend using the instructions below for installing the debugger, though if you are familiar with the package manager of the operating system of your choice, typically the package is gdb and you can install using your package manager's typical installation command(s).

sudo pacman -S gdb

Generating a Backtrace

First, replace your existing budgie-panel with one managed by gdb and pipe the output into the referenced file:

gdb budgie-panel 2&>1 | tee ~/budgie-panel-gdb.txt

Once you're in gdb, you will be presented with a prompt showing:

(gdb)

Type the following, then press the ENTER / Return key. This should replace your Budgie panel(s).

r --replace

Next, perform the actions required to cause the segfault. You should see something like Thread 1 "budgie-panel" received signal SIGSEGV, Segmentation fault. Press Enter / Return and you should now see a (gdb) prompt again.

Type the following, then press the ENTER / Return key. This may provide a considerable backtrace of content.

bt full

Once it is done and you see the (gdb) prompt, type quit and upload the txt file generated in the bug report. You bring back your budgie panel by opening a Terminal and typing budgie-panel --replace &! then pressing Ctrl+D to detach from that process.