Skip to content

rcl_init segfaults on non ASCII command line arguments if LANG is not set #374

@hidmic

Description

@hidmic

Bug report

Required Info:

  • Operating System:
    • Ubuntu 18.04 Bionic Beaver
  • Installation type:
    • Binaries and from source
  • Version or commit hash:

Steps to reproduce issue

  1. Unset the LANG environment variable if set.
unset LANG
  1. Start some node.
ros2 run demo_nodes_cpp talker
  1. Try to set a string parameter with non-ASCII value
ros2 param set /talker value 'Ragnarök'

Expected behavior

CLI should throw UnicodeEncodeError upon message conversion and serialization (inaccurate description, see below).

Actual behavior

CLI segfaults within rcl_init:

Program received signal SIGSEGV, Segmentation fault.                                                        [9/601]
__strlen_avx2 () at ../sysdeps/x86_64/multiarch/strlen-avx2.S:62
62      ../sysdeps/x86_64/multiarch/strlen-avx2.S: No such file or directory.
(gdb) bt  
#0  __strlen_avx2 () at ../sysdeps/x86_64/multiarch/strlen-avx2.S:62
#1  0x00007ffff5ee3daa in rcl_init (argc=2, argv=0xab36d0, options=0x7fffffff2a00, context=0x7ffff7f5ddc8)
    at /home/michel/Workspaces/ros2_base_ws/src/ros2/rcl/rcl/src/rcl/init.c:97
#2  0x00007ffff67b75e9 in rclpy_init (_unused_self=0x7ffff7e2e458, args=0x7ffff7e25dc8)
    at /home/michel/Workspaces/ros2_base_ws/src/ros2/rclpy/rclpy/src/rclpy/_rclpy.c:529
...
#1  0x00007ffff5ee3daa in rcl_init (argc=2, argv=0xab36d0, options=0x7fffffff2a00, context=0x7ffff7f5ddc8)
    at /home/michel/Workspaces/ros2_base_ws/src/ros2/rcl/rcl/src/rcl/init.c:97
97            size_t argv_i_length = strlen(argv[i]);

Additional information

Above situation only arises when system locale settings are not properly configured as specified in the installation instructions. From that perspective, this may not be a bug, and fixing it not a fix but an enhancement to better deal with such conditions.

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions