ros-visualization / rviz

ROS 3D Robot Visualizer
BSD 3-Clause "New" or "Revised" License
815 stars 460 forks source link

Adding Image, Camera or DepthCloud as a display type causes rviz to core dump #696

Open lynncodd opened 10 years ago

lynncodd commented 10 years ago

When I attempt to add an Image, Camera or DepthCloud as a display type, rviz core dumps immediately.

Steps to Recreate

32 bit Ubuntu 12.04 LTS ROS Groovy

:~$ rosrun rviz rviz
[ INFO] [1383586452.114450054]: rviz version 1.9.32
[ INFO] [1383586452.114758172]: compiled against OGRE version 1.7.4 (Cthugha)
[ INFO] [1383586452.342339193]: OpenGl version: 3 (GLSL 1.3).

RVIZ opens Click Add to add a new Display Type. Select Camera and click OK Results in the following output

:~$ rosrun rviz rviz
[ INFO] [1383586452.114450054]: rviz version 1.9.32
[ INFO] [1383586452.114758172]: compiled against OGRE version 1.7.4 (Cthugha)
[ INFO] [1383586452.342339193]: OpenGl version: 3 (GLSL 1.3).
Segmentation fault (core dumped)

Same happens if I select Image or DepthCloud as well.

Here is the output from the debugger:

:~$ gdb /opt/ros/groovy/lib/rviz/rviz core
GNU gdb (Ubuntu/Linaro 7.4-2012.04-0ubuntu2.1) 7.4-2012.04
Copyright (C) 2012 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "i686-linux-gnu".
For bug reporting instructions, please see:
<http://bugs.launchpad.net/gdb-linaro/>...
Reading symbols from /opt/ros/groovy/lib/rviz/rviz...(no debugging symbols found)...done.
[New LWP 6387]
[New LWP 6395]
[New LWP 6397]
[New LWP 6413]
[New LWP 6402]
[New LWP 6414]
[New LWP 6401]
[New LWP 6428]
[New LWP 6415]
[New LWP 6407]
[New LWP 6396]
[New LWP 6412]
[New LWP 6400]

