[PD] Gem, Nvidia under Linux

Johannes M Zmoelnig zmoelnig at iem.at
Wed Nov 24 11:08:31 CET 2004

William Robinson wrote:
> Hi.
> I've just been going through this problem aswell:
>>pd -rt -lib Gem
>>and it gives the error:
>>/usr/lib/pd/extra/Gem.pd_linux: libnvidia-tls.so.1: cannot handle TLS data
>>Gem: can't load library
>>So it looks like it found the library fine, but it has an issue with
>>the nvidia drivers?  Can someone point me in the right direction?
> I found a strange solution that worked here: 
> http://imgseek.sourceforge.net/faq.html#faq3. This has been irritating me for 
> a couple of days. I thought I should share this as it was unresolved on this 
> list.

it may be unresolved on this list because it is not a problem of pd but 
about nvidia's drivers and TLS (thread local storage)

the problem is about your kernel:
2.6.x allows using TLS while 2.4.x does not.

now when you are running a 2.4-kernel you cannot use nvidia's 
TLS-libraries and thus you have to remove them.
i am not sure, but i think it is the other way round too: when using a 
TLS-enabled kernel (2.6) you have to use the TLS-enabled libraries and 
thus you have to add them.

debian solves this via dynamic creation/deletion of symlinks into/from 
they are using a helper-application "tls_test", but i think this is 
added by the debian-maintainer

probably other distributions (should) do it alike ??


PS: this is from nvidia-glx/README.Debian

A Note about Thread Local Storage (TLS):
Under 2.6.x kernels a new TLS method is used and different libraries are
required. NVIDIA provides these libraries and at boot time (via
/etc/init.d/nvidia-glx)  a test is performed on your system to see if
your require these extra libraries. Having the TLS libraries installed
(in /usr/lib/tls and libglx.so) running under a 2.4.x kernel will cause
problems when running GL applications. Likewise, not having these libraries
installed under 2.6.x might prevent X from starting at all.

Simple Explanation:
To switch back and forth between the two systems simply run:

       /etc/init.d/nvidia-glx start

       This is run automatically at boot time.

To force a certain setting (e.g. you may have a 2.4 kernel patched for
NPTL) place  USE_TLS=1 in /etc/defaults/nvidia-glx for using the nvidia tls
libraries. USE_TLS=0 for not using tls libraries.  This isn't normally
necessary for most users.

What Happens:
Symlinks are created in /usr/lib/tls from libraries installed in
/usr/lib/nvidia. Also the libglx.so.VERSION in
/usr/X11R6/lib/modules/extensions/ is symlinked to a tls-enabled one.

More information about the Pd-list mailing list