rviz EnumProperty related segfault
Hi
I am writing my own rviz display plugin. I wrote a few, but this is the first one that I am writing that has an EnumProperty. When I quit rviz or delete my display, a segmentation fault happens.
I comment the EnumProperty and everything is fine. Simply adding an EnumPropertyWPtr member in my class (ImageryDisplay) definition causes the problem, so it has nothing to do with how I construct it or use it.
GDB does not give me much information, except that it happens in the Display destructor:
#0 0x0012d422 in __kernel_vsyscall ()
#1 0x0204c681 in *__GI_raise (sig=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:64
#2 0x0204fab2 in *__GI_abort () at abort.c:92
#3 0x0208624d in __libc_message (do_abort=2, fmt=0x215de58 "*** glibc detected *** %s: %s: 0x%s ***\n") at ../sysdeps/unix/sysv/linux/libc_fatal.c:189
#4 0x02090341 in malloc_printerr (action=<value optimized out>, str=0x6 <Address 0x6 out of bounds>, ptr=0xac061e58) at malloc.c:6266
#5 0x02091b98 in _int_free (av=<value optimized out>, p=<value optimized out>) at malloc.c:4794
#6 0x02094c7d in *__GI___libc_free (mem=0xac061e58) at malloc.c:3738
#7 0x01fa3741 in operator delete(void*) () from /usr/lib/libstdc++.so.6
#8 0x00f09a84 in ros::NodeHandle::destruct (this=0xac061d20) at /tmp/buildd/ros-diamondback-ros-comm-1.4.8/debian/ros-diamondback-ros-comm/opt/ros/diamondback/stacks/ros_comm/clients/cpp/roscpp/src/libros/node_handle.cpp:179
#9 0x00f0caa5 in ~NodeHandle (this=0xac061d20, __in_chrg=<value optimized out>)
at /tmp/buildd/ros-diamondback-ros-comm-1.4.8/debian/ros-diamondback-ros-comm/opt/ros/diamondback/stacks/ros_comm/clients/cpp/roscpp/src/libros/node_handle.cpp:126
#10 0x015b542d in ~Display (this=0xac061d08, __in_chrg=<value optimized out>) at /home/brice/driving_repos/rdr_public/stacks/visualization/rviz/src/rviz/display.cpp:58
#11 0x06607229 in ~ImageryDisplay (this=0xac061d08, __in_chrg=<value optimized out>) at /home/brice/driving_repos/rdr_public/stacks/visualization/driving_rviz_plugins/src/imagery_display.cpp:88
My destructor cleans up my stuff and does:
scene_manager_->destroySceneNode(scene_node_);
Any suggestion on how to fix/debug this problem? I read the code for the builtin plugins that also use the EnumProperty, such as Pose and Grid, but did not find anything in particular.
Asked by brice rebsamen on 2012-12-07 11:13:33 UTC
Comments