Cyrus' New Completely Useless Blog

More bionic beaver trials and tribulations

So... it's safe to say that the upgrade to bionic beaver (Ubuntu 18.04) hasn't been the smoothest. On my main development box (madbox), it took my many days to sort through the problems I mentioned the other day, but those are at least temporarily solved by using lightdm instead of gdm3. Anyway, my latest issues are 1) no video in firefox when running jackd at 48k and 2) on a somewhat related note, qjackctl won't start.

So issue 2 is only somewhat related as it doesn't really have anything to do with firefox, but I was hoping to run qjackctl to get a sense of what's going on with the various jack ports. So, try qjacktcl and get:

sly@madbox:~$ qjackctl

This application failed to start because it could not find or load the Qt platform plugin "xcb" in "".

Available platform plugins are: dxcb, eglfs, linuxfb, minimal, minimalegl, offscreen, vnc, xcb.

Reinstalling the application may fix this problem.
Aborted (core dumped)

Awesome. So it turns out that I'm not the only who has had this problem and searching for xcb failures turns up a whole mess of problems and possible solutions, none of which seemed to do anything helpful.

Finally, I came across the following Stack Overflow page which helpfully describes the QTDEBUGPLUGINS=1 environment variable.

Starting qjacktl with this set gives:

Got keys from plugin meta data ("xcb")
QFactoryLoader::QFactoryLoader() checking directory path "/usr/bin/platforms" ...
Cannot load library /usr/lib/x86_64-linux-gnu/qt5/plugins/platforms/libqxcb.so: (libxcb-xinerama.so.0: cannot open shared object file: No such file or directory)
QLibraryPrivate::loadPlugin failed on "/usr/lib/x86_64-linux-gnu/qt5/plugins/platforms/libqxcb.so" : "Cannot load library /usr/lib/x86_64-linux-gnu/qt5/plugins/platforms/libqxcb.so: (libxcb-xinerama.so.0: cannot open shared object file: No such file or directory)"

After which doing:

sudo apt-get install --reinstall libxcb-xinerama0

fixes the problem. Hooray for debugging environment variables. Still, would have been nice if the application had told me that's where the problem lay in the first place.