Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

RViz crashes when mouse intersects with the image plugin panel #486

Closed
jacobhuesman opened this issue Dec 2, 2019 · 7 comments · Fixed by #490
Closed

RViz crashes when mouse intersects with the image plugin panel #486

jacobhuesman opened this issue Dec 2, 2019 · 7 comments · Fixed by #490
Assignees
Labels
bug Something isn't working in review Waiting for review (Kanban column)

Comments

@jacobhuesman
Copy link

jacobhuesman commented Dec 2, 2019

RViz crashes with the following error when my mouse intersects the portion of the screen that the image plugin displays images:

rviz2: /tmp/binarydeb/ros-eloquent-rviz-ogre-vendor-7.0.3/obj-x86_64-linux-gnu/ogre-v1.12.1-prefix/src/ogre-v1.12.1/OgreMain/src/OgreSceneManager.cpp:1384: virtual void Ogre::SceneManager::_renderScene(Ogre::Camera*, Ogre::Viewport*, bool): Assertion `camVisObjIt != mCamVisibleObjectsMap.end() && "Should never fail to find a visible object bound for a camera, " "did you override SceneManager::createCamera or something?"' failed.

Otherwise the plugin appears to function normally. I checked for a similar bug with the camera plugin, but it doesn't have that issue.

I'm running ROS2 Eloquent on Ubuntu 18.04 inside a docker container.

Let me know if you need additional info.

@jacobhuesman jacobhuesman changed the title RViz crashes when mouse intersects with Image plugin panel RViz crashes when mouse intersects with the image plugin panel Dec 2, 2019
@jacobperron jacobperron added the bug Something isn't working label Dec 4, 2019
@jacobperron
Copy link
Member

Thanks for reporting. I can reproduce the issue with the Eloquent binaries as well as building the latest source.

@jacobperron jacobperron self-assigned this Dec 6, 2019
@jacobperron
Copy link
Member

I build with debug and get the following assertion failure within Ogre:

build/rviz_ogre_vendor/ogre-v1.12.1-prefix/src/ogre-v1.12.1/OgreMain/src/OgreSceneManager.cpp:1384: virtual void Ogre::SceneManager::_renderScene(Ogre::Camera*, Ogre::Viewport*, bool): Assertion `camVisObjIt != mCamVisibleObjectsMap.end() && "Should never fail to find a visible object bound for a camera, " "did you override SceneManager::createCamera or something?"' failed.
Backtrace
#0  0x00007ffff54cfe97 in __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:51
#1  0x00007ffff54d1801 in __GI_abort () at abort.c:79
#2  0x00007ffff54c139a in __assert_fail_base (fmt=0x7ffff56487d8 "%s%s%s:%u: %s%sAssertion `%s' failed.\n%n", assertion=assertion@entry=0x7ffff5098358 "camVisObjIt != mCamVisibleObjectsMap.end() && \"Should never fail to find a visible object bound for a camera, \" \"did you override SceneManager::createCamera or something?\"", file=file@entry=0x7ffff5097f28 "/home/jacob/ws/ros2_rviz_486_ws/build/rviz_ogre_vendor/ogre-v1.12.1-prefix/src/ogre-v1.12.1/OgreMain/src/OgreSceneManager.cpp", line=line@entry=1384, function=function@entry=0x7ffff5098b00  "virtual void Ogre::SceneManager::_renderScene(Ogre::Camera*, Ogre::Viewport*, bool)") at assert.c:92
#3  0x00007ffff54c1412 in __GI___assert_fail (assertion=0x7ffff5098358 "camVisObjIt != mCamVisibleObjectsMap.end() && \"Should never fail to find a visible object bound for a camera, \" \"did you override SceneManager::createCamera or something?\"", file=0x7ffff5097f28 "/home/jacob/ws/ros2_rviz_486_ws/build/rviz_ogre_vendor/ogre-v1.12.1-prefix/src/ogre-v1.12.1/OgreMain/src/OgreSceneManager.cpp", line=1384, function=0x7ffff5098b00  "virtual void Ogre::SceneManager::_renderScene(Ogre::Camera*, Ogre::Viewport*, bool)") at assert.c:101
#4  0x00007ffff4f326b1 in Ogre::SceneManager::_renderScene(Ogre::Camera*, Ogre::Viewport*, bool) (this=0x555555fc1300, camera=0x555556173090, vp=0x5555561903e0, includeOverlays=false)
    at /home/jacob/ws/ros2_rviz_486_ws/build/rviz_ogre_vendor/ogre-v1.12.1-prefix/src/ogre-v1.12.1/OgreMain/src/OgreSceneManager.cpp:1382
