Hi folks. So this is a weird one and asking here seems like a real long shot, but I’ve officially run out of ideas so here goes:
I’ve complied a graphical application that freezes (with no error) in a qube based on fedora-38-minimal, but runs fine on ones based on fedora-37-minimal or fedora-38.
Other then their starting templates the qubes and template qubes are identical having been subject to the same homemade bash script which installs all the packages said application is known to require (and some others.)
Therefore I’ve concluded there must be a package missing from the fedora-38-minimal template which is present in the other two templates. So I need to find and install this package on fedora-38-minimal.
I’m struggling to come up with a good strategy for figuring out what this package is.
Any and all idea’s welcome!
And just in case, here are some technical specifics you probably don't need to read...
The list of packages I’m already installing as part of my shell script is:
gnome-terminal qubes-core-agent-networking nautilus qubes-core-agent-nautilus gnome-terminal-nautilus gnome-settings-daemon gvfs-smb pulseaudio-qubes gnome-keyring git snapd qubes-snapd-helper libX11-devel alsa-lib-devel systemd-devel mingw64-gcc cmake fontconfig-devel qubes-core-agent-passwordless-root
Output the list of all installed packages in all three 3 templates to text files.
Compare those files with Libreoffice Calc or self-made script (e.g. in bash or python) to find out the difference in the packages list.
Clone fedora-38-minimal to temporary one, e.g. fedora-38-min-tests.
Try to install part of the packages inside this temporary template. After installation - shut down template, restart qubes based on this template and check. Fastest way to do it to install half of packages, then other half and etc. If the situation is solved at some point you can go back by uninstalling packages or by cloning the original fedora-38-minimal again. It will allow you to find the responsible package.
Try ldd to see if the dynamic linkages are all found and consistent between the two templates. Do this recursively. Since you mentioned Snap in your extended description it may be some missing resource files, not necessarily any “dependency” library. I’m no expert with Snap but when migrating/upgrading fedora versions I have found reinstalling Snap library components is sometimes necessary. I never looked at why.
Try running each app from the command line using strace or similar utility to watch where their behavior deviates and look for what system calls fail on the one that freezes. If there is a missing resource file you should see an open() fail with at least part of the path to that resource. Use ‘dnf whatprovides’ command to trace that file path back to a package to reinstall if necessary.
Awsome, i’ll try this too. Its probably not Snap, the actual project/app doesn’t use any snap components and can be compiled without it, that’s just in there for my IDE. Still, if strace gives me something useful this is going to save so much time, thanks!
Fyi - Strace has options to follow forks or attach to individual pid’s, and depending on how your app is written you may need to attach to different threads if you don’t immediately see where they deviate.