ros2 / ros2cli

ROS 2 command line interface tools
Apache License 2.0
173 stars 160 forks source link

add signal handler SIGIN/SIGTERM to ros2run. #899

Open fujitatomoya opened 5 months ago

fujitatomoya commented 5 months ago

address https://github.com/ros2/ros2cli/issues/895

fujitatomoya commented 5 months ago

CC: @clalancette @sloretz

fujitatomoya commented 5 months ago

CI:

fujitatomoya commented 3 months ago

CI:

fujitatomoya commented 2 months ago

@rafa-martin thanks for checking.

@clalancette @sloretz @ahcorde can either of you have a look?

MichaelOrlov commented 1 month ago

@ros-pull-request-builder retest this please

MichaelOrlov commented 1 month ago

@clalancette @sloretz @ahcorde Friendly ping for review

MichaelOrlov commented 1 month ago

@fujitatomoya There are some test failures in the RPR job and they are repeating after RPR job re-run. Also the previous Linux CI job was also failing. Need to either restart it or address failures. Could you please take a look at it?

fujitatomoya commented 1 month ago

all tests seem to be passed, but no result available error with rpr job. (https://build.ros2.org/job/Rpr__ros2cli__ubuntu_noble_amd64/24/testReport/(root)/ros2cli/pytest_missing_result/)

i will rebase and restart the CI again.

fujitatomoya commented 1 month ago

CI:

MichaelOrlov commented 1 month ago

@fujitatomoya As regards:

all tests seem to be passed, but no result available error with rpr job. (https://build.ros2.org/job/Rpr__ros2cli__ubuntu_noble_amd64/24/testReport/(root)/ros2cli/pytest_missing_result/)

i will rebase and restart the CI again.

From the raw log section

Summary: 15 packages finished [20min 27s] 13 packages had stderr output: ros2action ros2cli ros2component ros2doctor ros2interface ros2lifecycle ros2multicast ros2node ros2param ros2pkg ros2run ros2service ros2topic 1 package had test failures: ros2cli

It was a segfault in python code and test timed out. A bit of details about failure from the same log:

Click to expand Starting >>> ros2cli ============================= test session starts ============================== platform linux -- Python 3.12.3, pytest-7.4.4, pluggy-1.4.0 cachedir: /tmp/ws/build_isolated/ros2cli/.pytest_cache rootdir: /tmp/ws/src/ros2cli configfile: pytest.ini plugins: ament-lint-0.18.1, ament-copyright-0.18.1, ament-xmllint-0.18.1, launch-testing-3.6.1, ament-flake8-0.18.1, ament-pep257-0.18.1, launch-testing-ros-0.27.2, colcon-core-0.17.0, cov-4.1.0, timeout-2.2.0, rerunfailures-12.0 timeout: 900.0s timeout method: thread timeout func_only: False collected 31 items test/test_copyright.py . [ 3%] test/test_daemon.py ................... [ 64%] test/test_direct.py .... [ 77%] Fatal Python error: Segmentation fault Current thread 0x00007f5814d77140 (most recent call first): Garbage-collecting File "/usr/lib/python3.12/collections/__init__.py", line 447 in _make File "/usr/lib/python3.12/tokenize.py", line 577 in _generate_tokens_from_c_tokenizer File "/usr/lib/python3/dist-packages/flake8_quotes/__init__.py", line 203 in get_noqa_lines File "/usr/lib/python3/dist-packages/flake8_quotes/__init__.py", line 195 in run File "/usr/lib/python3/dist-packages/flake8/checker.py", line 428 in run_ast_checks File "/usr/lib/python3/dist-packages/flake8/checker.py", line 526 in run_checks File "/usr/lib/python3/dist-packages/flake8/checker.py", line 83 in _mp_run File "/usr/lib/python3.12/multiprocessing/pool.py", line 125 in worker File "/usr/lib/python3.12/multiprocessing/process.py", line 108 in run File "/usr/lib/python3.12/multiprocessing/process.py", line 314 in _bootstrap File "/usr/lib/python3.12/multiprocessing/popen_fork.py", line 71 in _launch File "/usr/lib/python3.12/multiprocessing/popen_fork.py", line 19 in __init__ File "/usr/lib/python3.12/multiprocessing/context.py", line 282 in _Popen File "/usr/lib/python3.12/multiprocessing/process.py", line 121 in start File "/usr/lib/python3.12/multiprocessing/pool.py", line 329 in _repopulate_pool_static File "/usr/lib/python3.12/multiprocessing/pool.py", line 306 in _repopulate_pool File "/usr/lib/python3.12/multiprocessing/pool.py", line 215 in __init__ File "/usr/lib/python3.12/multiprocessing/context.py", line 119 in Pool File "/usr/lib/python3/dist-packages/flake8/checker.py", line 589 in _try_initialize_processpool File "/usr/lib/python3/dist-packages/flake8/checker.py", line 197 in run_parallel File "/usr/lib/python3/dist-packages/flake8/checker.py", line 236 in run File "/usr/lib/python3/dist-packages/flake8/main/application.py", line 103 in run_checks File "/usr/lib/python3/dist-packages/flake8/api/legacy.py", line 116 in check_files File "/opt/ros/rolling/lib/python3.12/site-packages/ament_flake8/main.py", line 281 in generate_flake8_report File "/opt/ros/rolling/lib/python3.12/site-packages/ament_flake8/main.py", line 88 in main_with_errors File "/tmp/ws/src/ros2cli/ros2cli/test/test_flake8.py", line 22 in test_flake8 File "/usr/lib/python3/dist-packages/_pytest/python.py", line 194 in pytest_pyfunc_call File "/usr/lib/python3/dist-packages/pluggy/_callers.py", line 102 in _multicall File "/usr/lib/python3/dist-packages/pluggy/_manager.py", line 119 in _hookexec File "/usr/lib/python3/dist-packages/pluggy/_hooks.py", line 501 in __call__ File "/usr/lib/python3/dist-packages/_pytest/python.py", line 1792 in runtest File "/usr/lib/python3/dist-packages/_pytest/runner.py", line 169 in pytest_runtest_call File "/usr/lib/python3/dist-packages/pluggy/_callers.py", line 102 in _multicall File "/usr/lib/python3/dist-packages/pluggy/_manager.py", line 119 in _hookexec File "/usr/lib/python3/dist-packages/pluggy/_hooks.py", line 501 in __call__ File "/usr/lib/python3/dist-packages/_pytest/runner.py", line 262 in File "/usr/lib/python3/dist-packages/_pytest/runner.py", line 341 in from_call File "/usr/lib/python3/dist-packages/_pytest/runner.py", line 261 in call_runtest_hook File "/usr/lib/python3/dist-packages/_pytest/runner.py", line 222 in call_and_report File "/usr/lib/python3/dist-packages/_pytest/runner.py", line 133 in runtestprotocol File "/usr/lib/python3/dist-packages/_pytest/runner.py", line 114 in pytest_runtest_protocol File "/usr/lib/python3/dist-packages/pluggy/_callers.py", line 102 in _multicall File "/usr/lib/python3/dist-packages/pluggy/_manager.py", line 119 in _hookexec File "/usr/lib/python3/dist-packages/pluggy/_hooks.py", line 501 in __call__ File "/usr/lib/python3/dist-packages/_pytest/main.py", line 350 in pytest_runtestloop File "/usr/lib/python3/dist-packages/pluggy/_callers.py", line 102 in _multicall File "/usr/lib/python3/dist-packages/pluggy/_manager.py", line 119 in _hookexec File "/usr/lib/python3/dist-packages/pluggy/_hooks.py", line 501 in __call__ File "/usr/lib/python3/dist-packages/_pytest/main.py", line 325 in _main File "/usr/lib/python3/dist-packages/_pytest/main.py", line 271 in wrap_session File "/usr/lib/python3/dist-packages/_pytest/main.py", line 318 in pytest_cmdline_main File "/usr/lib/python3/dist-packages/pluggy/_callers.py", line 102 in _multicall File "/usr/lib/python3/dist-packages/pluggy/_manager.py", line 119 in _hookexec File "/usr/lib/python3/dist-packages/pluggy/_hooks.py", line 501 in __call__ File "/usr/lib/python3/dist-packages/_pytest/config/__init__.py", line 169 in main File "/usr/lib/python3/dist-packages/_pytest/config/__init__.py", line 192 in console_main File "/usr/lib/python3/dist-packages/pytest/__main__.py", line 5 in File "", line 88 in _run_code File "", line 198 in _run_module_as_main Extension modules: yaml._yaml, numpy.core._multiarray_umath, numpy.core._multiarray_tests, numpy.linalg._umath_linalg, numpy.fft._pocketfft_internal, numpy.random._common, numpy.random.bit_generator, numpy.random._bounded_integers, numpy.random._mt19937, numpy.random.mtrand, numpy.random._philox, numpy.random._pcg64, numpy.random._sfc64, numpy.random._generator, psutil._psutil_linux, psutil._psutil_posix, rcl_interfaces.rcl_interfaces_s__rosidl_typesupport_c, builtin_interfaces.builtin_interfaces_s__rosidl_typesupport_c, service_msgs.service_msgs_s__rosidl_typesupport_c, type_description_interfaces.type_description_interfaces_s__rosidl_typesupport_c, test_msgs.test_msgs_s__rosidl_typesupport_c, action_msgs.action_msgs_s__rosidl_typesupport_c, unique_identifier_msgs.unique_identifier_msgs_s__rosidl_typesupport_c (total: 23) Fatal Python error: Segmentation fault Current thread 0x00007f5814d77140 (most recent call first): Garbage-collecting File "/usr/lib/python3.12/collections/__init__.py", line 447 in _make File "/usr/lib/python3.12/tokenize.py", line 577 in _generate_tokens_from_c_tokenizer File "/usr/lib/python3/dist-packages/flake8_quotes/__init__.py", line 203 in get_noqa_lines File "/usr/lib/python3/dist-packages/flake8_quotes/__init__.py", line 195 in run File "/usr/lib/python3/dist-packages/flake8/checker.py", line 428 in run_ast_checks File "/usr/lib/python3/dist-packages/flake8/checker.py", line 526 in run_checks File "/usr/lib/python3/dist-packages/flake8/checker.py", line 83 in _mp_run File "/usr/lib/python3.12/multiprocessing/pool.py", line 125 in worker File "/usr/lib/python3.12/multiprocessing/process.py", line 108 in run File "/usr/lib/python3.12/multiprocessing/process.py", line 314 in _bootstrap File "/usr/lib/python3.12/multiprocessing/popen_fork.py", line 71 in _launch File "/usr/lib/python3.12/multiprocessing/popen_fork.py", line 19 in __init__ File "/usr/lib/python3.12/multiprocessing/context.py", line 282 in _Popen File "/usr/lib/python3.12/multiprocessing/process.py", line 121 in start File "/usr/lib/python3.12/multiprocessing/pool.py", line 329 in _repopulate_pool_static File "/usr/lib/python3.12/multiprocessing/pool.py", line 306 in _repopulate_pool File "/usr/lib/python3.12/multiprocessing/pool.py", line 215 in __init__ File "/usr/lib/python3.12/multiprocessing/context.py", line 119 in Pool File "/usr/lib/python3/dist-packages/flake8/checker.py", line 589 in _try_initialize_processpool File "/usr/lib/python3/dist-packages/flake8/checker.py", line 197 in run_parallel File "/usr/lib/python3/dist-packages/flake8/checker.py", line 236 in run File "/usr/lib/python3/dist-packages/flake8/main/application.py", line 103 in run_checks File "/usr/lib/python3/dist-packages/flake8/api/legacy.py", line 116 in check_files File "/opt/ros/rolling/lib/python3.12/site-packages/ament_flake8/main.py", line 281 in generate_flake8_report File "/opt/ros/rolling/lib/python3.12/site-packages/ament_flake8/main.py", line 88 in main_with_errors File "/tmp/ws/src/ros2cli/ros2cli/test/test_flake8.py", line 22 in test_flake8 File "/usr/lib/python3/dist-packages/_pytest/python.py", line 194 in pytest_pyfunc_call File "/usr/lib/python3/dist-packages/pluggy/_callers.py", line 102 in _multicall File "/usr/lib/python3/dist-packages/pluggy/_manager.py", line 119 in _hookexec File "/usr/lib/python3/dist-packages/pluggy/_hooks.py", line 501 in __call__ File "/usr/lib/python3/dist-packages/_pytest/python.py", line 1792 in runtest File "/usr/lib/python3/dist-packages/_pytest/runner.py", line 169 in pytest_runtest_call File "/usr/lib/python3/dist-packages/pluggy/_callers.py", line 102 in _multicall File "/usr/lib/python3/dist-packages/pluggy/_manager.py", line 119 in _hookexec File "/usr/lib/python3/dist-packages/pluggy/_hooks.py", line 501 in __call__ File "/usr/lib/python3/dist-packages/_pytest/runner.py", line 262 in File "/usr/lib/python3/dist-packages/_pytest/runner.py", line 341 in from_call File "/usr/lib/python3/dist-packages/_pytest/runner.py", line 261 in call_runtest_hook File "/usr/lib/python3/dist-packages/_pytest/runner.py", line 222 in call_and_report File "/usr/lib/python3/dist-packages/_pytest/runner.py", line 133 in runtestprotocol File "/usr/lib/python3/dist-packages/_pytest/runner.py", line 114 in pytest_runtest_protocol File "/usr/lib/python3/dist-packages/pluggy/_callers.py", line 102 in _multicall File "/usr/lib/python3/dist-packages/pluggy/_manager.py", line 119 in _hookexec File "/usr/lib/python3/dist-packages/pluggy/_hooks.py", line 501 in __call__ File "/usr/lib/python3/dist-packages/_pytest/main.py", line 350 in pytest_runtestloop File "/usr/lib/python3/dist-packages/pluggy/_callers.py", line 102 in _multicall File "/usr/lib/python3/dist-packages/pluggy/_manager.py", line 119 in _hookexec File "/usr/lib/python3/dist-packages/pluggy/_hooks.py", line 501 in __call__ File "/usr/lib/python3/dist-packages/_pytest/main.py", line 325 in _main File "/usr/lib/python3/dist-packages/_pytest/main.py", line 271 in wrap_session File "/usr/lib/python3/dist-packages/_pytest/main.py", line 318 in pytest_cmdline_main File "/usr/lib/python3/dist-packages/pluggy/_callers.py", line 102 in _multicall File "/usr/lib/python3/dist-packages/pluggy/_manager.py", line 119 in _hookexec File "/usr/lib/python3/dist-packages/pluggy/_hooks.py", line 501 in __call__ File "/usr/lib/python3/dist-packages/_pytest/config/__init__.py", line 169 in main File "/usr/lib/python3/dist-packages/_pytest/config/__init__.py", line 192 in console_main File "/usr/lib/python3/dist-packages/pytest/__main__.py", line 5 in File "", line 88 in _run_code File "", line 198 in _run_module_as_main Extension modules: yaml._yaml, numpy.core._multiarray_umath, numpy.core._multiarray_tests, numpy.linalg._umath_linalg, numpy.fft._pocketfft_internal, numpy.random._common, numpy.random.bit_generator, numpy.random._bounded_integers, numpy.random._mt19937, numpy.random.mtrand, numpy.random._philox, numpy.random._pcg64, numpy.random._sfc64, numpy.random._generator, psutil._psutil_linux, psutil._psutil_posix, rcl_interfaces.rcl_interfaces_s__rosidl_typesupport_c, builtin_interfaces.builtin_interfaces_s__rosidl_typesupport_c, service_msgs.service_msgs_s__rosidl_typesupport_c, type_description_interfaces.type_description_interfaces_s__rosidl_typesupport_c, test_msgs.test_msgs_s__rosidl_typesupport_c, action_msgs.action_msgs_s__rosidl_typesupport_c, unique_identifier_msgs.unique_identifier_msgs_s__rosidl_typesupport_c (total: 23) +++++++++++++++++++++++++++++++++++ Timeout ++++++++++++++++++++++++++++++++++++
fujitatomoya commented 1 month ago

RHEL failure is missing result, that i am not sure what went wrong. I will retry RHEL CI.

about rpr job failure, that is segmentation fault during garbage-collecting, stack trace does not even include our fix...

fujitatomoya commented 1 month ago

@ros-pull-request-builder retest this please