Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 20 additions & 14 deletions mavros/400949c/400949c.bug
Original file line number Diff line number Diff line change
Expand Up @@ -3,18 +3,18 @@
id: 400949c
title: Segmentation fault due to incorrect resource sharing between threads
description: >
MAVROS (asynchronously) runs its TCP, UDP, and serial connection
services using dedicated threads. The "utils::set_thread_name"
function is used to assign appropriate names to each of those
threads (e.g., "MAVConnTCPs981"). "utils::set_thread_name"
accepts an std::thread instance and a string, and attempts to
assign the name given by the string to the thread using
"pthread_setname_np". However, a segmentation fault occurs when
the faulty program is run. This is due to the std::thread
instance, "t", being incorrectly accessed from within the lambda
for the thread. To fix this issue, "pthread_self()" is used to
fetch a valid "pthread_t" instance for the current thread,
instead.
MAVROS (asynchronously) runs its TCP, UDP, and serial connection
services using dedicated threads. The "utils::set_thread_name"
function is used to assign appropriate names to each of those
threads (e.g., "MAVConnTCPs981"). "utils::set_thread_name"
accepts an std::thread instance and a string, and attempts to
assign the name given by the string to the thread using
"pthread_setname_np". However, a segmentation fault occurs when
the faulty program is run. This is due to the std::thread
instance, "t", being incorrectly accessed from within the lambda
for the thread. To fix this issue, "pthread_self()" is used to
fetch a valid "pthread_t" instance for the current thread,
instead.
classification: "CWE-362: Concurrent Execution using Shared Resource with Improper Synchronization ('Race Condition') #RESOURCE"
keywords:
- segmentation fault
Expand Down Expand Up @@ -56,9 +56,15 @@ fix:
- libmavconn/test/test_hang.cpp
languages:
- C++
time: 2016-06-06 (00:00)
time: 2016-06-06T19:51:43+03:00
time-machine:
ros_distro: kinetic
ros_pkgs:
- mavros
datetime: 2016-06-06
datetime: 2016-06-06T19:51:43+03:00
bugzoo:
is-build-failure: false
bug-commit: b9bece1437dfe50c2d6855efd166ea2def2733ea
fix-commit: 400949c5b152a888a8b4fd94b085bbfc2092f146
fork-urls:
- https://github.com/robust-rosin/mavros
241 changes: 241 additions & 0 deletions mavros/400949c/deps.rosinstall
Original file line number Diff line number Diff line change
@@ -0,0 +1,241 @@
- tar:
local-name: actionlib
uri: https://github.com/ros-gbp/actionlib-release/archive/release/kinetic/actionlib/1.11.5-0.tar.gz
version: actionlib-release-release-kinetic-actionlib-1.11.5-0
- tar:
local-name: angles
uri: https://github.com/ros-gbp/geometry_angles_utils-release/archive/release/kinetic/angles/1.9.10-0.tar.gz
version: geometry_angles_utils-release-release-kinetic-angles-1.9.10-0
- tar:
local-name: catkin
uri: https://github.com/ros-gbp/catkin-release/archive/release/kinetic/catkin/0.7.1-0.tar.gz
version: catkin-release-release-kinetic-catkin-0.7.1-0
- tar:
local-name: class_loader
uri: https://github.com/ros-gbp/class_loader-release/archive/release/kinetic/class_loader/0.3.3-0.tar.gz
version: class_loader-release-release-kinetic-class_loader-0.3.3-0
- tar:
local-name: cmake_modules
uri: https://github.com/ros-gbp/cmake_modules-release/archive/release/kinetic/cmake_modules/0.4.0-1.tar.gz
version: cmake_modules-release-release-kinetic-cmake_modules-0.4.0-1
- tar:
local-name: common_msgs/actionlib_msgs
uri: https://github.com/ros-gbp/common_msgs-release/archive/release/kinetic/actionlib_msgs/1.12.4-0.tar.gz
version: common_msgs-release-release-kinetic-actionlib_msgs-1.12.4-0
- tar:
local-name: common_msgs/diagnostic_msgs
uri: https://github.com/ros-gbp/common_msgs-release/archive/release/kinetic/diagnostic_msgs/1.12.4-0.tar.gz
version: common_msgs-release-release-kinetic-diagnostic_msgs-1.12.4-0
- tar:
local-name: common_msgs/geometry_msgs
uri: https://github.com/ros-gbp/common_msgs-release/archive/release/kinetic/geometry_msgs/1.12.4-0.tar.gz
version: common_msgs-release-release-kinetic-geometry_msgs-1.12.4-0
- tar:
local-name: common_msgs/nav_msgs
uri: https://github.com/ros-gbp/common_msgs-release/archive/release/kinetic/nav_msgs/1.12.4-0.tar.gz
version: common_msgs-release-release-kinetic-nav_msgs-1.12.4-0
- tar:
local-name: common_msgs/sensor_msgs
uri: https://github.com/ros-gbp/common_msgs-release/archive/release/kinetic/sensor_msgs/1.12.4-0.tar.gz
version: common_msgs-release-release-kinetic-sensor_msgs-1.12.4-0
- tar:
local-name: diagnostics/diagnostic_updater
uri: https://github.com/ros-gbp/diagnostics-release/archive/release/kinetic/diagnostic_updater/1.8.9-0.tar.gz
version: diagnostics-release-release-kinetic-diagnostic_updater-1.8.9-0
- tar:
local-name: gencpp
uri: https://github.com/ros-gbp/gencpp-release/archive/release/kinetic/gencpp/0.5.4-0.tar.gz
version: gencpp-release-release-kinetic-gencpp-0.5.4-0
- tar:
local-name: geneus
uri: https://github.com/tork-a/geneus-release/archive/release/kinetic/geneus/2.2.5-1.tar.gz
version: geneus-release-release-kinetic-geneus-2.2.5-1
- tar:
local-name: genlisp
uri: https://github.com/ros-gbp/genlisp-release/archive/release/kinetic/genlisp/0.4.15-0.tar.gz
version: genlisp-release-release-kinetic-genlisp-0.4.15-0
- tar:
local-name: genmsg
uri: https://github.com/ros-gbp/genmsg-release/archive/release/kinetic/genmsg/0.5.7-1.tar.gz
version: genmsg-release-release-kinetic-genmsg-0.5.7-1
- tar:
local-name: gennodejs
uri: https://github.com/RethinkRobotics-release/gennodejs-release/archive/release/kinetic/gennodejs/1.0.3-0.tar.gz
version: gennodejs-release-release-kinetic-gennodejs-1.0.3-0
- tar:
local-name: genpy
uri: https://github.com/ros-gbp/genpy-release/archive/release/kinetic/genpy/0.6.0-0.tar.gz
version: genpy-release-release-kinetic-genpy-0.6.0-0
- tar:
local-name: geometry/eigen_conversions
uri: https://github.com/ros-gbp/geometry-release/archive/release/kinetic/eigen_conversions/1.11.8-0.tar.gz
version: geometry-release-release-kinetic-eigen_conversions-1.11.8-0
- tar:
local-name: geometry2/tf2
uri: https://github.com/ros-gbp/geometry2-release/archive/release/kinetic/tf2/0.5.13-0.tar.gz
version: geometry2-release-release-kinetic-tf2-0.5.13-0
- tar:
local-name: geometry2/tf2_msgs
uri: https://github.com/ros-gbp/geometry2-release/archive/release/kinetic/tf2_msgs/0.5.13-0.tar.gz
version: geometry2-release-release-kinetic-tf2_msgs-0.5.13-0
- tar:
local-name: geometry2/tf2_py
uri: https://github.com/ros-gbp/geometry2-release/archive/release/kinetic/tf2_py/0.5.13-0.tar.gz
version: geometry2-release-release-kinetic-tf2_py-0.5.13-0
- tar:
local-name: geometry2/tf2_ros
uri: https://github.com/ros-gbp/geometry2-release/archive/release/kinetic/tf2_ros/0.5.13-0.tar.gz
version: geometry2-release-release-kinetic-tf2_ros-0.5.13-0
- tar:
local-name: mavlink
uri: https://github.com/mavlink/mavlink-gbp-release/archive/release/kinetic/mavlink/2016.5.20-0.tar.gz
version: mavlink-gbp-release-release-kinetic-mavlink-2016.5.20-0
- tar:
local-name: mavros/libmavconn
uri: https://github.com/mavlink/mavros-release/archive/release/kinetic/libmavconn/0.17.3-0.tar.gz
version: mavros-release-release-kinetic-libmavconn-0.17.3-0
- tar:
local-name: mavros/mavros_msgs
uri: https://github.com/mavlink/mavros-release/archive/release/kinetic/mavros_msgs/0.17.3-0.tar.gz
version: mavros-release-release-kinetic-mavros_msgs-0.17.3-0
- tar:
local-name: message_generation
uri: https://github.com/ros-gbp/message_generation-release/archive/release/kinetic/message_generation/0.4.0-0.tar.gz
version: message_generation-release-release-kinetic-message_generation-0.4.0-0
- tar:
local-name: message_runtime
uri: https://github.com/ros-gbp/message_runtime-release/archive/release/kinetic/message_runtime/0.4.12-0.tar.gz
version: message_runtime-release-release-kinetic-message_runtime-0.4.12-0
- tar:
local-name: orocos_kinematics_dynamics/orocos_kdl
uri: https://github.com/smits/orocos-kdl-release/archive/release/kinetic/orocos_kdl/1.3.0-0.tar.gz
version: orocos-kdl-release-release-kinetic-orocos_kdl-1.3.0-0
- tar:
local-name: pluginlib
uri: https://github.com/ros-gbp/pluginlib-release/archive/release/kinetic/pluginlib/1.10.2-0.tar.gz
version: pluginlib-release-release-kinetic-pluginlib-1.10.2-0
- tar:
local-name: ros/rosbuild
uri: https://github.com/ros-gbp/ros-release/archive/release/kinetic/rosbuild/1.13.1-0.tar.gz
version: ros-release-release-kinetic-rosbuild-1.13.1-0
- tar:
local-name: ros/rosclean
uri: https://github.com/ros-gbp/ros-release/archive/release/kinetic/rosclean/1.13.1-0.tar.gz
version: ros-release-release-kinetic-rosclean-1.13.1-0
- tar:
local-name: ros/roslang
uri: https://github.com/ros-gbp/ros-release/archive/release/kinetic/roslang/1.13.1-0.tar.gz
version: ros-release-release-kinetic-roslang-1.13.1-0
- tar:
local-name: ros/roslib
uri: https://github.com/ros-gbp/ros-release/archive/release/kinetic/roslib/1.13.1-0.tar.gz
version: ros-release-release-kinetic-roslib-1.13.1-0
- tar:
local-name: ros/rosunit
uri: https://github.com/ros-gbp/ros-release/archive/release/kinetic/rosunit/1.13.1-0.tar.gz
version: ros-release-release-kinetic-rosunit-1.13.1-0
- tar:
local-name: ros_comm/message_filters
uri: https://github.com/ros-gbp/ros_comm-release/archive/release/kinetic/message_filters/1.12.2-0.tar.gz
version: ros_comm-release-release-kinetic-message_filters-1.12.2-0
- tar:
local-name: ros_comm/rosbag
uri: https://github.com/ros-gbp/ros_comm-release/archive/release/kinetic/rosbag/1.12.2-0.tar.gz
version: ros_comm-release-release-kinetic-rosbag-1.12.2-0
- tar:
local-name: ros_comm/rosbag_storage
uri: https://github.com/ros-gbp/ros_comm-release/archive/release/kinetic/rosbag_storage/1.12.2-0.tar.gz
version: ros_comm-release-release-kinetic-rosbag_storage-1.12.2-0
- tar:
local-name: ros_comm/rosconsole
uri: https://github.com/ros-gbp/ros_comm-release/archive/release/kinetic/rosconsole/1.12.2-0.tar.gz
version: ros_comm-release-release-kinetic-rosconsole-1.12.2-0
- tar:
local-name: ros_comm/roscpp
uri: https://github.com/ros-gbp/ros_comm-release/archive/release/kinetic/roscpp/1.12.2-0.tar.gz
version: ros_comm-release-release-kinetic-roscpp-1.12.2-0
- tar:
local-name: ros_comm/rosgraph
uri: https://github.com/ros-gbp/ros_comm-release/archive/release/kinetic/rosgraph/1.12.2-0.tar.gz
version: ros_comm-release-release-kinetic-rosgraph-1.12.2-0
- tar:
local-name: ros_comm/roslaunch
uri: https://github.com/ros-gbp/ros_comm-release/archive/release/kinetic/roslaunch/1.12.2-0.tar.gz
version: ros_comm-release-release-kinetic-roslaunch-1.12.2-0
- tar:
local-name: ros_comm/roslz4
uri: https://github.com/ros-gbp/ros_comm-release/archive/release/kinetic/roslz4/1.12.2-0.tar.gz
version: ros_comm-release-release-kinetic-roslz4-1.12.2-0
- tar:
local-name: ros_comm/rosmaster
uri: https://github.com/ros-gbp/ros_comm-release/archive/release/kinetic/rosmaster/1.12.2-0.tar.gz
version: ros_comm-release-release-kinetic-rosmaster-1.12.2-0
- tar:
local-name: ros_comm/rosnode
uri: https://github.com/ros-gbp/ros_comm-release/archive/release/kinetic/rosnode/1.12.2-0.tar.gz
version: ros_comm-release-release-kinetic-rosnode-1.12.2-0
- tar:
local-name: ros_comm/rosout
uri: https://github.com/ros-gbp/ros_comm-release/archive/release/kinetic/rosout/1.12.2-0.tar.gz
version: ros_comm-release-release-kinetic-rosout-1.12.2-0
- tar:
local-name: ros_comm/rosparam
uri: https://github.com/ros-gbp/ros_comm-release/archive/release/kinetic/rosparam/1.12.2-0.tar.gz
version: ros_comm-release-release-kinetic-rosparam-1.12.2-0
- tar:
local-name: ros_comm/rospy
uri: https://github.com/ros-gbp/ros_comm-release/archive/release/kinetic/rospy/1.12.2-0.tar.gz
version: ros_comm-release-release-kinetic-rospy-1.12.2-0
- tar:
local-name: ros_comm/rostest
uri: https://github.com/ros-gbp/ros_comm-release/archive/release/kinetic/rostest/1.12.2-0.tar.gz
version: ros_comm-release-release-kinetic-rostest-1.12.2-0
- tar:
local-name: ros_comm/rostopic
uri: https://github.com/ros-gbp/ros_comm-release/archive/release/kinetic/rostopic/1.12.2-0.tar.gz
version: ros_comm-release-release-kinetic-rostopic-1.12.2-0
- tar:
local-name: ros_comm/topic_tools
uri: https://github.com/ros-gbp/ros_comm-release/archive/release/kinetic/topic_tools/1.12.2-0.tar.gz
version: ros_comm-release-release-kinetic-topic_tools-1.12.2-0
- tar:
local-name: ros_comm/xmlrpcpp
uri: https://github.com/ros-gbp/ros_comm-release/archive/release/kinetic/xmlrpcpp/1.12.2-0.tar.gz
version: ros_comm-release-release-kinetic-xmlrpcpp-1.12.2-0
- tar:
local-name: ros_comm_msgs/rosgraph_msgs
uri: https://github.com/ros-gbp/ros_comm_msgs-release/archive/release/kinetic/rosgraph_msgs/1.11.2-0.tar.gz
version: ros_comm_msgs-release-release-kinetic-rosgraph_msgs-1.11.2-0
- tar:
local-name: ros_comm_msgs/std_srvs
uri: https://github.com/ros-gbp/ros_comm_msgs-release/archive/release/kinetic/std_srvs/1.11.2-0.tar.gz
version: ros_comm_msgs-release-release-kinetic-std_srvs-1.11.2-0
- tar:
local-name: rosconsole_bridge
uri: https://github.com/ros-gbp/rosconsole_bridge-release/archive/release/kinetic/rosconsole_bridge/0.4.4-0.tar.gz
version: rosconsole_bridge-release-release-kinetic-rosconsole_bridge-0.4.4-0
- tar:
local-name: roscpp_core/cpp_common
uri: https://github.com/ros-gbp/roscpp_core-release/archive/release/kinetic/cpp_common/0.6.0-0.tar.gz
version: roscpp_core-release-release-kinetic-cpp_common-0.6.0-0
- tar:
local-name: roscpp_core/roscpp_serialization
uri: https://github.com/ros-gbp/roscpp_core-release/archive/release/kinetic/roscpp_serialization/0.6.0-0.tar.gz
version: roscpp_core-release-release-kinetic-roscpp_serialization-0.6.0-0
- tar:
local-name: roscpp_core/roscpp_traits
uri: https://github.com/ros-gbp/roscpp_core-release/archive/release/kinetic/roscpp_traits/0.6.0-0.tar.gz
version: roscpp_core-release-release-kinetic-roscpp_traits-0.6.0-0
- tar:
local-name: roscpp_core/rostime
uri: https://github.com/ros-gbp/roscpp_core-release/archive/release/kinetic/rostime/0.6.0-0.tar.gz
version: roscpp_core-release-release-kinetic-rostime-0.6.0-0
- tar:
local-name: rospack
uri: https://github.com/ros-gbp/rospack-release/archive/release/kinetic/rospack/2.3.0-0.tar.gz
version: rospack-release-release-kinetic-rospack-2.3.0-0
- tar:
local-name: std_msgs
uri: https://github.com/ros-gbp/std_msgs-release/archive/release/kinetic/std_msgs/0.5.10-0.tar.gz
version: std_msgs-release-release-kinetic-std_msgs-0.5.10-0

2 changes: 2 additions & 0 deletions mavros/400949c/test.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
#!/bin/bash
echo "missing test"