#5  0x00007ffff7a8a3fc in rviz_common::interaction::SelectionRenderer::renderToTexture(Ogre::RenderTexture*, Ogre::Viewport*) (this=0x555556003550, render_texture=0x55555602ff40, window_viewport=0x5555561903e0)
    at /home/jacob/ws/ros2_rviz_486_ws/src/rviz/rviz_common/src/rviz_common/interaction/selection_renderer.cpp:264
#6  0x00007ffff7a89879 in rviz_common::interaction::SelectionRenderer::render(rviz_rendering::RenderWindow*, rviz_common::interaction::SelectionRectangle, rviz_common::interaction::RenderTexture, rviz_common::interaction::HandlerRange, Ogre::PixelBox&) (this=0x555556003550, window=0x5555560463e0, rectangle=..., texture=..., handlers=..., dst_box=...) at /home/jacob/ws/ros2_rviz_486_ws/src/rviz/rviz_common/src/rviz_common/interaction/selection_renderer.cpp:111
#7  0x00007ffff7a7c8ff in rviz_common::interaction::SelectionManager::render(rviz_rendering::RenderWindow*, rviz_common::interaction::SelectionRectangle const&, rviz_common::interaction::RenderTexture const&, Ogre::PixelBox&) (this=
    0x55555600e8d0, window=0x5555560463e0, selection_rectangle=..., render_texture=..., dst_box=...) at /home/jacob/ws/ros2_rviz_486_ws/src/rviz/rviz_common/src/rviz_common/interaction/selection_manager.cpp:309
#8  0x00007ffff7a7c74d in rviz_common::interaction::SelectionManager::renderAndUnpack(rviz_rendering::RenderWindow*, rviz_common::interaction::SelectionRectangle const&, unsigned int) (this=0x55555600e8d0, window=0x5555560463e0, selection_rectangle=..., pass=0)
    at /home/jacob/ws/ros2_rviz_486_ws/src/rviz/rviz_common/src/rviz_common/interaction/selection_manager.cpp:298
#9  0x00007ffff7a7e380 in rviz_common::interaction::SelectionManager::pick(rviz_rendering::RenderWindow*, int, int, int, int, std::unordered_map, std::equal_to, std::allocator > >&) (this=0x55555600e8d0, window=0x5555560463e0, x1=277, y1=76, x2=278, y2=77, results=std::unordered_map with 0 elements)
    at /home/jacob/ws/ros2_rviz_486_ws/src/rviz/rviz_common/src/rviz_common/interaction/selection_manager.cpp:605
#10 0x00007fffaba3ce03 in rviz_default_plugins::tools::InteractionTool::updateFocus(rviz_common::ViewportMouseEvent const&) (this=0x5555560228d0, event=...)
    at /home/jacob/ws/ros2_rviz_486_ws/src/rviz/rviz_default_plugins/src/rviz_default_plugins/tools/interaction/interaction_tool.cpp:94
#11 0x00007fffaba3d329 in rviz_default_plugins::tools::InteractionTool::processMouseEvent(rviz_common::ViewportMouseEvent&) (this=0x5555560228d0, event=...)
    at /home/jacob/ws/ros2_rviz_486_ws/src/rviz/rviz_default_plugins/src/rviz_default_plugins/tools/interaction/interaction_tool.cpp:159
