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
One general tip is to try starting the program from the terminal and see whether there’s a useful error message.
Also, if you don’t have a preference between Fedora and Debian, it might be worth trying the Debian minimal templates, just in case it works on one of those.
Also, you could try the standard/full Fedora 38 template. If it works there, then you’ve confirmed that it’s a missing package. If it doesn’t, then it might be a deeper problem.
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.
I did, sorry apparently I could have made that clearer in my original post . It works on the standard template, that’s why I think there’s a missing package.
This is pretty much exactly what I was looking for, thanks! I’ll give it a go and mark your post as the solution if it all works out.
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.