-
Notifications
You must be signed in to change notification settings - Fork 464
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
rqt_rviz crashes due to rqt threading change #1042
Comments
Not that I'm aware of.
Sounds like a good idea.
What is "that spinner" in this context? If you mean the spinner in |
I want to switch anything presently on that spinner to go to the explicit queue for it so that nothing is being run by the catch-all async spinner. |
I'd search for uses of NodeHandle within rviz, and make sure none of them use the singleton which doesn't have a custom callback queue setup. I don't think any form of runtime auditing would be complete enough. |
I had been starting here: https://github.com/ros-visualization/rviz/search?q=NodeHandle A bunch are tests of course, and it seems that several of the tools (point_tool, goal_tool) have their own NodeHandle, but that should be harmless, since it's only being used to advertise topics, and therefore has no callbacks. |
Be careful, the GitHub search does not return all matches, only the first few per file. I'd highly recommend using a local search of the code with |
…ization#1040) (ros-visualization#1042) Signed-off-by: Alejandro Hernández Cordero <ahcorde@gmail.com> (cherry picked from commit 384d9c60def93e38ac4c01ddbed17a4731bc4424) Co-authored-by: Alejandro Hernández Cordero <alejandro@openrobotics.org>
Previous discussion: ros-visualization/rqt#96
My understanding is that in the case of rqt_rviz, we now have two threads both calling default ROS callbacks:
However, it's not clear to me what CBs are getting called by
VisualizationManager::onUpdate
, because almost everything seems to funnel through one of these two NHs which already have explicit callback queues set:The onUpdate call happens on the QT thread, and is set up here:
So I think the source of the problem is there's something registered on the default callback queue which is expecting to be able to do QT state mutation, and now can't (under rqt_rviz) because that callback sometimes occurs on the thread which was added in ros-visualization/rqt#95.
Is there some way to audit the callbacks which are ending up on the different queues? IMO the fix here is going to be:
I believe this would turn the async spinner supplied by rqt into a no-op, and restore order in rviz land.
@wjwwood @abencz @sromberg
The text was updated successfully, but these errors were encountered: