Unable to load libGLX_nvidia

Hi,
New to Bottles and trying to install:

  1. Running Mint 20.3
  2. Installed using links on: https://flathub.org/apps/com.usebottles.bottles

I get:
(ERROR) Unable to load libGLX_nvidia.so.0

and:
No provider of glGenSamplers found. Requires one of:
Desktop OpenGL 3.3
GL_ARB_sampler_objects
OpenGL ES 3.0

I’m surprised as I thought Bottles is a mature product and LInux Mint isn’t unusual.

What do I need to do to correct this (these) errors?
Many thanks.

Which nVidia driver have you installed on your host (Linux Mint) & which Flatpak extensions (flatpak list, org.freedesktop.Platform.GL.…)?

You can also run the application from a terminal with flatpak run -vv com.usebottles.bottles to provide a verbose log of all flatpak is doing.

Hi Martin, Thanks for trying to help me.

The Nvidia driver is ‘nvida-340’, the hardware is ‘GT218 [GeForce 210]’ and this driver is recommended by Nvidia for this card.

‘flatpak list’ gives me:

Blockquote
Name Application ID Version Branch Installation
Bottles Contrib… com.usebottles.bottles 51.11 stable system
Shortwave de.haeckerfelix.Shortwave 2.0.1 stable system
WhatsApp Desktop ….mimbrero.WhatsAppDesktop 1.2.3 stable system
Flatpak Externa… …pak-external-data-checker stable system
Freedesktop Pla… org.freedesktop.Platform 18.08.39 18.08 system
Freedesktop Pla… org.freedesktop.Platform 21.08.11 21.08 system
Freedesktop Pla… org.freedesktop.Platform 22.08.5 22.08 system
Mesa …sktop.Platform.GL.default 21.1.8 20.08 system
Mesa …sktop.Platform.GL.default 21.3.6 21.08 system
Mesa …sktop.Platform.GL.default 22.3.2 22.08 system
Mesa (Extra) …sktop.Platform.GL.default 22.3.2 22.08-extra system
Mesa …sktop.Platform.GL.default 24.0.3 23.08 system
Mesa (Extra) …sktop.Platform.GL.default 24.0.3 23.08-extra system
nvidia-340-108 …latform.GL.nvidia-340-108 1.4 system
Mesa …top.Platform.GL32.default 24.0.3 23.08 system
nvidia-340-108 …tform.GL32.nvidia-340-108 1.4 system
ffmpeg-full …ktop.Platform.ffmpeg-full 23.08 system
i386 …Platform.ffmpeg_full.i386 23.08 system
html5-codecs …top.Platform.html5-codecs 18.08 system
openh264 …desktop.Platform.openh264 2.1.0 2.0 system
openh264 …desktop.Platform.openh264 2.1.0 2.2.0 system
Freedesktop SDK org.freedesktop.Sdk 23.08.14 23.08 system
GNOME Applicati… org.gnome.Platform 40 system
GNOME Applicati… org.gnome.Platform 45 system
i386 …nome.Platform.Compat.i386 45 system
Tomboy org.gnome.Tomboy 1.15.9 stable system
Mint-Y Gtk Theme org.gtk.Gtk3theme.Mint-Y 3.22 system
KDE Application… org.kde.Platform 5.15-22.08 system
DXVK org.winehq.Wine.DLLs.dxvk 2.3 stable-23.08 system
Gecko org.winehq.Wine.gecko stable-23.08 system
Mono org.winehq.Wine.mono stable-23.08 system

Running: ‘flatpak run -vv com.usebottles.bottles’ gives me 1120 lines of text that start with:

Blockquote
F: No installations directory in /etc/flatpak/installations.d. Skipping
F: Opening system flatpak installation at path /var/lib/flatpak
F: Opening user flatpak installation at path /home/bobf/.local/share/flatpak
F: Opening user flatpak installation at path /home/bobf/.local/share/flatpak
F: Opening system flatpak installation at path /var/lib/flatpak
F: Opening user flatpak installation at path /home/bobf/.local/share/flatpak
F: Opening system flatpak installation at path /var/lib/flatpak
F: /var/lib/flatpak/runtime/org.gnome.Platform/x86_64/45/e66d066758b2a7b50a1cac032041fc1569c428f7cff988dcba554b3c035a191d/files/lib32 does not exist
F: Unable to block syscall 442: syscall not known to libseccomp?
F: Allocated instance id 2392014142
F: Add defaults in dir /com/usebottles/bottles/
F: Add locks in dir /com/usebottles/bottles/
F: Allowing wayland access
F: Allowing x11 access
F: Allowing pulseaudio access
F: Pulseaudio user configuration file ‘/home/bobf/.config/pulse/client.conf’: Error opening file /home/bobf/.config/pulse/client.conf: No such file or directory