warning: Can't read pathname for load map: Input/output error.
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/i386-linux-gnu/libthread_db.so.1".
Core was generated by `/opt/ros/groovy/lib/rviz/rviz'.
Program terminated with signal 11, Segmentation fault.
#0  0xb761fce7 in pluginlib::ClassLoader<image_transport::SubscriberPlugin>::processSingleXMLPluginFile(std::string const&, std::map<std::string, pluginlib::ClassDesc, std::less<std::string>, std::allocator<std::pair<std::string const, pluginlib::ClassDesc> > >&) () from /opt/ros/groovy/lib/librviz.so
(gdb) bt
#0  0xb761fce7 in pluginlib::ClassLoader<image_transport::SubscriberPlugin>::processSingleXMLPluginFile(std::string const&, std::map<std::string, pluginlib::ClassDesc, std::less<std::string>, std::allocator<std::pair<std::string const, pluginlib::ClassDesc> > >&) () from /opt/ros/groovy/lib/librviz.so
#1  0xb6693727 in pluginlib::ClassLoader<image_transport::SubscriberPlugin>::determineAvailableClasses() () from /opt/ros/groovy/lib/libimage_transport.so
#2  0xb6693c68 in pluginlib::ClassLoader<image_transport::SubscriberPlugin>::ClassLoader(std::string, std::string, std::string) ()
   from /opt/ros/groovy/lib/libimage_transport.so
#3  0xb669416e in boost::shared_ptr<pluginlib::ClassLoader<image_transport::SubscriberPlugin> > boost::make_shared<pluginlib::ClassLoader<image_transport::SubscriberPlugin>, char [16], char [34]>(char const (&) [16], char const (&) [34])
    () from /opt/ros/groovy/lib/libimage_transport.so
#4  0xb668a89b in image_transport::ImageTransport::ImageTransport(ros::NodeHandle const&) () from /opt/ros/groovy/lib/libimage_transport.so
#5  0xb76158ec in rviz::ImageDisplayBase::ImageDisplayBase() ()
   from /opt/ros/groovy/lib/librviz.so
#6  0xa0d899e4 in rviz::CameraDisplay::CameraDisplay() ()
   from /opt/ros/groovy/lib/libdefault_plugin.so
#7  0xa0d91dbc in class_loader::class_loader_private::MetaObject<rviz::CameraDisplay, rviz::Display>::create() const ()
---Type <return> to continue, or q <return> to quit---
   from /opt/ros/groovy/lib/libdefault_plugin.so
#8  0xb75f7c04 in rviz::Display* class_loader::class_loader_private::createInstance<rviz::Display>(std::string const&, class_loader::ClassLoader*) ()
   from /opt/ros/groovy/lib/librviz.so
#9  0xb75f7fb4 in rviz::Display* class_loader::MultiLibraryClassLoader::createUnmanagedInstance<rviz::Display>(std::string const&) ()
   from /opt/ros/groovy/lib/librviz.so
#10 0xb75f813e in pluginlib::ClassLoader<rviz::Display>::createUnmanagedInstance(std::string const&) () from /opt/ros/groovy/lib/librviz.so
#11 0xb75f8b65 in rviz::PluginlibFactory<rviz::Display>::makeRaw(QString const&, QString*) () from /opt/ros/groovy/lib/librviz.so
#12 0xb75ec10a in rviz::DisplayFactory::makeRaw(QString const&, QString*) ()
   from /opt/ros/groovy/lib/librviz.so
#13 0xb75ed46b in rviz::ClassIdRecordingFactory<rviz::Display>::make(QString const&, QString*) () from /opt/ros/groovy/lib/librviz.so
#14 0xb75fb8c5 in rviz::DisplayGroup::createDisplay(QString const&) ()
   from /opt/ros/groovy/lib/librviz.so
#15 0xb76af3f4 in rviz::VisualizationManager::createDisplay(QString const&, QString const&, bool) () from /opt/ros/groovy/lib/librviz.so
#16 0xb75fde6b in rviz::DisplaysPanel::onNewDisplay() ()
   from /opt/ros/groovy/lib/librviz.so
---Type <return> to continue, or q <return> to quit---
#17 0xb76bfe4c in ?? () from /opt/ros/groovy/lib/librviz.so
#18 0xb5bc26b1 in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) () from /usr/lib/i386-linux-gnu/libQtCore.so.4
#19 0xb72ce97d in QAbstractButton::clicked(bool) ()
   from /usr/lib/i386-linux-gnu/libQtGui.so.4
#20 0xb6fc262d in ?? () from /usr/lib/i386-linux-gnu/libQtGui.so.4
#21 0xb6fc3c9b in ?? () from /usr/lib/i386-linux-gnu/libQtGui.so.4
#22 0xb6fc3f56 in QAbstractButton::mouseReleaseEvent(QMouseEvent*) ()
   from /usr/lib/i386-linux-gnu/libQtGui.so.4
#23 0xb6bf11ac in QWidget::event(QEvent*) ()
   from /usr/lib/i386-linux-gnu/libQtGui.so.4
#24 0xb6fc31f9 in QAbstractButton::event(QEvent*) ()
   from /usr/lib/i386-linux-gnu/libQtGui.so.4
#25 0xb7066768 in QPushButton::event(QEvent*) ()
   from /usr/lib/i386-linux-gnu/libQtGui.so.4
#26 0xb6b96ed4 in QApplicationPrivate::notify_helper(QObject*, QEvent*) ()
   from /usr/lib/i386-linux-gnu/libQtGui.so.4
#27 0xb6b9d024 in QApplication::notify(QObject*, QEvent*) ()
   from /usr/lib/i386-linux-gnu/libQtGui.so.4
#28 0xb5bab97e in QCoreApplication::notifyInternal(QObject*, QEvent*) ()
   from /usr/lib/i386-linux-gnu/libQtCore.so.4
---Type <return> to continue, or q <return> to quit---
#29 0xb6b97e95 in QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool) ()
   from /usr/lib/i386-linux-gnu/libQtGui.so.4
#30 0xb6c24074 in ?? () from /usr/lib/i386-linux-gnu/libQtGui.so.4
#31 0xb6c22c0d in QApplication::x11ProcessEvent(_XEvent*) ()
   from /usr/lib/i386-linux-gnu/libQtGui.so.4
#32 0xb6c4feac in ?? () from /usr/lib/i386-linux-gnu/libQtGui.so.4
#33 0xb55f2d86 in g_main_context_dispatch ()
   from /lib/i386-linux-gnu/libglib-2.0.so.0
#34 0xb55f3125 in ?? () from /lib/i386-linux-gnu/libglib-2.0.so.0
#35 0xb55f3201 in g_main_context_iteration ()
   from /lib/i386-linux-gnu/libglib-2.0.so.0
#36 0xb5bde887 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/i386-linux-gnu/libQtCore.so.4
#37 0xb6c4faaa in ?? () from /usr/lib/i386-linux-gnu/libQtGui.so.4
#38 0xb5baa50d in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/i386-linux-gnu/libQtCore.so.4
#39 0xb5baa7a9 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) ()
   from /usr/lib/i386-linux-gnu/libQtCore.so.4
#40 0xb5bafeba in QCoreApplication::exec() ()
   from /usr/lib/i386-linux-gnu/libQtCore.so.4
---Type <return> to continue, or q <return> to quit---
#41 0xb6b94a74 in QApplication::exec() ()
   from /usr/lib/i386-linux-gnu/libQtGui.so.4
#42 0x080488eb in main ()
(gdb) 

I did upgrade ros-groovy-class-loader and it still core dumps.

Any help would be much appreciated.

wjwwood commented 10 years ago

Is this still the case with 1.9.34?

lynncodd commented 10 years ago

I'm not sure. Unfortunately, I'm not in a position to try it out right now. I'll put this on my to do list and will report back when I test it out. Just can't guarantee how long it'll be...not working with ROS right at this moment.

Thanks for responding! Lynn

On Wed, Feb 12, 2014 at 5:39 PM, William Woodall notifications@github.comwrote:

Is this still the case with 1.9.34?

Reply to this email directly or view it on GitHubhttps://github.com/ros-visualization/rviz/issues/696#issuecomment-34927224 .

Lynn Coddington Gilbert Vice President & Sr. Applications Engineer Robotic Paradigm Systemslcoddingtongilbert@gmail.com lynn@roboticparadigmsystems.com www.roboticparadigmsystems.com www.facebook.com/RoboticParadigmSystems 678-428-0935

whoenig commented 10 years ago

I have a similar issue with ROS Indigo (running on 32 bit Ubuntu 14.04). I run on a fairly old laptop and use gl software rendering (LIBGL_ALWAYS_SOFTWARE=1). The steps to reproduce are exactly the same as above. However, the stack trace shows a slightly different behavior (see below).

LIBGL_ALWAYS_SOFTWARE=1 gdb rviz
GNU gdb (Ubuntu 7.7-0ubuntu3.1) 7.7
Copyright (C) 2014 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from rviz...(no debugging symbols found)...done.
(gdb) r
Starting program: /opt/ros/indigo/bin/rviz 
warning: the debug information found in "/lib64/ld-2.19.so" does not match "/lib64/ld-linux-x86-64.so.2" (CRC mismatch).

[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
[New Thread 0x7fffd9099700 (LWP 6952)]
[New Thread 0x7fffd8898700 (LWP 6953)]
[New Thread 0x7fffd3fff700 (LWP 6954)]
[New Thread 0x7fffd37fe700 (LWP 6955)]
[ INFO] [1408733493.761018015]: rviz version 1.11.3
[ INFO] [1408733493.761333285]: compiled against OGRE version 1.8.1 (Byatis)
[New Thread 0x7fffd2df1700 (LWP 6959)]
[New Thread 0x7fffd25f0700 (LWP 6960)]
[New Thread 0x7fffd1def700 (LWP 6961)]
[New Thread 0x7fffd15ee700 (LWP 6973)]
[Thread 0x7fffd3fff700 (LWP 6954) exited]
[New Thread 0x7fffd3fff700 (LWP 6974)]
[New Thread 0x7fffb8b49700 (LWP 6975)]
[New Thread 0x7fffb2c01700 (LWP 6976)]
[New Thread 0x7fffb2400700 (LWP 6977)]
[ INFO] [1408733494.906334902]: Stereo is NOT SUPPORTED
[ INFO] [1408733494.906594997]: OpenGl version: 2.1 (GLSL 1.2).
[New Thread 0x7fffb1bff700 (LWP 6990)]
[New Thread 0x7fffb13fe700 (LWP 6991)]
[New Thread 0x7fffa2a29700 (LWP 7007)]
[Thread 0x7fffd37fe700 (LWP 6955) exited]

Program received signal SIGSEGV, Segmentation fault.
__strcmp_sse2_unaligned () at ../sysdeps/x86_64/multiarch/strcmp-sse2-unaligned.S:29
29  ../sysdeps/x86_64/multiarch/strcmp-sse2-unaligned.S: No such file or directory.
(gdb) bt
#0  __strcmp_sse2_unaligned () at ../sysdeps/x86_64/multiarch/strcmp-sse2-unaligned.S:29
#1  0x00007fff95b7a09e in QMetaType::registerNormalizedType(QByteArray const&, void (*)(void*), void* (*)(void const*), void (*)(void*), void* (*)(void*, void const*), int, QFlags<QMetaType::TypeFlag>, QMetaObject const*) ()
   from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#2  0x00007fff9536f7b7 in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5
#3  0x00007ffff7dea13a in call_init (l=<optimized out>, argc=argc@entry=1, argv=argv@entry=0x7fffffffd918, env=env@entry=0x7fffffffd928) at dl-init.c:78
#4  0x00007ffff7dea223 in call_init (env=<optimized out>, argv=<optimized out>, argc=<optimized out>, l=<optimized out>) at dl-init.c:36
#5  _dl_init (main_map=main_map@entry=0x1cfe870, argc=1, argv=0x7fffffffd918, env=0x7fffffffd928) at dl-init.c:126
#6  0x00007ffff7deec70 in dl_open_worker (a=a@entry=0x7fffffffbab8) at dl-open.c:577
#7  0x00007ffff7de9ff4 in _dl_catch_error (objname=objname@entry=0x7fffffffbaa8, errstring=errstring@entry=0x7fffffffbab0, mallocedp=mallocedp@entry=0x7fffffffbaa0, operate=operate@entry=0x7ffff7dee9a0 <dl_open_worker>, args=args@entry=0x7fffffffbab8) at dl-error.c:187
#8  0x00007ffff7dee3bb in _dl_open (file=0x1e25a68 "/opt/ros/indigo/lib//libcompressed_depth_image_transport.so", mode=-2147483391, caller_dlopen=<optimized out>, nsid=-2, argc=1, argv=0x7fffffffd918, env=0x7fffffffd928) at dl-open.c:661
#9  0x00007fffedf7302b in dlopen_doit (a=a@entry=0x7fffffffbcd0) at dlopen.c:66
#10 0x00007ffff7de9ff4 in _dl_catch_error (objname=0x66b630, errstring=0x66b638, mallocedp=0x66b628, operate=0x7fffedf72fd0 <dlopen_doit>, args=0x7fffffffbcd0) at dl-error.c:187
#11 0x00007fffedf7362d in _dlerror_run (operate=operate@entry=0x7fffedf72fd0 <dlopen_doit>, args=args@entry=0x7fffffffbcd0) at dlerror.c:163
#12 0x00007fffedf730c1 in __dlopen (file=<optimized out>, mode=<optimized out>) at dlopen.c:87
#13 0x00007fffeffcdc33 in Poco::SharedLibraryImpl::loadImpl(std::string const&) () from /usr/lib/libPocoFoundation.so.9
#14 0x00007fffeffce14f in Poco::SharedLibrary::SharedLibrary(std::string const&) () from /usr/lib/libPocoFoundation.so.9
#15 0x00007ffff52c2c33 in class_loader::class_loader_private::loadLibrary(std::string const&, class_loader::ClassLoader*) () from /opt/ros/indigo/lib/libclass_loader.so
#16 0x00007ffff52bc4a4 in class_loader::ClassLoader::loadLibrary() () from /opt/ros/indigo/lib/libclass_loader.so
#17 0x00007ffff52bca68 in class_loader::ClassLoader::ClassLoader(std::string const&, bool) () from /opt/ros/indigo/lib/libclass_loader.so
#18 0x00007ffff52c6628 in class_loader::MultiLibraryClassLoader::loadLibrary(std::string const&) () from /opt/ros/indigo/lib/libclass_loader.so
#19 0x00007ffff7ab23ac in pluginlib::ClassLoader<image_transport::SubscriberPlugin>::loadLibraryForClass(std::string const&) () from /opt/ros/indigo/lib/librviz.so
#20 0x00007ffff7ab90ac in pluginlib::ClassLoader<image_transport::SubscriberPlugin>::createInstance(std::string const&) () from /opt/ros/indigo/lib/librviz.so
#21 0x00007ffff7aacd28 in rviz::ImageDisplayBase::scanForTransportSubscriberPlugins() () from /opt/ros/indigo/lib/librviz.so
#22 0x00007fffb0758cb1 in rviz::ImageDisplay::onInitialize() () from /opt/ros/indigo/lib/libdefault_plugin.so
#23 0x00007ffff7a837df in rviz::Display::initialize(rviz::DisplayContext*) () from /opt/ros/indigo/lib/librviz.so
#24 0x00007ffff7b379e5 in rviz::VisualizationManager::addDisplay(rviz::Display*, bool) () from /opt/ros/indigo/lib/librviz.so
#25 0x00007ffff7b37e36 in rviz::VisualizationManager::createDisplay(QString const&, QString const&, bool) () from /opt/ros/indigo/lib/librviz.so
#26 0x00007ffff7a96df4 in rviz::DisplaysPanel::onNewDisplay() () from /opt/ros/indigo/lib/librviz.so
#27 0x00007ffff2ec387a in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) () from /usr/lib/x86_64-linux-gnu/libQtCore.so.4
#28 0x00007ffff75160d2 in QAbstractButton::clicked(bool) () from /usr/lib/x86_64-linux-gnu/libQtGui.so.4
#29 0x00007ffff72799d3 in ?? () from /usr/lib/x86_64-linux-gnu/libQtGui.so.4
#30 0x00007ffff727ab43 in ?? () from /usr/lib/x86_64-linux-gnu/libQtGui.so.4
#31 0x00007ffff727ac2c in QAbstractButton::mouseReleaseEvent(QMouseEvent*) () from /usr/lib/x86_64-linux-gnu/libQtGui.so.4
#32 0x00007ffff6f1750a in QWidget::event(QEvent*) () from /usr/lib/x86_64-linux-gnu/libQtGui.so.4
#33 0x00007ffff6ec7e2c in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib/x86_64-linux-gnu/libQtGui.so.4
#34 0x00007ffff6ece5dd in QApplication::notify(QObject*, QEvent*) () from /usr/lib/x86_64-linux-gnu/libQtGui.so.4
#35 0x00007ffff2eaf4dd in QCoreApplication::notifyInternal(QObject*, QEvent*) () from /usr/lib/x86_64-linux-gnu/libQtCore.so.4
#36 0x00007ffff6ecdd93 in QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool) () from /usr/lib/x86_64-linux-gnu/libQtGui.so.4
#37 0x00007ffff6f429cb in ?? () from /usr/lib/x86_64-linux-gnu/libQtGui.so.4
#38 0x00007ffff6f42269 in QApplication::x11ProcessEvent(_XEvent*) () from /usr/lib/x86_64-linux-gnu/libQtGui.so.4
#39 0x00007ffff6f69b02 in ?? () from /usr/lib/x86_64-linux-gnu/libQtGui.so.4
#40 0x00007ffff1822e04 in g_main_context_dispatch () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#41 0x00007ffff1823048 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#42 0x00007ffff18230ec in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#43 0x00007ffff2edc7a1 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/x86_64-linux-gnu/libQtCore.so.4
#44 0x00007ffff6f69bb6 in ?? () from /usr/lib/x86_64-linux-gnu/libQtGui.so.4
#45 0x00007ffff2eae0af in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/x86_64-linux-gnu/libQtCore.so.4
#46 0x00007ffff2eae3a5 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/x86_64-linux-gnu/libQtCore.so.4
#47 0x00007ffff2eb3b79 in QCoreApplication::exec() () from /usr/lib/x86_64-linux-gnu/libQtCore.so.4
#48 0x0000000000400bc7 in main ()
(gdb) 

It looks like rviz is using Qt4 and trying to load some plugin which is linked against Qt5.

ldd /opt/ros/indigo/lib//libcompressed_depth_image_transport.so | grep Qt
    libQt5Core.so.5 => /usr/lib/x86_64-linux-gnu/libQt5Core.so.5 (0x00007f837e31b000)
    libQt5Gui.so.5 => /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5 (0x00007f837dcce000)
    libQt5Widgets.so.5 => /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5 (0x00007f837d4a4000)
    libQt5Test.so.5 => /usr/lib/x86_64-linux-gnu/libQt5Test.so.5 (0x00007f837d27b000)
    libQt5OpenGL.so.5 => /usr/lib/x86_64-linux-gnu/libQt5OpenGL.so.5 (0x00007f837d017000)

And rviz:

ldd /opt/ros/indigo/bin/rviz | grep Qt
    libQtGui.so.4 => /usr/lib/x86_64-linux-gnu/libQtGui.so.4 (0x00007f72adc78000)
    libQtCore.so.4 => /usr/lib/x86_64-linux-gnu/libQtCore.so.4 (0x00007f72a9ca4000)

Qt4 and Qt5 are not allowed to be loaded in the same process, as far as I know. I did install the official ros package (ros-indigo-desktop-full).

Any help would be much appreciated.

wjwwood commented 10 years ago

@whoenig I believe this is an entirely different issue.

But, on my machine (Trusty 64-bit) I don't have link entries for /opt/ros/indigo/lib/libcompressed_depth_image_transport.so:

$ ldd /opt/ros/indigo/lib//libcompressed_depth_image_transport.so | grep Qt

But rviz does:

$ ldd /opt/ros/indigo/bin/rviz | grep Qt
    libQtGui.so.4 => /usr/lib/x86_64-linux-gnu/libQtGui.so.4 (0x00007f114fa0f000)
    libQtCore.so.4 => /usr/lib/x86_64-linux-gnu/libQtCore.so.4 (0x00007f114ec48000)
lorenzoriano commented 9 years ago

I have the same problem: as soon as I open a camera or image display in rviz, it segfaults (Ubuntu 14.04). I tried pulling the latest version from github, same problem. I also see a mixup of Qt 4 and 5 when running the gdb stack trace.

praveen-palanisamy commented 9 years ago

I am facing the same problem with rviz (ROS Inidgo) on x64 Ubuntu 14.04. I too observed the Qt4 , Qt5 mixup in the gdb backtrace.

wjwwood commented 9 years ago

Perhaps having Qt5 installed is enough to have it link against the wrong library at runtime, can any of you try uninstalling Qt5 and running it again? I don't have my Trusty machine handy.

lorenzoriano commented 9 years ago

You can't uninstall Qt5 on Ubuntu 14.04, a lot of things depend on it, including unity and bits of ros:

The following packages will be REMOVED:
[...]
ros-indigo-desktop-full ros-indigo-gazebo-plugins ros-indigo-gazebo-ros
  ros-indigo-gazebo-ros-pkgs ros-indigo-geometry-tutorials
  ros-indigo-librviz-tutorial ros-indigo-pcl-conversions ros-indigo-pcl-ros
  ros-indigo-perception ros-indigo-perception-pcl ros-indigo-python-qt-binding
  ros-indigo-qt-dotgraph ros-indigo-qt-gui ros-indigo-qt-gui-cpp
  ros-indigo-qt-gui-py-common ros-indigo-robot ros-indigo-ros-base
  ros-indigo-ros-core ros-indigo-ros-tutorials ros-indigo-rqt-action
  ros-indigo-rqt-bag ros-indigo-rqt-bag-plugins ros-indigo-rqt-common-plugins
  ros-indigo-rqt-console ros-indigo-rqt-dep ros-indigo-rqt-graph
  ros-indigo-rqt-gui ros-indigo-rqt-gui-cpp ros-indigo-rqt-gui-py
  ros-indigo-rqt-image-view ros-indigo-rqt-launch ros-indigo-rqt-logger-level
  ros-indigo-rqt-moveit ros-indigo-rqt-msg ros-indigo-rqt-nav-view
  ros-indigo-rqt-plot ros-indigo-rqt-pose-view ros-indigo-rqt-publisher
  ros-indigo-rqt-py-common ros-indigo-rqt-py-console
  ros-indigo-rqt-reconfigure ros-indigo-rqt-robot-dashboard
  ros-indigo-rqt-robot-monitor ros-indigo-rqt-robot-plugins
  ros-indigo-rqt-robot-steering ros-indigo-rqt-runtime-monitor
  ros-indigo-rqt-rviz ros-indigo-rqt-service-caller ros-indigo-rqt-shell
  ros-indigo-rqt-srv ros-indigo-rqt-tf-tree ros-indigo-rqt-top
  ros-indigo-rqt-topic ros-indigo-rqt-web ros-indigo-rviz
  ros-indigo-rviz-plugin-tutorials ros-indigo-rviz-python-tutorial
  ros-indigo-simulators ros-indigo-turtle-actionlib ros-indigo-turtle-tf
  ros-indigo-turtlesim ros-indigo-visualization-tutorials ros-indigo-viz
[...]
wjwwood commented 9 years ago

@lorenzoriano that must be some indirect dependency, as far as I know the rqt packages shouldn't directly depend on qt5. I'd have to dig into the dependency structure, but I don't have a trusty machine handy. I'll look into it after the holidays.

mikeferguson commented 9 years ago

@lorenzoriano exactly which package did you try to uninstall to get that message?

lorenzoriano commented 9 years ago

Everything with qt5, something like sudo apt-get uninstall libqt5* (don't have a linux box with me know, can't check the exact command)

praveen-palanisamy commented 9 years ago

I have solved the problem(at least on my machine). I am running Ubuntu 14.04 and ROS Indigo on a x64 machine. In my case, I had built Qt5.3.2 from source and OpenCV 2.4.9 from source with Qt support on AND the OpenCV libraries were built against Qt5. Here is what I did:

  1. Removed Qt5 I actually didn't remove it. I did a sudo apt-get install qt4-default. Then checked qmake -v to make sure it used the Qt4 binaries that come with trusty.
  2. Re-built OpenCV from source with Qt4 support. I built OpenCV 2.4.8 this time as this is the same version that is available on the Trusty official repositories and Indigo is known to work with it for sure. I had to build it from source to install the non-free libraries (SIFT,SURF).

Then I tried adding views for camera, depthmap and pointcloud2 (with kinect) it all worked fine! No segfaults. ldd /opt/ros/indigo/lib//libcompressed_depth_image_transport.so | grep Qt did not have any result and ldd /opt/ros/indigo/bin/rviz | grep Qt gave libQtGui.so.4 => /usr/lib/x86_64-linux-gnu/libQtGui.so.4 (0x00007f649cc04000) libQtCore.so.4 => /usr/lib/x86_64-linux-gnu/libQtCore.so.4 (0x00007f6498b4a000)

I am not totally sure if rviz uses OpenCV libraries for the Camera interface. It could be possible to solve this problem by just uninstalling Qt5 (and building ROS again if it was built from source) as @wjwwood suggested. Hope this helps.

lorenzoriano commented 9 years ago

Thanks @praveenofpersia, it works! The only difference is that I had to disable Qt support in OpenCV. I saw no option in ccmake to selectively enable QT4 rather than QT5, and cmake kept choosing QT5 by default (even after installing qt4-default).

Maybe this issue can be closed? I still see no solution for other users here, and I don't know what to blame (OpenCV? RViz? Qt?). This is an annoying and hard to find bug, and there should be at least a warning when multiple versions of Qt are being mixed.

wjwwood commented 9 years ago

@lorenzoriano it is also not clear to me which project is to blame, but since disabling Qt support in OpenCV seems to address the issue, I would guess it might be that OpenCV is pullingin Qt5 incorrectly in this case. @vrabaud do you have any insight on this? Maybe it would be possible to roll an opencv-qt4 kind of deb and have ROS depend on that? I'm not sure what the correct solution is.

praveen-palanisamy commented 9 years ago

@lorenzoriano : Glad that you got your problem solved. But It's strange why/how Cmake picks up Qt5's qmake when qt4-default is installed. @wjwwood : I don't think OpenCV pulls Qt5 incorrectly. It depends on the configuration of the system. Just to make sure, I built OpenCV a couple of times today on trusty systems with both Qt4 and Qt5 installed. So, I can confirm that OpenCV can be built against qt4 libraries alone even if Qt5 is installed. I can also confirm the observation that the rviz issue #696 gets solved if OpenCV is not built against Qt5. I am not sure about the dependency of rviz on OpenCV still.

For anybody who are facing the same issue and are unable to solve it using the information above, the following pointers might help: After installing qt4-default and making sure qmake -v points to qt4 binaries, cmake should be finding qt4's binaries as it uses qmake -query PROPERTY to get the version and binary location. If not you can set QT_QMAKE_EXECUTABLE to the directory containing qmake before running cmake. Or if you use cmake-gui , after the first configure, you can select the qt4 qmake directory as the value corresponding to the name QT_QMAKE_EXECUTABLE. Cmake will also list out variables like Qt5Core_DIR, Qt5Gui_DIR etc which you can unset or leave it blank. To make sure Qt4 is being used for the GUI, you can do cmake -DWITH_QT=4 ../ (Assuming the OpenCV src is at ../) and then look at the output for something like:

-- GUI:
--      QT 4.x:                                 YES (ver 4.8.6 EDITION= OpenSource)
--      QT OpenGL support:            YES (/usr/lib/x86_64-linux-gnu/libQtOpenGL.so)

If none of the above works, you can try using a different Cmake version (2.x like 2.8). Hope this helps.

gtinchev commented 8 years ago

I found that some problems with libPythonQt.so could be causing the issues, so try and sourcing the original file, rather than any other you might have.