Getting a stack trace out of a Flatpak
by hub, Friday 11 October 2019 at 17:04 :: Linux :: #878 :: rss
So, the flatpak application you use just crashed
How do you report it? If you file a bug just saying it crashed, the developers will probably ask for some stack trace. On Fedora 30, for example, abrt
(the crash reporting system) doesn't provide any useful information. Let's see if we can extract that information.
We are gonna have to use the terminal to use some command line tools. Flatpak has a tool flatpak-coredumpctl
to use the core dump in the flatpak sandbox. The core dump is an image of the program memory when it crashed that will contain a lot about the crash. But by default the tool will not be able to provide much useful info. There is some initial setup need to be able to have a better output.
First you must make sure that you have the right Debug package for the right version of the Flatpak runtime. Well, actually, for the corresponding SDK.
To check the runtime and version:
$ flatpak info org.gnome.MyApp
Check the line that starts with Sdk:
Sdk: org.gnome.Sdk/x86_64/3.34
What is after Sdk:
could be a different value, and that's what is important here. This is what we are looking for
You can use the command flatpak install --user org.gnome.Sdk.Debug
(in our example, just put the one found above) to install it. WARNING: it's likely big. For example the debug package for Gnome 3.34 is 3.4GB here. I recommend installing it for the user as unless you have a lot of space on your system filesystem (if separate) it will fail.
Then you need to install the debug info for the app. It is the app ID suffixed with .Debug
. In that case org.gnome.MyApp.Debug
.
Both will provide the debug info that is necessary to see where in the code things crashed.
$ flatpak-coredumpctl org.gnome.MyApp
This is gdb
being launched inside the flatpak. It will take a while to process, and use quite a good chunk of memory. What follows is mostly for people that are not familiar with `gdb` ; if you are, just go ahead, you know what to do.
When it is ready, something like this will be printed in the terminal:
Program terminated with signal SIGSEGV, Segmentation fault.
And then at the end, the prompt: (gdb)
You can type where
and press "Enter".
This is the stack trace: lines starting with #NNN where NNN is an increasing number.
You can copy that output to provide it to the developers in the bug report.
Then you can type quit
followed by "Enter" when you are done.
Hope that's useful to you.
Comments
Saturday 12 October 2019 08:58, by Baptiste Mille-Mathias :: #
Sunday 13 October 2019 23:41, by Bar Q. :: #
Monday 11 November 2019 21:22, by skierpage :: #
Post a comment
Comments are closed.