and ends with the error messages already posted.

Does any of this provide any clues?

Bob

Hi Martin,
An update:
I’ve done a bit of homework and run ‘flatpak repair’ and ‘flatpak update’ a few times, that got rid of several ‘End of life’ errors and now I only get this:

Blockquote
flatpak run com.usebottles.bottles
14:30:25 (ERROR) Unable to load libGLX_nvidia.so.0
14:30:25 (WARNING) Unable to locate libGLX_nvidia
14:30:26 (INFO) Bottles Started!
No provider of glGenSamplers found. Requires one of:
Desktop OpenGL 3.3
GL_ARB_sampler_objects
OpenGL ES 3.0

I’ve checked and find I seem to have everything installed:

Blockquote
glxinfo | grep version
server glx version string: 1.4
client glx version string: 1.4
GLX version: 1.4
OpenGL core profile version string: 3.3.0 NVIDIA 340.108
OpenGL core profile shading language version string: 3.30 NVIDIA via Cg compiler
OpenGL version string: 3.3.0 NVIDIA 340.108
OpenGL shading language version string: 3.30 NVIDIA via Cg compiler
OpenGL ES profile version string: OpenGL ES 2.0 NVIDIA 340.108 340.108
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 1.00

So I’m still in your hands, Bob

There should be a lot of lines referencing nvidia, e.g. similar to this:

F:     --ro-bind
F:     /home/flatpak/runtime/org.freedesktop.Platform.GL32.default/x86_64/23.08/bc94d2d07ae990a6938fc1da8c7eade08ac5dcb1ad02004085b635e537f4470e/files
F:     /app/lib/i386-linux-gnu/GL/default
F:     --ro-bind
F:     /home/flatpak/runtime/org.freedesktop.Platform.ffmpeg_full.i386/x86_64/23.08/229834c7ac2e812a5dacfe46d985cbca8826b4c54f820c93abe4107f5191fcf2/files
…
F:     --ro-bind-data
F:     24
F:     /run/flatpak/ld.so.conf.d/app-001-org.freedesktop.Platform.GL32.default.conf
F:     --symlink
F:     /app/lib/i386-linux-gnu/GL/default/vulkan/icd.d/intel_hasvk_icd.i686.json
F:     /app/lib/i386-linux-gnu/GL/vulkan/icd.d/intel_hasvk_icd.i686.json
…
F:     --ro-bind-data
F:     27
F:     /run/flatpak/ld.so.conf.d/runtime-001-org.freedesktop.Platform.GL.default.conf
F:     --symlink
F:     /usr/lib/x86_64-linux-gnu/GL/default/vulkan/icd.d/intel_hasvk_icd.x86_64.json
F:     /usr/lib/x86_64-linux-gnu/GL/vulkan/icd.d/intel_hasvk_icd.x86_64.json

But you can also check the files of the driver manually:

flatpak run --command=bash com.usebottles.bottles
# Inside the sandbox
ldconfig -p | grep libGLX

This should find at least 2 occurrences with libGLX_nvidea (once inside /usr/lib/x86_64-gnu-linux the other inside /app/lib/i386-gnu-linux).


It’s possible that it’s a Bottles bug: [Bug]: Unable to load libGLX_nvidia.so.0 · Issue #3133 · bottlesdevs/Bottles · GitHub
But you already have both extensions (GL & GL32) installed.

Hi Martin,

I ran ‘flatpak run -vv com.usebottles.bottles’ and looked for nvidia lines, got these four instances:

Blockquote
F: /var/lib/flatpak/runtime/org.freedesktop.Platform.GL32.nvidia-340-108/x86_64/1.4/d635d4eaa77b82d3942cde3acee868f60bc8924d9bc500fd6577fee31ac81f60/files
F: /app/lib/i386-linux-gnu/GL/nvidia-340-108
.
F: /run/flatpak/ld.so.conf.d/app-002-org.freedesktop.Platform.GL32.nvidia-340-108.conf
F: --symlink
F: /app/lib/i386-linux-gnu/GL/nvidia-340-108/OpenCL/vendors/nvidia.icd
F: /app/lib/i386-linux-gnu/GL/OpenCL/vendors/nvidia.icd
.
F: /var/lib/flatpak/runtime/org.freedesktop.Platform.GL.nvidia-340-108/x86_64/1.4/ce032e93ccfe5f4245837bdcdee21d09a8b1315a999b1745a59e3703503b5f0f/files
F: /usr/lib/x86_64-linux-gnu/GL/nvidia-340-108
.
F: /run/flatpak/ld.so.conf.d/runtime-002-org.freedesktop.Platform.GL.nvidia-340-108.conf
F: --symlink
F: /usr/lib/x86_64-linux-gnu/GL/nvidia-340-108/OpenCL/vendors/nvidia.icd
F: /usr/lib/x86_64-linux-gnu/GL/OpenCL/vendors/nvidia.icd

