Setting qos_overriding_options in create_publisher or create_subscription for a new Pub or Sub from within a dynamic parameter callback creates a deadlock condition when resource locking is required
@fujitatomoya ci sta già lavorando.
Dal 25/6/2025.
Valutazione
Questa issue non è ancora stata valutata.
Descrizione
Operating System:
Ubuntu 24.04
ROS version or commit hash:
Rolling
Client library (if applicable):
rclcpp
Steps to reproduce issue
We use create_publisher for creating publishers generally and I have been working to expose more of the advanced features within Nav2's LifecycleNode. Including among them qos_overriding_options for overriding the QoS policies based on a single parameter allow_parameter_qos_overrides.
I found that generally this works fine and there is no issue in the lifecycle transition functions. However, when using create_publisher in the callback of a dynamic parameter to reinitialize an object, the program deadlocks at rclcpp::create_publisher.
What's interesting is that in all cases, these publishers previously existed so the parameters should have already been declared that this logic is declare or getting. That makes me think that (a) its declaring again and that causes a problem or (b) the get logic is wrong and this is being uncovered by running this 2x.
I suspect this is also true of create_subscription, but create_publisher is the only one I was debugging at the moment. I see some tests passing in my refactor with subscriptions interestingly enough, but I'm not sure if that is because we didn't test them thoroughly enough or it really is only create_publisher that has this error
Expected behavior
Publisher is created and program can continue as normal
Actual behavior
Publisher is created and program is permanently deadlocked
Additional information
No response
- Lingua principale
- C++
- Stelle
- 805
- Fork
- 564
- Merge medio
- 1g 22h
- PR unite (30g)
- 21
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di ros2/rclcpp
-
good first issue
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 90/100
-
enhancement
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
-
bug
Difficoltà 3/5 1-2 giorni Idoneità per principianti 65/100
-
bug
Difficoltà 4/5 3-5 giorni Idoneità per principianti 48/100
-
enhancement
Difficoltà 5/5 Più di una settimana Idoneità per principianti 30/100
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
flutter-webrtc/flutter-webrtc#2206 ·
-
litertlm-android AAR ships no consumer ProGuard rules → "mid == null" SIGABRT in minified apps Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
google-ai-edge/LiteRT-LM#3739 ·
-
Component: GLib
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
brave/brave-browser#59300 ·
-
Mute ydb/tests/functional/dstool/test_canonical_requests.py.Test.test_group_take_snapshot in main Apertaai_reviewed
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
ydb-platform/ydb#53974 · 3 commenti ·