ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange |
1 | initial version |
So far I have found 2 ways to get this failure:
Running rviz remotely is not supported.
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.