cmu-rss-lab / roswire

A library for static and dynamic analysis of ROS applications via Docker 🔌
http://christimperley.co.uk/roswire
Apache License 2.0
8 stars 0 forks source link

CMake parsing crashes on Husky image #494

Closed ChrisTimperley closed 2 years ago

ChrisTimperley commented 2 years ago
ERROR: failure occurred when recovering node sources
Traceback (most recent call last):

  File "/home/chris/.local/share/virtualenvs/rosdiscover-evaluation-RJ7nFQ3g/lib/python3.9/site-packages/dockerblade/files.py", line 420, in listdir
    output = self._shell.check_output(command, text=True)
             │    │                   └ 'test -e //message_relay/relay_factory || exit 50 && test -d //message_relay/relay_factory || exit 51 && ls --color=never -A ...
             │    └ <member '_shell' of 'FileSystem' objects>
             └ FileSystem(container=Container(daemon=DockerDaemon(url='unix:///run/user/1000/docker.sock'), id='44757a60665c43dd8fee993beffe...
  File "/home/chris/.local/share/virtualenvs/rosdiscover-evaluation-RJ7nFQ3g/lib/python3.9/site-packages/dockerblade/shell.py", line 276, in check_output
    result.check_returncode()
    │      └ <function CompletedProcess.check_returncode at 0x7fa5cbfbd430>
    └ CompletedProcess(args='test -e //message_relay/relay_factory || exit 50 && test -d //message_relay/relay_factory || exit 51 &...
  File "/home/chris/.local/share/virtualenvs/rosdiscover-evaluation-RJ7nFQ3g/lib/python3.9/site-packages/dockerblade/shell.py", line 50, in check_returncode
    raise CalledProcessError(cmd=self.args,
          │                      │    └ 'test -e //message_relay/relay_factory || exit 50 && test -d //message_relay/relay_factory || exit 51 && ls --color=never -A ...
          │                      └ CompletedProcess(args='test -e //message_relay/relay_factory || exit 50 && test -d //message_relay/relay_factory || exit 51 &...
          └ <class 'dockerblade.exceptions.CalledProcessError'>

dockerblade.exceptions.CalledProcessError: Command 'test -e //message_relay/relay_factory || exit 50 && test -d //message_relay/relay_factory || exit 51 && ls --color=never -A -1 //message_relay/relay_factory' returned non-zero exit status 50.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):

  File "/home/chris/experiments/rosdiscover-evaluation/scripts/recover-node-models.py", line 377, in <module>
    main()
    └ <function main at 0x7fa5d0d1be50>

  File "/home/chris/experiments/rosdiscover-evaluation/scripts/recover-node-models.py", line 371, in main
    recover_all(config)
    │           └ {'type': 'recovery', 'subject': 'husky', 'image': 'rosdiscover-experiments/husky:0.4.10', 'distro': 'melodic', 'build_command...
    └ <function recover_all at 0x7fa5d0d1bc10>

  File "/home/chris/experiments/rosdiscover-evaluation/scripts/recover-node-models.py", line 222, in recover_all
    package_node_to_sources = obtain_node_sources(experiment_config)
                              │                   └ {'type': 'recovery', 'subject': 'husky', 'image': 'rosdiscover-experiments/husky:0.4.10', 'distro': 'melodic', 'build_command...
                              └ <function obtain_node_sources at 0x7fa5d0d1bb80>

  File "/home/chris/experiments/rosdiscover-evaluation/scripts/recover-node-models.py", line 203, in obtain_node_sources
    generate_node_sources(experiment_config)
    │                     └ {'type': 'recovery', 'subject': 'husky', 'image': 'rosdiscover-experiments/husky:0.4.10', 'distro': 'melodic', 'build_command...
    └ <function generate_node_sources at 0x7fa5d0d1b700>

> File "/home/chris/experiments/rosdiscover-evaluation/scripts/recover-node-models.py", line 186, in generate_node_sources
    rosdiscover.cli.main(args)
    │           │   │    └ ['sources', '--save-to', '/home/chris/experiments/rosdiscover-evaluation/experiments/recovery/subjects/husky/rosdiscover-conf...
    │           │   └ <function main at 0x7fa5cb325b80>
    │           └ <module 'rosdiscover.cli' from '/home/chris/experiments/rosdiscover-evaluation/deps/rosdiscover/src/rosdiscover/cli.py'>
    └ <module 'rosdiscover' from '/home/chris/experiments/rosdiscover-evaluation/deps/rosdiscover/src/rosdiscover/__init__.py'>

  File "/home/chris/experiments/rosdiscover-evaluation/deps/rosdiscover/src/rosdiscover/cli.py", line 356, in main
    parsed_args.func(parsed_args)
    │           │    └ Namespace(config=<_io.TextIOWrapper name='/tmp/tmpe0qrhtlu.rosdiscover.yml' mode='r' encoding='UTF-8'>, save_to='/home/chris/...
    │           └ <function sources at 0x7fa5cb3259d0>
    └ Namespace(config=<_io.TextIOWrapper name='/tmp/tmpe0qrhtlu.rosdiscover.yml' mode='r' encoding='UTF-8'>, save_to='/home/chris/...

  File "/home/chris/experiments/rosdiscover-evaluation/deps/rosdiscover/src/rosdiscover/cli.py", line 212, in sources
    config_with_sources = config.with_recovered_node_sources()
                          │      └ <function Config.with_recovered_node_sources at 0x7fa5cb4ac8b0>
                          └ Config(image='rosdiscover-experiments/husky:0.4.10', sources=('/opt/ros/melodic/setup.bash', '/ros_ws/devel_isolated/setup.ba...

  File "/home/chris/experiments/rosdiscover-evaluation/deps/rosdiscover/src/rosdiscover/config.py", line 235, in with_recovered_node_sources
    recovered_node_sources = self.find_node_sources()
                             │    └ <function Config.find_node_sources at 0x7fa5cb4ac940>
                             └ Config(image='rosdiscover-experiments/husky:0.4.10', sources=('/opt/ros/melodic/setup.bash', '/ros_ws/devel_isolated/setup.ba...

  File "/home/chris/experiments/rosdiscover-evaluation/deps/rosdiscover/src/rosdiscover/config.py", line 261, in find_node_sources
    for package_cmake_targets in ros.cmake_targets_for_all_packages():
                                 │   └ <function ROS1.cmake_targets_for_all_packages at 0x7fa5cd6f9040>
                                 └ <roswire.ros1.ros1.ROS1 object at 0x7fa5ca992b50>

  File "/home/chris/experiments/rosdiscover-evaluation/deps/roswire/src/roswire/ros1/ros1.py", line 475, in cmake_targets_for_all_packages
    target_to_info = self.package_node_sources(package)
                     │    │                    └ ROS1Package(name='message_relay', path='/ros_ws/src/cpr_multimaster_tools/message_relay', messages=(), services=(), actions=())
                     │    └ <function ROS1.package_node_sources at 0x7fa5cd6cff70>
                     └ <roswire.ros1.ros1.ROS1 object at 0x7fa5ca992b50>

  File "/home/chris/experiments/rosdiscover-evaluation/deps/roswire/src/roswire/ros1/ros1.py", line 456, in package_node_sources
    return self.__package_source_extractor.get_cmake_info(
           └ <roswire.ros1.ros1.ROS1 object at 0x7fa5ca992b50>

  File "/home/chris/experiments/rosdiscover-evaluation/deps/roswire/src/roswire/ros1/source.py", line 37, in get_cmake_info
    return self._info_from_cmakelists(cmakelists_path, package)
           │    │                     │                └ ROS1Package(name='message_relay', path='/ros_ws/src/cpr_multimaster_tools/message_relay', messages=(), services=(), actions=())
           │    │                     └ '/ros_ws/src/cpr_multimaster_tools/message_relay/CMakeLists.txt'
           │    └ <function CMakeExtractor._info_from_cmakelists at 0x7fa5cb803940>
           └ ROS1PackageSourceExtractor(_app_instance=AppInstance(_dockerblade=Container(daemon=DockerDaemon(url='unix:///run/user/1000/do...

  File "/home/chris/experiments/rosdiscover-evaluation/deps/roswire/src/roswire/common/source.py", line 193, in _info_from_cmakelists
    info = self._process_cmake_contents(contents, package, env)
           │    │                       │         │        └ {'CMAKE_SOURCE_DIR': './', 'CMAKE_CURRENT_SOURCE_DIR': './', 'CMAKE_CURRENT_BINARY_DIR': './', 'CMAKE_BINARY_DIR': './', 'PRO...
           │    │                       │         └ ROS1Package(name='message_relay', path='/ros_ws/src/cpr_multimaster_tools/message_relay', messages=(), services=(), actions=())
           │    │                       └ 'cmake_minimum_required(VERSION 2.8.3)\nproject(message_relay)\n\n# Add new message packages to process here\nset(MESSAGE_PAC...
           │    └ <function CMakeExtractor._process_cmake_contents at 0x7fa5cb8039d0>
           └ ROS1PackageSourceExtractor(_app_instance=AppInstance(_dockerblade=Container(daemon=DockerDaemon(url='unix:///run/user/1000/do...

  File "/home/chris/experiments/rosdiscover-evaluation/deps/roswire/src/roswire/common/source.py", line 297, in _process_cmake_contents
    self.__process_add_library(
    └ ROS1PackageSourceExtractor(_app_instance=AppInstance(_dockerblade=Container(daemon=DockerDaemon(url='unix:///run/user/1000/do...

  File "/home/chris/experiments/rosdiscover-evaluation/deps/roswire/src/roswire/common/source.py", line 415, in __process_add_library
    real_src = self._resolve_to_real_file(source, package, cmake_env)
               │    │                     │       │        └ {'CMAKE_SOURCE_DIR': './', 'CMAKE_CURRENT_SOURCE_DIR': './', 'CMAKE_CURRENT_BINARY_DIR': './', 'CMAKE_BINARY_DIR': './', 'PRO...
               │    │                     │       └ ROS1Package(name='message_relay', path='/ros_ws/src/cpr_multimaster_tools/message_relay', messages=(), services=(), actions=())
               │    │                     └ '//message_relay/relay_factory/topic_relay_factory.cpp'
               │    └ <function CMakeExtractor._resolve_to_real_file at 0x7fa5cb803c10>
               └ ROS1PackageSourceExtractor(_app_instance=AppInstance(_dockerblade=Container(daemon=DockerDaemon(url='unix:///run/user/1000/do...

  File "/home/chris/experiments/rosdiscover-evaluation/deps/roswire/src/roswire/common/source.py", line 397, in _resolve_to_real_file
    all_files = self._app_instance.files.listdir(os.path.join(package.path, parent))
                │    │             │             │  │    │    │       │     └ '//message_relay/relay_factory'
                │    │             │             │  │    │    │       └ <member 'path' of 'ROS1Package' objects>
                │    │             │             │  │    │    └ ROS1Package(name='message_relay', path='/ros_ws/src/cpr_multimaster_tools/message_relay', messages=(), services=(), actions=())
                │    │             │             │  │    └ <function join at 0x7fa5d2ae3dc0>
                │    │             │             │  └ <module 'posixpath' from '/home/chris/.pyenv/versions/3.9.5/lib/python3.9/posixpath.py'>
                │    │             │             └ <module 'os' from '/home/chris/.pyenv/versions/3.9.5/lib/python3.9/os.py'>
                │    │             └ <member 'files' of 'AppInstance' objects>
                │    └ AppInstance(_dockerblade=Container(daemon=DockerDaemon(url='unix:///run/user/1000/docker.sock'), id='44757a60665c43dd8fee993b...
                └ ROS1PackageSourceExtractor(_app_instance=AppInstance(_dockerblade=Container(daemon=DockerDaemon(url='unix:///run/user/1000/do...

  File "/home/chris/.local/share/virtualenvs/rosdiscover-evaluation-RJ7nFQ3g/lib/python3.9/site-packages/dockerblade/files.py", line 423, in listdir
    raise exc.ContainerFileNotFound(path=directory,
          │   │                          └ '//message_relay/relay_factory'
          │   └ <class 'dockerblade.exceptions.ContainerFileNotFound'>
          └ <module 'dockerblade.exceptions' from '/home/chris/.local/share/virtualenvs/rosdiscover-evaluation-RJ7nFQ3g/lib/python3.9/sit...

dockerblade.exceptions.ContainerFileNotFound: File not found [//message_relay/relay_factory] in container [44757a60665c43dd8fee993beffe7a4a2352c59b6854ec91e55fad7b8227b009]
ERROR: failed to obtain node sources for experiment [/home/chris/experiments/rosdiscover-evaluation/experiments/recovery/subjects/husky/experiment.yml]