GNOME shell 3.14.3 cannot run with driver 304.125

After upgrade from Fedora 20 to 21 x86_64, my GNOME desktop fails to run.
gnome-shell (even gnome-shell --version) gets stuck at 100% CPU load and never proceeds
gdb backtrace is:
(gdb) start --version
Temporary breakpoint 1 at 0x402040
Starting program: /usr/bin/gnome-shell --version
[Thread debugging using libthread_db enabled]
Using host libthread_db library “/lib64/libthread_db.so.1”.
^C
Program received signal SIGINT, Interrupt.
0x0000003c36e123d8 in tls_get_addr_tail () from /lib64/ld-linux-x86-64.so.2
(gdb) bt
#0 0x0000003c36e123d8 in tls_get_addr_tail () at /lib64/ld-linux-x86-64.so.2
#1 0x0000003c3920af63 in getprocattrcon_raw () at /lib64/libselinux.so.1
#2 0x0000003c3920a6ce in is_selinux_enabled () at /lib64/libselinux.so.1
#3 0x0000003c45ca5c06 in () at /lib64/libGL.so.1
#4 0x0000003c45c84c7b in () at /lib64/libGL.so.1
#5 0x0000003c36e0ff0d in call_init.part () at /lib64/ld-linux-x86-64.so.2
#6 0x0000003c36e1005b in _dl_init_internal () at /lib64/ld-linux-x86-64.so.2
#7 0x0000003c36e00d2a in _dl_start_user () at /lib64/ld-linux-x86-64.so.2
#8 0x0000000000000002 in ()
#9 0x00007fffffffdfd1 in ()
#10 0x00007fffffffdfe6 in ()
#11 0x0000000000000000 in ()

gnome-shell 3.14.3
glibc 2.20
selinux 3.13.1
kernel 3.18.7
nvidia driver 304.125
Quadro FX 1400

This problem does not occur if selinux is disabled (permissive still fails)
Any hint would be appreciated, I would keep selinux on (always worked fine up to F20)

Attaching nvidia log after the screen “oh no something has gone wrong…” pops up
nvidia-bug-report.log.gz (114 KB)

Reverted to the nouveau driver, GNOME starts correctly with selinux enforcing.
This appears to be a problem with the nvidia OpenGL shared library, maybe it needs recompiling with the latest glibc/libselinux?

Could you please test with latest GPU and with latest driver ?

I have a Quadro FX 1400, This is the latest driver I can use for this card, isn’t it?
If not I would like to know which one to use, thanks.

I may add that the problem seems to be with thread local storage which does not get initialized properly in combination with the selinux call is_selinux_enabled()
It is not clear to me why libGL.so.304.125 calls is_selinux_enabled() - I am not an expert, but it seems to me that selinux would be better left transparent to user code, and have its context properly set by the installer, which is actually setting its context. The following post might be related:
[url]http://article.gmane.org/gmane.comp.security.selinux/21504[/url]

I also see that this driver includes a libnvidia-tls.so.304.125 whose name might sound related with this problem?

From the installer options:
–force-tls=FORCE-TLS
NVIDIA’s OpenGL libraries are compiled with one of two different thread local storage (TLS) mechanisms: ‘classic tls’ which is used on systems with glibc 2.2 or older, and ‘new tls’ which is used on systems with tls-enabled glibc 2.3 or newer. nvidia-installer will select the OpenGL libraries appropriate for your system; however, you may use this option to force the installer to install one library type or another. Valid values for FORCE-TLS are ‘new’ and ‘classic’.

glibc version nowadays is 2.20, and tls is enabled since a long time.
BUT the installer option --force-tls=new appears to have no effect:
The log file always reports:
→ Installing both new and classic TLS OpenGL libraries.
→ Installing both new and classic TLS 32bit OpenGL libraries.

Why is still there some ancient tls?
This looks closely related with this driver not being able to run with the latest gnome shell.