After my last dist-upgrade of my testing debian system, X refuses to start. I can see the following error (which shows up when gnome-session is started):

symbol lookup error: /usr/lib/i386-linux-gnu/libcairo.so.2: undefined symbol: glXGetProcAddress

Besides, even texlive refuses to upgrade, with the same error (caused by luatex).

I don't know how to fix this issue: is it possibile that one crucial library is missing? If not, what else could cause this problem?

  • maybe the dist-upgrade removed your graphic driver and/or the relative glx implementation – Alex Oct 5 '13 at 20:38
  • I am trying to find the package removed, but with no success... – zar Oct 5 '13 at 21:16
  • What is your video card? Even if you found it probably you have to downgrade the xorg-server to install it again. – Alex Oct 5 '13 at 21:25
  • What version of the libcairo2 package do you have, and of its dependencies libgl1 or libgl1-mesa-swx11 and libegl1-mesa? – Gilles 'SO- stop being evil' Oct 6 '13 at 20:03

@peterph's answer was very close to the problem.

The video card was a Matrox G550 (mga) but in the past there been an nvidia installed and some glx stuff remained in /usr/lib/tls.

I've not experience with the mga driver but my understanding is that there's not a proprietary glx implementation, so we gone ahead trying to get the mesa working.

Once installed libgl1-mesa-glx and glx-alternative-mesa we checked the libcairo with ldd, then used dpkg -S with full path to understand from which packages were picked the libGL and libGLcore resolved by ldd, just to check that was mesa, both the libraries weren't in any package.

Moved those libraries away and this time ldd shown the right mesa libraries were used, at this point I asked @zar to check again and his answer been that this time apt-get -f install finished properly and gdm3 run without errors.

Even being a bug I think we can't fill any bug request as the non debianized nvidia driver broken the contract.

Proprietary drivers installation are still evil, I don't understand why they favor their own crap supposed-to-install-everywhere.run instead of looking for some collaboration effort at least with major distros (that probably would come for free/no charge).

| improve this answer | |

The error means, that your Cairo installation is missing run-time link dependency - judging by the symbol name it's an OpenGL implementation package (maybe Mesa) that is missing/corrupted. Reinstalling Cairo could help, provided the package manager fixes package dependencies, which are probably the cause of the error, and installs all the missing prerequisites.

You may also run ldd /usr/lib/i386-linux-gnu/libcairo.so.2 and check for lines containing => not found - that will tell you what library is missing on your system, search which package contains it and (re)install it.

This is also a typical syndrome for situations where the depending packages are updated without updating their dependencies (that can easily happen for example with proprietary drivers - which turned out to be the case here).

| improve this answer | |
  • Thank you, I have tried that command, but I have no lines "=> not found". – zar Oct 5 '13 at 21:05
  • 1
    the symbol is in libGL, which is also provided by libgl1-mesa-glx as a software only (not hw accelerated) implementation, an update-alternatives maybe required – Alex Oct 5 '13 at 21:08
  • 1
    sudo update-alternatives --config glx – Alex Oct 5 '13 at 21:17
  • 1
    try install glx-alternative-mesa – Alex Oct 5 '13 at 21:19
  • 1
    let us continue this discussion in chat – Alex Oct 5 '13 at 21:27

In RH nomenclature: (I don't know Debian Packaging Format as well)

I tried, and found the following:

  1. # sudo **'yum whatprovides /usr/lib/libGL.so.1'** yields:

    *mesa-libGL-9.2.5-1.20131220.fc20.i686 : Mesa libGL runtime libraries and DRI drivers*

    A. ldd prints shared object library dependencies, so it is not the tool for the job UNLESS there is a problem with the linking. I didn't find anything.

I looked REALLY HARD and found this question

  2. The rest was easy:

    # nm -D /usr/lib/libGL.so.1 |grep 'glXGetProcAddress'
    00014310 T glXGetProcAddress
    00014310 T glXGetProcAddressARB

   3. I got Adobe Reader to run after this.

| improve this answer | |

Gnome are written according to GTK+ library and it depend on cairo library, your cairo library occurpted when you upgrade, please re-install it, not from local , please again download it.use apt-cache and search for every cairo packages

| improve this answer | |
  • It doesn't work... I have redownload and reinstalled all the cairo packages, but I still have the same error. – zar Oct 5 '13 at 21:02
  • please bug report..! – PersianGulf Oct 5 '13 at 21:04
  • I dont' know how to do it... Is there a Correct Debian Way? I think that I have something broken on my system --- but I don't know how to find it... – zar Oct 5 '13 at 21:06
  • 3
    My understanding is that isn't a bug, when the xorg-server upgrade its ABI version and the installed drivers aren't compatible anymore they are removed (and you agree by saying Yes at the dist-upgrade). Instead you should wait to dist-upgrade when your new driver (which support the new xorg) is debianized. – Alex Oct 5 '13 at 21:22

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.