#12 0x00007ffff7ad97fa in rviz_common::VisualizationManager::handleMouseEvent(rviz_common::ViewportMouseEvent const&) (this=0x55555589ae70, vme=...) at /home/jacob/ws/ros2_rviz_486_ws/src/rviz/rviz_common/src/rviz_common/visualization_manager.cpp:648
#13 0x00007ffff7a674b6 in rviz_common::RenderPanel::onRenderWindowMouseEvents(QMouseEvent*) (this=0x55555606d760, event=0x7fffffff1d80) at /home/jacob/ws/ros2_rviz_486_ws/src/rviz/rviz_common/src/rviz_common/render_panel.cpp:195
#14 0x00007ffff7a694c5 in std::__invoke_impl(std::__invoke_memfun_deref, void (rviz_common::RenderPanel::*&)(QMouseEvent*), rviz_common::RenderPanel*&, QMouseEvent*&&) (__f=
    @0x555555fcd240: (void (rviz_common::RenderPanel::*)(rviz_common::RenderPanel * const, QMouseEvent *)) 0x7ffff7a673f6 , __t=@0x555555fcd250: 0x55555606d760, __args#0=@0x7fffffff1a40: 0x7fffffff1d80)
    at /usr/include/c++/7/bits/invoke.h:73
#15 0x00007ffff7a69296 in std::__invoke(void (rviz_common::RenderPanel::*&)(QMouseEvent*), rviz_common::RenderPanel*&, QMouseEvent*&&) (__fn=
    @0x555555fcd240: (void (rviz_common::RenderPanel::*)(rviz_common::RenderPanel * const, QMouseEvent *)) 0x7ffff7a673f6 , __args#0=@0x555555fcd250: 0x55555606d760, __args#1=@0x7fffffff1a40: 0x7fffffff1d80)
    at /usr/include/c++/7/bits/invoke.h:95
#16 0x00007ffff7a69050 in std::_Bind))(QMouseEvent*)>::__call(std::tuple&&, std::_Index_tuple<0ul, 1ul>) (this=0x555555fcd240, __args=...)
    at /usr/include/c++/7/functional:467
#17 0x00007ffff7a68c06 in std::_Bind))(QMouseEvent*)>::operator()(QMouseEvent*&&) (this=0x555555fcd240, __args#0=@0x7fffffff1a40: 0x7fffffff1d80)
    at /usr/include/c++/7/functional:551
#18 0x00007ffff7a68672 in std::_Function_handler))(QMouseEvent*)> >::_M_invoke(std::_Any_data const&, QMouseEvent*&&) (__functor=..., __args#0=@0x7fffffff1a40: 0x7fffffff1d80) at /usr/include/c++/7/bits/std_function.h:316
#19 0x00007ffff3ea87e7 in std::function::operator()(QMouseEvent*) const (this=0x555556046410, __args#0=0x7fffffff1d80) at /usr/include/c++/7/bits/std_function.h:706

This is the call to Ogre that is failing:

scene_manager_->_renderScene(window_viewport->getCamera(), window_viewport, false);

Still investigating.

jacobperron added a commit that referenced this issue Dec 7, 2019
Fixes #486.

