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
Los mantenedores suelen responder en 1 día
@fujitatomoya ya está trabajando en esto.
Desde el 25/6/2025.
Evaluación
Este issue todavía no se ha evaluado.
Descripción
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
- Lenguaje dominante
- C++
- Estrellas
- 814
- Forks
- 572
- Merge medio
- 4 d 2 h
- PR fusionados (30 d)
- 21
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Sin plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de ros2/rclcpp
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
Los mantenedores suelen responder en 1 día
-
enhancement
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
Los mantenedores suelen responder en 1 día
-
[Jazzy] action server registers clock jump callbacks without the clock mutex (heap corruption)Posiblemente ocupada Un pull request vinculado a esta issue está abierto o ya se fusionó. Abiertobug
Dificultad 4/5 3-5 días Aptitud para principiantes 44/100
Los mantenedores suelen responder en 1 día
-
EventsCBGExecutor segfaults when a timer is removed while its callback is runningPosiblemente ocupada @spurnvoj la tomó hace 4 días. Abiertobug
Dificultad 4/5 3-5 días Aptitud para principiantes 35/100
Los mantenedores suelen responder en 1 día
-
EventsCBGExecutor keeps queued events of removed nodes, component container segfaults on shutdownPosiblemente ocupada @spurnvoj la tomó hace 4 días. Abierto
Dificultad 5/5 Más de una semana Aptitud para principiantes 18/100
Los mantenedores suelen responder en 1 día
Todos los issues de ros2/rclcpp
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
Los mantenedores suelen responder en 1 día
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 84/100
NVIDIA/DeepStream#78 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 74/100
LaneDibello/Kotor-Patch-Manager#328 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100