ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

So far I have found 2 ways to get this failure:

  • Run rviz remotely

Running rviz remotely is not supported.

  • Have a misconfigured nvidia-OpenGL setup.

Having a misconfigured nvidia-OpenGL setup seems pretty easy. I ran into that myself while trying to duplicate this error by reverting to an old driver version. This page was the seed that got me started on the fix. Ultimately my problem was that rviz was linking against a version of libGL.so that did not match the driver.

I saw this by running

glxinfo | grep version

and seeing

server glx version string: 1.4
client glx version string: 1.4
GLX version: 1.4
OpenGL version string: 3.3.0 NVIDIA 270.41.06
OpenGL shading language version string: 3.30 NVIDIA via Cg compiler

So my installed OpenGL NVIDIA driver was version 270.41.06.

when i ran

roscd rviz
ldd bin/rviz | grep libGL

I saw this:

libGL.so.1 => /usr/lib/libGL.so.1 (0x00007f344c19e000)
libGLU.so.1 => /usr/lib/libGLU.so.1 (0x00007f344bf2c000)
libGLcore.so.1 => /usr/lib/libGLcore.so.1 (0x00007f34439dc000)

and then I ran

ls -l /usr/lib/libGL.so.1

and saw

lrwxrwxrwx 1 root root       18 2011-09-14 09:59 libGL.so.1 -> libGL.so.195.36.24

In other words, rviz was linking against a libGL from NVIDIA version 195.36.24.

To fix it, I just removed the offending library files:

sudo rm /usr/lib/libGL.so
sudo rm /usr/lib/libGL.so.1
sudo rm /usr/lib/libGL.so.195.36.24

The correct library files were already installed in the /usr/lib/nvidia-current directory, and they were automatically found when I ran rviz again.