At least the call seems unncessary. I haven't noticed any changes in selection render behavior
with or without the change. But, making the call causes an assertion to fail within Ogre when
a selection tool is moused-over an image display (see #486 for details).

The hack was originally added in

ros-visualization/rviz@7feb02d

but it's not clear if the original buggy behavior still exists without it. There's been a lot
of refactoring since then. I've played around with selecting things and haven't noticed any
flickering or discoloration after removing the hack.

Signed-off-by: Jacob Perron <jacob@openrobotics.org>
@wuffle-ros wuffle-ros bot added the in review Waiting for review (Kanban column) label Dec 7, 2019
@jacobperron
Copy link
Member

Possible fix #490
Though there's probably a better solution.

@alsora
Copy link

alsora commented Jan 29, 2020

Any updates on this?

I am having the same issue
https://answers.ros.org/question/342816/ros2-rviz-crash-when-visualizing-camera-image/

@jacobperron
Copy link
Member

@alsora If you can, please try #490 for a fix. I still can't explain why the crash is happening though..

jacobperron added a commit that referenced this issue Feb 3, 2020
* Remove uncessary call to render scene

Fixes #486.

At least the call seems unncessary. I haven't noticed any changes in selection render behavior
with or without the change. But, making the call causes an assertion to fail within Ogre when
a selection tool is moused-over an image display (see #486 for details).

The hack was originally added in

ros-visualization/rviz@7feb02d

but it's not clear if the original buggy behavior still exists without it. There's been a lot
of refactoring since then. I've played around with selecting things and haven't noticed any
flickering or discoloration after removing the hack.

Signed-off-by: Jacob Perron <jacob@openrobotics.org>

* Fix warning about unused parameter

Signed-off-by: Jacob Perron <jacob@openrobotics.org>
@ruffsl
Copy link
Member

ruffsl commented Feb 3, 2020

Thanks @jacobperron !
Looking forward to the next sync, this killing me whenever I'd need to adjust image windows in rviz2.

jacobperron added a commit that referenced this issue Mar 5, 2020
* Remove uncessary call to render scene

Fixes #486.

At least the call seems unncessary. I haven't noticed any changes in selection render behavior
with or without the change. But, making the call causes an assertion to fail within Ogre when
a selection tool is moused-over an image display (see #486 for details).

The hack was originally added in

ros-visualization/rviz@7feb02d

but it's not clear if the original buggy behavior still exists without it. There's been a lot
of refactoring since then. I've played around with selecting things and haven't noticed any
flickering or discoloration after removing the hack.

Signed-off-by: Jacob Perron <jacob@openrobotics.org>

* Fix warning about unused parameter

Signed-off-by: Jacob Perron <jacob@openrobotics.org>
jacobperron added a commit that referenced this issue Mar 5, 2020
* Remove uncessary call to render scene

Fixes #486.

At least the call seems unncessary. I haven't noticed any changes in selection render behavior
with or without the change. But, making the call causes an assertion to fail within Ogre when
a selection tool is moused-over an image display (see #486 for details).

The hack was originally added in

ros-visualization/rviz@7feb02d

but it's not clear if the original buggy behavior still exists without it. There's been a lot
of refactoring since then. I've played around with selecting things and haven't noticed any
flickering or discoloration after removing the hack.

Signed-off-by: Jacob Perron <jacob@openrobotics.org>

* Fix warning about unused parameter

Signed-off-by: Jacob Perron <jacob@openrobotics.org>
jacobperron added a commit that referenced this issue Mar 11, 2020
* Remove uncessary call to render scene

Fixes #486.

At least the call seems unncessary. I haven't noticed any changes in selection render behavior
with or without the change. But, making the call causes an assertion to fail within Ogre when
a selection tool is moused-over an image display (see #486 for details).

The hack was originally added in

ros-visualization/rviz@7feb02d

but it's not clear if the original buggy behavior still exists without it. There's been a lot
of refactoring since then. I've played around with selecting things and haven't noticed any
flickering or discoloration after removing the hack.

Signed-off-by: Jacob Perron <jacob@openrobotics.org>

* Fix warning about unused parameter

Signed-off-by: Jacob Perron <jacob@openrobotics.org>
@ros-discourse
Copy link

This issue has been mentioned on ROS Discourse. There might be relevant details there:

https://discourse.ros.org/t/ros-2-packages-using-ml/13137/8

jacobperron added a commit that referenced this issue Mar 31, 2020
* Remove uncessary call to render scene

Fixes #486.

At least the call seems unncessary. I haven't noticed any changes in selection render behavior
with or without the change. But, making the call causes an assertion to fail within Ogre when
a selection tool is moused-over an image display (see #486 for details).

The hack was originally added in

ros-visualization/rviz@7feb02d

but it's not clear if the original buggy behavior still exists without it. There's been a lot
of refactoring since then. I've played around with selecting things and haven't noticed any
flickering or discoloration after removing the hack.

Signed-off-by: Jacob Perron <jacob@openrobotics.org>

* Fix warning about unused parameter

Signed-off-by: Jacob Perron <jacob@openrobotics.org>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working in review Waiting for review (Kanban column)
Projects
None yet
Development

Successfully merging a pull request may close this issue.

5 participants