Hi Alberto,

One of our GL driver engineers looked into this a bit, and it actually
seems to be a linker regression that is exposed when linking an
application against the Mesa libGL, and then running it against the
NVIDIA one. He is gathering some more information before filing a bug,
but in the mean time, please find attached a test case demonstrating the
linker bug, which doesn't involve either the Mesa libGL or the NVIDIA
one. See the README in the tarball for details.

When bisecting binutils in an attempt to identify the regression, our
engineer found that commit commit
b64fb44af4f416fbbbda3de03fcfff61d80c841c ("Also track weak references")
actually introduced a link time error when attempting to link the test
executable:

ld: /tmp/cc3K1rHK.o: undefined reference to symbol 'pthread_create@@GLIBC_2.2.5'
ld: note: 'pthread_create@@GLIBC_2.2.5' is defined in DSO 
//lib/x86_64-linux-gnu/libpthread.so.0 so try adding it to the linker command 
line

That ld error no longer occurs after commit
879707c642925947e156b7ae2169b89f844532cd ("Exclude weak refs when considering 
whether an --as-needed library is needed"); however, the bug described here 
(assertion from ld.so) does.

We believe that this Debian bug may be related:

http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=728529

** Bug watch added: Debian Bug tracker #728529
   http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=728529

-- 
You received this bug notification because you are a member of Desktop
Packages, which is subscribed to nvidia-graphics-drivers-319 in Ubuntu.
https://bugs.launchpad.net/bugs/1248642

Title:
  dynamic library inconsistencies with OpenGL/C++

Status in “nvidia-graphics-drivers-319” package in Ubuntu:
  Confirmed

Bug description:
  While using the nvidia-319 driver, the following C++ program won't
  run:

  $ cat > test.cpp << EOF
  #include <string>
  #include <GL/gl.h>
  int main(int argc, char *argv[]) {
        std::string s;
        glEnable(GL_LIGHT0);
  }
  EOF

  Instead, it fails with the following error message:
  $ g++ test.cpp -lGL
  $ ./a.out
  Inconsistency detected by ld.so: dl-version.c: 224: _dl_check_map_versions: 
Assertion `needed != ((void *)0)' failed!

  Using the xserver-xorg-video-nouveau driver, the problem does not
  occur. Also, when std::string is not used, the program runs without
  problems. Using OpenGL from pure C programs is also not a problem. The
  problem can be reproduced with both g++-4.6 and g++-4.8.

  ProblemType: Bug
  DistroRelease: Ubuntu 13.10
  Package: nvidia-319 319.32-0ubuntu7
  ProcVersionSignature: Ubuntu 3.11.0-12.19-generic 3.11.3
  Uname: Linux 3.11.0-12-generic x86_64
  NonfreeKernelModules: openafs nvidia
  ApportVersion: 2.12.5-0ubuntu2.1
  Architecture: amd64
  Date: Wed Nov  6 18:25:48 2013
  InstallationDate: Installed on 2013-11-01 (5 days ago)
  InstallationMedia: Ubuntu-GNOME 13.10 "Saucy Salamander" - Release amd64 
(20131017)
  MarkForUpload: True
  SourcePackage: nvidia-graphics-drivers-319
  UpgradeStatus: No upgrade log present (probably fresh install)
  modified.conffile..etc.modprobe.d.nvidia.319.hybrid.conf: [deleted]

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/nvidia-graphics-drivers-319/+bug/1248642/+subscriptions

-- 
Mailing list: https://launchpad.net/~desktop-packages
Post to     : desktop-packages@lists.launchpad.net
Unsubscribe : https://launchpad.net/~desktop-packages
More help   : https://help.launchpad.net/ListHelp

Reply via email to