If I understand your intructions correctly I then did this:

Blockquote
flatpak run --command=bash com.usebottles.bottles
[:package: com.usebottles.bottles ~]$ ldconfig -p | grep libGLX

With this result:

Blockquote
libGLX_mesa.so.0 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/GL/default/lib/libGLX_mesa.so.0
libGLX_mesa.so.0 (libc6) => /app/lib/i386-linux-gnu/GL/default/lib/libGLX_mesa.so.0
libGLX.so.0 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libGLX.so.0
libGLX.so.0 (libc6) => /app/lib/i386-linux-gnu/libGLX.so.0
[:package: com.usebottles.bottles ~]$

Lots of libGLX entries but no nvdiia :frowning:

Bob

It looks like the driver is added to the sandbox inside in /usr/lib/x86_64-linux-gnu/GL/nvidia-340-108 & /app/lib/i386-linux-gnu/GL/nvidia-340-108 .

I can’t say what is going wrong so I’m just guessing:

  • Do you have any overrides & environment variables set in your system (e.g. via .bashrc, .bash_profile or a similar file) that could interfere?

  • Bottles has a health check, maybe it provides some information.

flatpak run --command=bottles-cli com.usebottles.bottles info health-check
  • Post the result of ldconfig -v, we should be able to see what libraries are coming from which configuration file:
flatpak run --command=ldconfig com.usebottles.bottles -v
  • And just to be save, let’s take a look at all the driver files:
flatpak run --command=ls com.usebottles.bottles -R /usr/lib/x86_64-linux-gnu/GL/nvidia-340-108

I am an engineer, not a programmer so I have only used Bash a couple of times in ten years so I doubt it very much.

I have run the commands you listed and I have so very long outputs so I’ve had to break my reply into several responses. The two long outputs have some errors at the beginning and the end. In a few places I have added a ’ . ’ on a blank line to stop the Blockquote ending too early.

I’l have a look at the errors now to see if I can find anything myself.

Healthcheck: flatpak run --command=bottles-cli com.usebottles.bottles info health-check

Blockquote
info health-check
11:23:01 (ERROR) Unable to load libGLX_nvidia.so.0
11:23:01 (WARNING) Unable to locate libGLX_nvidia
11:23:01 (ERROR) Unable to load libGLX_nvidia.so.0
11:23:01 (WARNING) Unable to locate libGLX_nvidia
Official Package: true
Version: ‘51.11’
DE/WM: cinnamon
Display:
X.org: true
X.org (port): :99.0
Wayland: false
Graphics:
vendors:
nvidia:
vendor: nvidia
envs:
__NV_PRIME_RENDER_OFFLOAD: ‘1’
__GLX_VENDOR_LIBRARY_NAME: nvidia
__VK_LAYER_NV_optimus: NVIDIA_only
icd: ‘’
nvngx_path: null
prime:
integrated: null
discrete: null
Kernel:
Type: Linux
Version: 5.4.0-174-generic
Disk:
Total: 4140240896
Free: 4140064768
RAM:
MemTotal: 7.7GiB
MemAvailable: 5.0GiB
Bottles_envs: null

ldconfig -v

This listing only has the error lines as the output is too big to include

Blockquote
/sbin/ldconfig.real: Can’t stat /usr/local/lib/i386-linux-gnu: No such file or directory
/sbin/ldconfig.real: Path /usr/lib/i386-linux-gnu' given more than once /sbin/ldconfig.real: Can't stat /usr/local/lib/i686-linux-gnu: No such file or directory /sbin/ldconfig.real: Can't stat /lib/i686-linux-gnu: No such file or directory /sbin/ldconfig.real: Can't stat /usr/lib/i686-linux-gnu: No such file or directory /sbin/ldconfig.real: Can't stat /usr/local/lib/x86_64-linux-gnu: No such file or directory /sbin/ldconfig.real: Path /usr/lib/x86_64-linux-gnu’ given more than once
/sbin/ldconfig.real: Path /usr/lib32' given more than once /sbin/ldconfig.real: Path /lib/x86_64-linux-gnu’ given more than once
/sbin/ldconfig.real: Path /usr/lib/x86_64-linux-gnu' given more than once /sbin/ldconfig.real: Path /usr/lib’ given more than once

Lots of lines cut here

Blockquote
/lib/i386-linux-gnu/i686/sse2: (hwcap: 0x0002000000000001)
libx264.so.155 → libx264.so.155
/sbin/ldconfig.real: Can’t create temporary cache file /etc/ld.so.cache~: Permission denied

flatpak run --command=ldconfig com.usebottles.bottles -v

