There are several seemingly related crasher regressions related to using the 260.xx driver version.
First, a simple issue of
call segfaulting (backtrace attached) (nothing else needed in main()).
It requires at least the following conditions:
- the binary has to be linked with libGL (i.e. -lGL in addition to -lSDL)
- pulseaudio has to installed (tested: 0.9.21) but *not* running (autospawn can be enabled or disabled)
- SDL has to be built with pulse support (tested: 1.2.14, pulse support in dlopen mode)
- SDL has to be using the pulse driver (either by having patched the pulse priority above alsa like Mandriva, or using SDL_AUDIODRIVER=pulse)
- must not be running under gdb
- must not be running under __GL_SINGLE_THREADED=1
- must be using NVIDIA GL library from 260.x driver (256.x does not crash)
- if glibc (tested: 2.11.1, 2.12.1) was built with GCC 4.5.1, testcase needs to also be linked with -lpulse to make the crash happen (when glibc is built with either GCC 4.4.3 or GCC 4.4.5, the testcase crashes even without -lpulse)
- glibc has to be built with -O2 optimization, which includes -falign-functions (this means that using e.g. "-O1" or "-O2 -fno-align-functions" to build glibc will avoid the crash)
Especially the last several conditions seem quite interesting, but I guess they could be just coincidental.
I've confirmed the issue on Mandriva cooker x86_64 and Mandriva 2010.1 x86_64 systems (plus 2010.1 32bit chroot), and I've gotten reports from others indicating their Mandriva 2010.1 x86_64 and Fedora 32-bit installations are also affected (and here's another Fedora 32-bit affected: http://forum.xbmc.org/showthread.php?t=83924
The issue is reproducable also in a simple chroot environment (tested: Mandriva 2010.1 64bit and Mandriva 2010.1 32bit) without any NVIDIA hardware / X server, where you only have the NVIDIA GL library installed.
I've also put an affected chroot tarball available: http://onse.fi/files/2010.1-x86_64-N...DLtest.tar.bz2
The test program (as described above, only calling SDL_Init(SDL_INIT_AUDIO)) is in /home/anssi/SDLtest.c, which can simply by compiled with
gcc -o SDLtest SDLtest.c -lSDL -lGL
gcc -o SDLtest+pulse SDLtest.c -lSDL -lGL -lpulse
The chroot contains glibc 2.11.1 compiled with gcc 4.4.3 and therefore both "SDLtest" and "SDLtest+pulse" variants crash. Note that you have to mount /proc inside the chroot, or the crash will not happen.
There is also a related (260.x only) crash when trying to use VDPAU in xbmc (backtrace attached). I've not debugged this one in detail, but it seems that building glibc with -fno-align-functions will workaround this one as well. However, using __GL_SINGLE_THREADED=1 has no effect, and the crash happens regardless.
Attached is also nvidia-bug-report.log.gz from one of the system experiencing this issue. Kernels tested were 2.6.36 and 184.108.40.206.
Feel free to ask for any additional information.