LinuxQuestions.org

LinuxQuestions.org (/questions/)
-   Slackware (https://www.linuxquestions.org/questions/slackware-14/)
-   -   32-bit GLX (nvidia) not working after update, unless running with strace (https://www.linuxquestions.org/questions/slackware-14/32-bit-glx-nvidia-not-working-after-update-unless-running-with-strace-4175733503/)

af7567 02-03-2024 04:25 PM

32-bit GLX (nvidia) not working after update, unless running with strace
 
TLDR: using binutils-2.42 to compile glibc-multilib on slackware isn't compatible with the 32-bit nvidia binary libGLX_nvidia. If binutils-2.41 is used to compile glibc-multilib then everything is ok. Also copying ld-2.39.so from a slackware-current 32-bit system breaks libGLX_nvidia in the same way (but libGLX_mesa is ok).

I did upgrade-all on slackware64-current and restarted the PC since it also updated glibc.
Now 32-bit GLX things segfault unless I run them with strace.

I have recompiled the nvidia-kernel and nvidia-driver 535.154.05_multilib packages.
Also upgraded mesa-compat32 by using convertpkg on the mesa-24.0.0-i586 package.

I would have tried downgrading glibc back to 2.38_multilib but there doesn't seem to be anywhere to download older versions from.

Anything else I can try?

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

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 ?? ()


garpu 02-03-2024 08:38 PM

Hrm. I got that, too. But the 32-bit vkcube works, as does a 32-bit WINE game. Does anything else that's 32-bit break for you?

ETA: Steam segfaults for me. I tried to reset it, and gets to about this line and crashes: "steam.sh[5893]: Can't find 'steam-runtime-check-requirements'"

glxgears is also broken for me. LDD isn't showing anything missing, though.

af7567 02-04-2024 06:51 AM

It is only 32 bit glx things that segfault for me. I just tested vkcube and that works ok.
It was actually when running steam I first noticed the problem :) I got steam working last night by running it as:
Code:

DEBUGGER="strace -o/dev/null" steam

garpu 02-04-2024 07:45 AM

I've reinstalled (completely) nvidia drivers (instead of just using -K). (Patched to work with the 6.6.15 kernel.), 535.154.05. I tried the old kernel, too, thinking it might be the patch causing it.
I've upgraded mesa for 32-bit (thinking there was a mismatch), ditto for SDL2.
I've tried a completely new user.
Steam is apparently working for Chrisretusn: https://www.linuxquestions.org/quest...ml#post6481208

af7567 02-04-2024 07:53 AM

I wonder if it's something to do with nvidia 535. Chrisretus seems to be using nvidia driver 470.
I will have to try building nvidia 545 or 550 and see if they work.

af7567 02-04-2024 08:03 AM

Nope. I just built nvidia-driver-550.40.07_multilib but still get the segfault with glx* programs.

garpu 02-04-2024 08:05 AM

Quote:

Originally Posted by af7567 (Post 6481236)
Nope. I just built nvidia-driver-550.40.07_multilib but still get the segfault with glx* programs.

So could possibly be a multilib issue? (Something needs to sync)

af7567 02-04-2024 08:26 AM

I guess it is something to do with multilib since only the 32bit versions are broken. Maybe some more of the packages need recompiling against glibc-2.39. It seems to be /usr/lib/libGLX.so.0 where the problem is, and that is the libglvnd-compat32-1.7.0 package.

edit: Just recompiled libglvnd but that doesn't fix it.

garpu 02-04-2024 08:29 AM

Quote:

Originally Posted by af7567 (Post 6481242)
I guess it is something to do with multilib since only the 32bit versions are broken. Maybe some more of the packages need recompiling against glibc-2.39. It seems to be /usr/lib/libGLX.so.0 where the problem is, and that is the libglvnd-compat32-1.7.0 package.

What's weird is that it hasn't been changed since September, though. (And why does the 64-bit one work?)

Petri Kaukasoina 02-04-2024 08:54 AM

Removed

af7567 02-04-2024 09:04 AM

I think that glvnd just calls whatever the real libGLX is on the system, and it looks like when trying to load the nvidia libGLX it is running into the problem.
You can tell libglvnd to use a different vendor GLX using the __GLX_VENDOR_LIBRARY_NAME env var.

This works:
Code:

__GLX_VENDOR_LIBRARY_NAME=mesa /usr/bin/32/glxinfo
(tested with 32-bit mesa 24 and 23.3.2)

This doesn't:
Code:

__GLX_VENDOR_LIBRARY_NAME=nvidia /usr/bin/32/glxinfo
But this does:
Code:

__GLX_VENDOR_LIBRARY_NAME=nvidia strace -o/dev/null /usr/bin/32/glxinfo
So it looks like a problem with either the nvidia driver or libglvnd, but only for 32-bit libs.

edit:
I just tried changing the symlink /usr/lib/libGLX_nvidia.so.0 to point to libGLX_mesa.so.0.0.0 and then glxinfo works using the "nvidia" vendor. So we know it is finding the nvidia GLX library OK, it's just crashing when trying to load it.

Pixxt 02-04-2024 09:19 AM

From a reddit thread.

Quote:

Sounds weird, I know, but do you have 'Remember Login' checked? Uncheck it and try again.

I had to manually change that setting by editing the vdf file but just disabling that allows me to open Steam again.
Quote:

You need to uncheck "Remember Password" in Steam login or .steam/registry.vdf

garpu 02-04-2024 09:35 AM

Quote:

Originally Posted by Pixxt (Post 6481262)
From a reddit thread.

This isn't that problem...it's any 32-bit GLX/OpenGL program not running unless a debugger is also running.

garpu 02-04-2024 09:39 AM

Quote:

Originally Posted by af7567 (Post 6481256)
edit:
I just tried changing the symlink /usr/lib/libGLX_nvidia.so.0 to point to libGLX_mesa.so.0.0.0 and then glxinfo works using the "nvidia" vendor. So we know it is finding the nvidia GLX library OK, it's just crashing when trying to load it.

Wild-assed guess, but:

Code:

d/nv-codec-headers-12.1.14.0-x86_64-1.txz: Added.
      Needed to build support for nvidia hardware decoders/encoders on newer GPUs.

Was added on January 29th. Could we need it on the 32-bit end of things?

Otherwise, I'm waiting for the official multilib refresh. (Should be Real Soon Now) I know Chrisretusn is more current than we are, and there could be something we need an update on that has been updated since Jan. 5. It shouldn't matter, I know, but weird library errors sometimes happen when multilib gets stale.

af7567 02-04-2024 10:42 AM

Quote:

Originally Posted by garpu (Post 6481267)
Wild-assed guess, but:

Code:

d/nv-codec-headers-12.1.14.0-x86_64-1.txz: Added.
      Needed to build support for nvidia hardware decoders/encoders on newer GPUs.


That package only contains header files, no binaries or libraries so won't need a compat32 version.

Everything else 32-bit seems to be fine, including vkcube, so I don't think it is a problem with multilib. Since libglvnd works OK with the Mesa 32-bit libs, it looks more like the nvidia libGLX isn't compatible with glibc-2.39 and so when libglvnd tries to dlopen it, it segfaults.
Can't see any mention of it on the nvidia forums though.


All times are GMT -5. The time now is 06:27 AM.