Has anyone used the ViconDataStreamSDK to connect to a Vicon motion tracking system in ROS Fuerte and Ubuntu 12.04? I had it set up and working in ROS Electric and Ubuntu 11.10, but when I transferred to the new ROS and Ubuntu I found that I get a segmentation fault. I also tried the vicon_bridge package from ethz and saw a similar problem.
EDIT 2:
I tested on a computer running Ubuntu 10.04 and Fuerte and everything worked fine. I also compiled and tested the ViconDataStreamSDK demo program (not using ROS) on Ubuntu 12.04 and found that it too worked. So, it seems to be a problem specific to trying to run the ViconDataStreamSDK on the combination of Fuerte and Ubuntu 12.04.
EDIT 1:
I did some additional testing and found that the error occurs when declaring the NodeHandle variable. The error only occurs after the ViconDataStreamSDK_CPP library is linked during compilation (my simple test program runs fine before adding ViconDataStreamSDK_CPP to the target_link_libraries but crashes after adding). Below is a gdb run and backtrace after the error:
(gdb) run
Starting program: /home/user/ros_igcl_packages/igcl_vicon/bin/vicontest
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/i386-linux-gnu/libthread_db.so.1".
vicontest: malloc.c:2451: sYSMALLOc: Assertion `(old_top == (((mbinptr) (((char *) &((av)->bins[((1) - 1) * 2])) - __builtin_offsetof (struct malloc_chunk, fd)))) && old_size == 0) || ((unsigned long) (old_size) >= (unsigned long)((((__builtin_offsetof (struct malloc_chunk, fd_nextsize))+((2 * (sizeof(size_t))) - 1)) & ~((2 * (sizeof(size_t))) - 1))) && ((old_top)->size & 0x1) && ((unsigned long)old_end & pagemask) == 0)' failed.
Program received signal SIGABRT, Aborted.
0xb7fdd424 in __kernel_vsyscall ()
(gdb) backtrace
#0 0xb7fdd424 in __kernel_vsyscall ()
#1 0xb7b1d1ef in raise () from /lib/i386-linux-gnu/libc.so.6
#2 0xb7b20835 in abort () from /lib/i386-linux-gnu/libc.so.6
#3 0xb7b623c9 in ?? () from /lib/i386-linux-gnu/libc.so.6
#4 0xb7b651f3 in ?? () from /lib/i386-linux-gnu/libc.so.6
#5 0xb7b66d3c in malloc () from /lib/i386-linux-gnu/libc.so.6
#6 0xb7d78627 in operator new(unsigned int) ()
from /usr/lib/i386-linux-gnu/libstdc++.so.6
#7 0xb7f920e4 in ros::initInternalTimerManager() ()
from /opt/ros/fuerte/lib/libroscpp.so
#8 0xb7f74e25 in ros::start() () from /opt/ros/fuerte/lib/libroscpp.so
#9 0xb7f4a6c7 in ros::NodeHandle::construct(std::string const&, bool) ()
from /opt/ros/fuerte/lib/libroscpp.so
#10 0xb7f4b853 in ros::NodeHandle::NodeHandle(std::string const&, std::map<std::string, std::string, std::less<std::string>, std::allocator<std::pair<std::string const, std::string> > > const&) () from /opt/ros/fuerte/lib/libroscpp.so
#11 0x08048c1a in main (argc=1, argv=0xbffff134)
at /home/user/ros_igcl_packages/igcl_vicon/src/vicontest.cpp:71
Originally posted by Jon on ROS Answers with karma: 115 on 2012-07-16
Post score: 3
Original comments
Comment by Felix Endres on 2012-07-19:
You have no tags on your question, it is unlikely to be seen by people who know about these things
Comment by sks on 2012-10-26:
I am also facing similar issue along with another friend of mine. Has there been any progress in locating the issue and is any hope of solving it? I tried methods suggested by others below but did not work either. Thinking of downgrading Ubuntu and ROS versions. The problem started after upgrading.