wiki:troubleshooting

Troubleshooting

This page give solutions to common issues.

When you have an issue, please first check that you have done all the necessary steps to have a functional environment:

Problem executing a tool

If you receive a message like No such file or directory when executing FlairGCS, try recompiling all like described here.

It can be a problem of a toolchain installed in a different location from the one who compiled the tools.

Graphical problem with the simulator

  • verify if your graphic drivers are well installed for the toolchain, see here.
  • check if /dev/shm is clean. It should not contain files like sem.simu_* or simu_*. The files are shared memories between control and simulation part; they should be destroyed when all programs are closed. You can safely remove it manually if not.
  • if problem is still present, make a new ticket describing your problem and the output message of the simulator.

Simulator does not start (libGL error)

NOTE: the solution given here is already included in last distribution_specific_hack.sh which is called by the simulator script. But not all libs are handled, you may have to add ones manually to the script.

If you have a message like this one at executing the simulator:

libGL error: unable to load driver: i965_dri.so

The idea is that we're using the system video card driver since it's not included in robomap3.

The driver itself (eg: i965_dri.so) should be loaded automatically (from /usr/lib/x86_64-linux-gnu/dri/). But this driver may not succesfully load since it requires some specific library versions that may not match robomap3's.

To debug this you should launch your 3D graphic program (eg: simulator) with the LIBGL_DEBUG environment variable set to verbose. For example

$ LIBGL_DEBUG=verbose ./LineFollower_simulator_nrt -n x4_0 -t x4 -a 127.0.0.1 -p 9000 -x setup_x4.xml (...)

Notice the line that look like libstdc++.so.6: version `CXXABI_1.3.9' not found (required by /usr/lib/x86_64-linux-gnu/dri/i965_dri.so) . This means that the local system driver needs a version of libstdc++.so.6 that defines the symbol CXXABI_1.3.9 (meaning application binary interface version 1.3.9). The version of libstdc++ included in robomap3 probably doesn't define this symbol. You can make sure with

strings /.../robomap3/1.7.3/core2-64/sysroots/core2-64-poky-linux/usr/lib/libstdc++.so.6 | grep CXXABI_ 

So we need to preload the libstdc++ library of the system to avoid robomap3 one to be loaded. To achieve this we need to set the LD_PRELOAD environment variable like this

LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libstdc++.so.6 ./LineFollower_simulator_nrt ...

Stopping here may be enough, but you then can see errors like i965_dri.so: undefined symbol: nouveau_drm_new .

Same problem: the driver needs a version of a library (here libdrm_nouveau.so.2) which defines a specific symbol that doesn't exist in robomap3 version (yet).

Same solution: preload the local system library. Repeat this until all unresolved symbols are gone.

  • On ubuntu 16.10 with robomap3 1.7.3, I ended up with the following
    LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libstdc++.so.6:/usr/lib/x86_64-linux-gnu/libdrm_intel.so.1:/usr/lib/x86_64-linux-gnu/libdrm_nouveau.so.2:/usr/lib/x86_64-linux-gnu/libdrm_radeon.so.1  ./LineFollower_simulator_nrt -n x4_0 -t x4 ...
    
  • On mint 19.1 with robomap 2.1.3, I ended up with the following
    LD_PRELOAD=/lib/x86_64-linux-gnu/libm.so.6:/usr/lib/x86_64-linux-gnu/libstdc++.so.6 ./LineFollower_simulator_nrt -n x4_0 -t x4 ...
    

To avoid setting this variable every time, you can modify the script used to launch the program (usually in build/bin, eg: simulator_xx.sh) and add this line after the first one

export LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libstdc++.so.6:/usr/lib/x86_64-linux-gnu/libdrm_intel.so.1:/usr/lib/x86_64-linux-gnu/libdrm_nouveau.so.2:/usr/lib/x86_64-linux-gnu/libdrm_radeon.so.1

Problem when updating the repositories

If you have changed something on the versioned files and if these changes are not committed, you will have a conflict when updating these files (with svn up command). This can occur when you recompiled all stuffs.

So be sure that you get the version of the files from the server when you update the repositories by answering tf to the conflict question. Otherwise, you will stay with the older versions. In doubt you can erase your local repositories and checkout them again, but be sure not to erase your personal work. Another solution is to compile all again after the update.

Dualshock 3 controller acting as a mouse

On recent kernel (>=4.13), ds3 is seen as a mouse, which is disturbing. You can launch this command to disable it:

/usr/bin/xinput set-prop 'Sony PLAYSTATION(R)3 Controller' 'Device Enabled' 0

Note that this is integrated in flair script to launch ds3 controller.

Deprecated

Here is some troubleshootings which are deprecated in the current Flair version.

They can be useful if you are not working on the last version, or to give some hints on unresolved problem.

LibGL error with Ubuntu 16.04 and Intel Graphics

When you try to launch the flair simulator, you have a LibGL error and the GUI doesn't appear while your using the Intel graphic drivers ? The problem is linked to a wrong place where to find some libs. So, you have to copy them :

  • sudo cp -a /usr/lib/x86_64-linux-gnu/libdrm.so* /usr/lib/x86_64-linux-gnu/libdrm_nouveau.so* /usr/lib/x86_64-linux-gnu/mesa

Relauch Flair, all should work.

Simulator no longer working

If simulator was working and now it does not, maybe there is a problem with graphic driver which were updated on your system.

Output of simulator can be:

Connecting to 127.0.0.1:9000
System is little endian
Irrlicht Engine version 1.8.1
Linux 4.4.0-47-generic #68-Ubuntu SMP Wed Oct 26 19:39:52 UTC 2016 x86_64
X Error of failed request:  BadValue (integer parameter out of range for operation)
  Major opcode of failed request:  154 (GLX)
  Minor opcode of failed request:  24 (X_GLXCreateNewContext)
  Value in failed request:  0x0
  Serial number of failed request:  34
  Current serial number in output stream:  35

In this case check the file /opt/robomap3/1.7.3/core2-64/toolchain.cmake. There is a line like this:

set(LIBGL_PATH /usr/lib/nvidia-352)

If graphic driver has changed, this directory will no longer contain a libGL.so file. So you need to change the path with the new one.

Then recompile all like described here.

NOTE: you can also reinstall the toolchain in order to set the good path.

Last modified 11 months ago Last modified on Feb 18, 2019, 4:04:17 PM