Blockq
ldconfig: Path `/usr/lib/x86_64-linux-gnu/GL/default/lib’ given more than once
(from /run/flatpak/ld.so.conf.d/runtime-004-org.freedesktop.Platform.GL.default.conf:1 and /run/flatpak/ld.so.conf.d/runtime-001-org.freedesktop.Platform.GL.default.conf:1)
/app/lib/i386-linux-gnu/GL/default/lib: (from /run/flatpak/ld.so.conf.d/app-001-org.freedesktop.Platform.GL32.default.conf:1)

Many lines without errors deleted as listing is too long

Blockq
libplds4.so → libplds4.so
libpulse.so.0 → libpulse.so.0.24.3
ldconfig: Renaming of /etc/ld.so.cache~ to /etc/ld.so.cache failed: Device or resource busy

I think this is the last command. Several times I was told the insert was too long so I have to cut back to just lines showing the errors

flatpak run --command=ls com.usebottles.bottles -R /usr/lib/x86_64-linux-gnu/GL/nvidia-340-108

Blockquote
/usr/lib/x86_64-linux-gnu/GL/nvidia-340-108:
bin egl extra glvnd lib manifest.json OpenCL share vulkan
.
/usr/lib/x86_64-linux-gnu/GL/nvidia-340-108/bin:
apply_extra ldconfig
.
/usr/lib/x86_64-linux-gnu/GL/nvidia-340-108/extra:
libcuda.so libnvidia-glsi.so.340.108
libcuda.so.1 libnvidia-ifr.so.1
libcuda.so.340.108 libnvidia-ifr.so.340.108
libEGL.so.1 libnvidia-ml.so
libEGL.so.340.108 libnvidia-ml.so.1
libGLESv1_CM.so.1 libnvidia-ml.so.340.108
libGLESv1_CM.so.340.108 libnvidia-opencl.so
libGLESv2.so.2 libnvidia-opencl.so.1
libGLESv2.so.340.108 libnvidia-opencl.so.340.108
libGL.so.1 libnvidia-tls.so.340.108
libGL.so.340.108 libnvidia-wfb.so.1
libglx.so.340.108 libnvidia-wfb.so.340.108
libnvcuvid.so.1 libvdpau_nvidia.so
libnvcuvid.so.340.108 libvdpau_nvidia.so.1
libnvidia-cfg.so.1 libvdpau_nvidia.so.340.108
libnvidia-cfg.so.340.108 libvdpau.so.1
libnvidia-compiler.so.340.108 libvdpau.so.340.108
libnvidia-eglcore.so.340.108 libvdpau_trace.so.1
libnvidia-encode.so.1 libvdpau_trace.so.340.108
libnvidia-encode.so.340.108 OpenCL
libnvidia-fbc.so.1 share
libnvidia-fbc.so.340.108 tls
libnvidia-glcore.so.340.108
.
/usr/lib/x86_64-linux-gnu/GL/nvidia-340-108/extra/OpenCL:
vendors
.
/usr/lib/x86_64-linux-gnu/GL/nvidia-340-108/extra/OpenCL/vendors:
nvidia.icd
.
/usr/lib/x86_64-linux-gnu/GL/nvidia-340-108/extra/share:
nvidia
.
/usr/lib/x86_64-linux-gnu/GL/nvidia-340-108/extra/share/nvidia:
nvidia-application-profiles-340.108-key-documentation
nvidia-application-profiles-340.108-rc
nvidia-application-profiles-key-documentation
nvidia-application-profiles-rc
.
/usr/lib/x86_64-linux-gnu/GL/nvidia-340-108/extra/tls:
libnvidia-tls.so.340.108
.
/usr/lib/x86_64-linux-gnu/GL/nvidia-340-108/share:
nvidia

The errors can be ignored (I didn’t want to update anything, just see which libraries will be used).

And generally, it’s probably easier to use some paste service to provide the logs.


But we can already see that libGLX_nvidia.so.0 simply does not exist in this driver version.

I think there’s not much that can be done. You could file a bug report in the Bottles bug tracker but since the driver is no longer supported by nVidia it’s possible that it won’t be fixed.

Before that check on your host system via glxinfo the following (just search for the strings in the output):
OpenGL core profile version string should be >= 3.3
OpenGL ES profile version string should be >= 3.0
GL_ARB_sampler_objects extension should exist

Unless one of the requirements is met it’s probably not even possible to use Bottles with your driver version (or possibly GPU).

Else you can only try a newer driver version, if it’s available.

Hi,
I did the ‘glxinfo’ check a suggested, the first and last items are correct but the third, " ES profile version" returns:

OpenGL ES profile version string: OpenGL ES 2.0 NVIDIA 340.108 340.108

So it looks as though I can’t run Bottles with the current graphics card :scream:

Many thanks for your help with this.
Bob