32-bit GLX (nvidia) not working after update, unless running with strace
SlackwareThis Forum is for the discussion of Slackware Linux.
Notices
Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
If you have any problems with the registration process or your account login, please contact us. If you need to reset your password, click here.
Having a problem logging in? Please visit this page to clear all LQ-related cookies.
Get a virtual cloud desktop with the Linux distro that you want in less than five minutes with Shells! With over 10 pre-installed distros to choose from, the worry-free installation life is here! Whether you are a digital nomad or just looking for flexibility, Shells can put your Linux machine on the device that you want to use.
Exclusive for LQ members, get up to 45% off per month. Click here for more info.
I will do, I am just building another glibc-2.39 using binutils-2.42 with arch configure options which I expect to end up bad so I can use that for your test.
Never mind. Forget my test. I just noticed that Alien Bob's /lib/libdl-2.38.so and /lib/libdl-2.39.so have exactly the same md5sum even though they are from different glibc versions, built using different binutils versions!
But maybe you see changes in md5sum between a working and broken libc-2.39.so ?
Never mind. Forget my test. I just noticed that Alien Bob's /lib/libdl-2.38.so and /lib/libdl-2.39.so have exactly the same md5sum even though they are from different glibc versions, built using different binutils versions!
But maybe you see changes in md5sum between a working and broken libc-2.39.so ?
The new broken glibc is built now and crashes with:
Code:
#0 0xf7f872b3 in _dl_open () from /lib/ld-linux.so.2
#1 0xf7894e0b in dlopen_doit () from /lib/libc.so.6
#2 0xf7f7a5bb in _dl_catch_exception () from /lib/ld-linux.so.2
#3 0xf7f7a6ef 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 0xf7b14073 in ?? () from /usr/lib/libGLX.so.0
#7 0xf7b155e8 in ?? () from /usr/lib/libGLX.so.0
#8 0xf7b0e6a6 in glXChooseVisual () from /usr/lib/libGLX.so.0
#9 0x08049409 in ?? ()
The md5sums are the same for my bad installed one, and my working one
I did your test anyway by copying the "good" libdl over the bad one, and glxinfo still crashed in exactly the same way - which is a good thing otherwise I would have been more confused
I think I should try installing my binutils-2.41 glibc again, then build binutils-2.42 with all the Slackware patches, and then rebuild gcc _before_ building glibc again.
I haven't compiled gcc since about 1999 on a Pentium 166Mhz, hopefully it doesn't take as long as it did back then
It is currently building gcc-multilib so I can't test overwriting a broken ld-2.39 with a good one at the moment. But maybe the GCC->glibc build will also fail and then I can
edit: the libc sizes are also the same, but md5sums different
edit2: I did objdump -D on them and diff and there are a lot of changes to the instructions, so the difference isn't just some version string
So now I am also wondering if gcc needs to be rebuilt after building a new binutils, and use that to create the new glibc. Since gcc hasn't been rebuilt since the binutils upgrade on Slackware that might be why using binutils-2.41 is working for me since the current gcc was built with binutils-2.41.
Quote:
Originally Posted by af7567
I think I should try installing my binutils-2.41 glibc again, then build binutils-2.42 with all the Slackware patches, and then rebuild gcc _before_ building glibc again.
Let's hope it helps.
The problem is now in the 32-bit glibc while the 64-bit glibc should be ok (?). On a multilib system gcc and binutils are 64-bit binaries even when they emit 32-bit code. It's hard for me to understand how that repeating glibc->binutils->gcc->glibc->binutils->gcc cycle helps producing a better 32-bit glibc libraries because nowhere in that cycle 32-bit code is run.
Quote:
Originally Posted by af7567
It is currently building gcc-multilib so I can't test overwriting a broken ld-2.39 with a good one at the moment.
It will be interesting to see if overwriting ld-2.39.so or libc-2.39.so helps.
Let's hope it helps.
It's hard for me to understand how that repeating glibc->binutils->gcc->glibc->binutils->gcc cycle helps producing a better 32-bit glibc libraries because nowhere in that cycle 32-bit code is run.
I am testing building gcc-multilib (64bit binary) using the new binutils (64bit binary) and then will use the new gcc-multilib + new binutils together to create the 32bit/64bit libc.
My previous tests have been to use OLD gcc-multilib(linked by old binutils) + new binutils to create libc and that has been failing (but only for nvidia - everything else is fine)
I am testing building gcc-multilib (64bit binary) using the new binutils (64bit binary) and then will use the new gcc-multilib + new binutils together to create the 32bit/64bit libc.
It's interesting to see the result.
It would also be interesting to see if nvidia GLX works on the real 32-bit Slackware current instead of 64-bit+multilib. Probably not. Does anyone have a 32-bit current installed on another partition?
It would also be interesting to see if nvidia GLX works on the real 32-bit Slackware current instead of 64-bit+multilib. Probably not. Does anyone have a 32-bit current installed on another partition?
I think Nvidia discontinued 32-bit OS support awhile ago?
I think Nvidia discontinued 32-bit OS support awhile ago?
OK. Using the 32-bit Slackware except the kernel from slackware64 + 64-bit nvidia-kernel + the 32-bit nvidia compat32 userspace would probably still work, but what's the point...
FWIW I just updated my system at work that has an AMD GPU and everything is working. Perhaps this is an NVIDIA driver issue that only they can fix?
Since mesa GLX also works fine for 32 bit programs using libglvnd, I suspect that nvidia just need to compile their 32-bit libs with a newer gcc/glibc.
The real problem I have been trying to work out is why does it work on Arch but not Slackware
Well I have now compiled binutils-2.42 -> gcc -> glibc -> binutils-2.42 -> gcc -> glibc -> libglvnd.. So now every one of the tools is built using the same version as each other (if that makes sense), but 32-bit glxinfo still doesn't work.
So the only way I have been able to get it to work is to use binutils-2.41 when compiling glibc (2.38 or 2.39).
Since it's broken I tested copying over the working 2.39 files one at a time and found that ld-2.39.so is the only thing that needs copying from the good glibc for glxinfo to work.
LinuxQuestions.org is looking for people interested in writing
Editorials, Articles, Reviews, and more. If you'd like to contribute
content, let us know.