Skip to content

colcon test leaves zombie daemon process with different ROS_DOMAIN_ID #1097

@fujitatomoya

Description

@fujitatomoya

Generated by Generative AI

No response

Operating System:

Linux tomoyafujita-B760M-Pro-RS-D4 6.14.0-29-generic #29~24.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Aug 14 16:52:50 UTC 2 x86_64 x86_64 x86_64 GNU/Linux

ROS version or commit hash:

rolling

RMW implementation (if applicable):

No response

RMW Configuration (if applicable):

No response

Client library (if applicable):

No response

'ros2 doctor --report' output

ros2 doctor --report
<COPY OUTPUT HERE>

Steps to reproduce issue

root@tomoyafujita-B760M-Pro-RS-D4:~/ros2_ws/colcon_ws# ps -ef
UID          PID    PPID  C STIME TTY          TIME CMD
root           1       0  0 17:20 pts/0    00:00:00 /bin/bash
root          13       0  0 17:20 pts/1    00:00:00 /bin/bash
root          25      13  0 17:20 pts/1    00:00:00 ps -ef
root@tomoyafujita-B760M-Pro-RS-D4:~/ros2_ws/colcon_ws# source install/local_setup.bash
root@tomoyafujita-B760M-Pro-RS-D4:~/ros2_ws/colcon_ws# colcon test --event-handlers console_direct+ --packages-select ro
s2service
Starting >>> ros2service
============================= test session starts ==============================
...
[Processing: ros2service]
test/test_cli.py .                                                       [ 16%]
test/test_copyright.py .                                                 [ 33%]
test/test_echo.py .                                                      [ 50%]
test/test_flake8.py .                                                    [ 66%]
test/test_pep257.py .                                                    [ 83%]
test/test_xmllint.py .                                                   [100%]

--- generated xml file: /root/ros2_ws/colcon_ws/build/ros2service/pytest.xml ---
============================== 6 passed in 46.83s ==============================
Finished <<< ros2service [47.9s]

Summary: 1 package finished [48.8s]
root@tomoyafujita-B760M-Pro-RS-D4:~/ros2_ws/colcon_ws# ps -ef
UID          PID    PPID  C STIME TTY          TIME CMD
root           1       0  0 17:20 pts/0    00:00:00 /bin/bash
root          13       0  0 17:20 pts/1    00:00:00 /bin/bash
root         629       1  0 17:24 pts/1    00:00:00 /usr/bin/python3 -c from ros2cli.daemon.daemonize import main; main() --name ros2-daemon --ros-domain-id 37 --rmw-implementation rmw_fastrtps_dynamic_cpp
root         792       1  0 17:24 pts/1    00:00:00 /usr/bin/python3 -c from ros2cli.daemon.daemonize import main; main() --name ros2-daemon --ros-domain-id 18 --rmw-implementation rmw_cyclonedds_cpp
root         920       1  0 17:24 pts/1    00:00:00 /usr/bin/python3 -c from ros2cli.daemon.daemonize import main; main() --name ros2-daemon --ros-domain-id 49 --rmw-implementation rmw_fastrtps_cpp
root        1156       1  0 17:24 pts/1    00:00:00 /usr/bin/python3 -c from ros2cli.daemon.daemonize import main; main() --name ros2-daemon --ros-domain-id 78 --rmw-implementation rmw_fastrtps_dynamic_cpp
root        1235       1  0 17:24 pts/1    00:00:00 /usr/bin/python3 -c from ros2cli.daemon.daemonize import main; main() --name ros2-daemon --ros-domain-id 13 --rmw-implementation rmw_cyclonedds_cpp
root        1294       1  1 17:24 pts/1    00:00:00 /usr/bin/python3 -c from ros2cli.daemon.daemonize import main; main() --name ros2-daemon --ros-domain-id 83 --rmw-implementation rmw_fastrtps_cpp
root        1402      13  0 17:25 pts/1    00:00:00 ps -ef

Expected behavior

ros2 daemon process from isolation environment should be shutdown when tests complete.

Actual behavior

ros2 daemon process stays alive for each test completion.

Additional information

EnableRmwIsolation tries to allocated the available ROS_DOMAIN_ID for DDS based rmw_implementation, and then initiate the ros2 daemon right before each test to make sure it provides the isolated virtual environment. Each test makes sure to shut down the ros2 daemon at the test entry, but this is not working as expected because ROS_DOMAIN_ID is already different from default one.

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions