Slackware64-current multilib, after update to glibc-2.39 32-bit GLX programs segfault

Hi
After updating to glibc-2.39 on slackware64, I can no longer run 32-bit programs which use libGLX. Eg, glxinfo, glxgears, steam. 64-bit versions still run correctly.
32-bit version of everything else, including vkcube work OK. Also if setting __GLX_VENDOR_LIBRARY_NAME=mesa then glxinfo works. So it is only an issue when libglvnd tries to load libGLX_nvidia.

Tested with nvidia drivers 535.154.05_multilib and 550.40.07_multilib

The backtrace from /usr/bin/32/glxinfo is:

Program terminated with signal SIGSEGV, Segmentation fault.
#0  0xf7f052b3 in _dl_open () from /lib/ld-linux.so.2
#1  0xf7894e0b in dlopen_doit () from /lib/libc.so.6
#2  0xf7ef85bb in _dl_catch_exception () from /lib/ld-linux.so.2
#3  0xf7ef86ef in _dl_catch_error () from /lib/ld-linux.so.2
#4  0xf7894852 in _dlerror_run () from /lib/libc.so.6
#5  0xf7894eee in dlopen@GLIBC_2.1 () from /lib/libc.so.6
#6  0xf7a8c073 in ?? () from /usr/lib/libGLX.so.0
#7  0xf7a8d5e8 in ?? () from /usr/lib/libGLX.so.0
#8  0xf7a866a6 in glXChooseVisual () from /usr/lib/libGLX.so.0
#9  0x08049409 in ?? ()
#10 0xf7824b52 in __libc_start_call_main () from /lib/libc.so.6
#11 0xf7824c23 in __libc_start_main_impl () from /lib/libc.so.6
#12 0x08049dc8 in ?? ()

Original thread here: https://www.linuxquestions.org/questions/slackware-14/32-bit-glx-nvidia-not-working-after-update-unless-running-with-strace-4175733503/

nvidia-bug-report.log.gz (575.6 KB)

2 Likes

Same problem, too. Slackware-current, glibc 2.39, multilib, geforce 1050ti (535.154.05), kernel 6.6.15.

My nvidia drivers are patched with the patch mentioned here: Linux 6.7.3 + 545.29.06/550.40.07: ERROR: modpost: GPL-incompatible module nvidia.ko uses GPL-only symbol '__rcu_read_lock' - #23 by marioeroy

I tried 6.6.14 (last good kernel with unpatched drivers), and same problem. I’ve reinstalled the drivers on the 6.6.15 kernel.

Vulkan programs are fine, 64-bit programs are fine. 32-bit OpenGL programs crash, unless I’m running with a debugger. (So glxinfo, glxgears, and Steam.)

It seems like the only person who isn’t having problems is the person still using the 470 drivers.

1 Like

Same problem here. Slackware-current, glibc 2.39, multilib, RTX 4080 (535.154.05), kernel 6.6.15.

I first patched the nvidia-drivers to fix building on newer kernel like mentioned in the above post. Then I tried patching the kernel itself with this patch.

However I can’t run steam unless a debugger is also running, for instance steam only runs like so…

DEBUGGER=“strace -o/dev/null” steam

Also 32bit glxgears give a segmentation fault.

I am not having this problem on my other computer with an AMDGPU with the exact same OS and specs.

2 Likes

I have found that on Slackware64 this problem occurs when glibc-multilib is compiled using binutils-2.42. When compiling glibc-multilib using binutils-2.41, Nvidia GLX is working fine for 32-bit programs.

However, AMD and Mesa GLX still work without any problems in 32-bit programs when binutils-2.42 is used.

No problems have be noticed with 64bit GLX applications with any combination of binutils/glibc

1 Like

I have narrowed the cause of the problem down to this patch: [PATCH 08/11] x86: add a few more NOP patterns - Jan Beulich

Maybe the nvidia libraries need to be recompiled using binutils 2.42 to fix it?

Another workaround is to delete the 32-bit /usr/lib/libGLX_nvidia.so.0 symlink. This stops libglvnd from finding it and then it uses /usr/lib/libGLX_indirect.so.0 which works OK for GLX. Doing this will break 32-bit Vulkan programs though.