You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
OS Version: Ubuntu 24.04
rviz version: ros2 jazzy
Compiler name and version number: Ubuntu clang version 18.1.3
Source or binary build?
source build
build options: --mixin asan-gcc
Description:
When calling the ScrewVisual constructor, if either scene_manager or parent_node is nullptr, the program crashes. The constructor does not perform a null pointer check for these input parameters, leading to a null pointer dereference error.
Running main() from gmock_main.cc
[==========] Running 1 test from 1 test suite.
[----------] Global test environment set-up.
[----------] 1 test from ScrewVisualTestFixture
[ RUN ] ScrewVisualTestFixture.HandleNullSceneManagerAndParentNode
[rviz_rendering:debug] Available Renderers(1): OpenGL Rendering Subsystem, at /home/shangzh/ros2_jazzy/src/ros2/rviz/rviz_rendering/src/rviz_rendering/render_system.cpp:289
[rviz_rendering:info] Stereo is NOT SUPPORTED, at /home/shangzh/ros2_jazzy/src/ros2/rviz/rviz_rendering/src/rviz_rendering/render_system.cpp:531
[rviz_rendering:info] OpenGl version: 4.3 (GLSL 4.3), at /home/shangzh/ros2_jazzy/src/ros2/rviz/rviz_rendering/src/rviz_rendering/render_system.cpp:272
AddressSanitizer:DEADLYSIGNAL=================================================================
==551531==ERROR: AddressSanitizer: SEGV on unknown address 0x000000000000 (pc 0x7a96f9bbdf47 bp 0x7ffeea242800 sp 0x7ffeea242700 T0)
==551531==The signal is caused by a READ memory access.
==551531==Hint: address points to the zero page.
#0 0x7a96f9bbdf47 in rviz_rendering::ScrewVisual::ScrewVisual(Ogre::SceneManager*, Ogre::SceneNode*) (/home/shangzh/ros2_jazzy/install/rviz_rendering/lib/librviz_rendering.so+0x3bdf47) (BuildId: cffd3d255d72a7634225ec0bbe57959441c23146)
#1 0x56340d6a9e16 in void std::_Construct<rviz_rendering::ScrewVisual, decltype(nullptr), decltype(nullptr)>(rviz_rendering::ScrewVisual*, decltype(nullptr)&&, decltype(nullptr)&&) (/home/shangzh/ros2_jazzy/build/rviz_rendering/screw_visual_test_target+0x2ae16) (BuildId: 8481e6e1921d95bc91594aac6abeaaea97bb291c)
#2 0x56340d6a9639 in std::_Sp_counted_ptr_inplace<rviz_rendering::ScrewVisual, std::allocator<void>, (__gnu_cxx::_Lock_policy)2>::_Sp_counted_ptr_inplace<decltype(nullptr), decltype(nullptr)>(std::allocator<void>, decltype(nullptr)&&, decltype(nullptr)&&) (/home/shangzh/ros2_jazzy/build/rviz_rendering/screw_visual_test_target+0x2a639) (BuildId: 8481e6e1921d95bc91594aac6abeaaea97bb291c)
#3 0x56340d6a8e52 in std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count<rviz_rendering::ScrewVisual, std::allocator<void>, decltype(nullptr), decltype(nullptr)>(rviz_rendering::ScrewVisual*&, std::_Sp_alloc_shared_tag<std::allocator<void> >, decltype(nullptr)&&, decltype(nullptr)&&) (/home/shangzh/ros2_jazzy/build/rviz_rendering/screw_visual_test_target+0x29e52) (BuildId: 8481e6e1921d95bc91594aac6abeaaea97bb291c)
#4 0x56340d6a8626 in std::__shared_ptr<rviz_rendering::ScrewVisual, (__gnu_cxx::_Lock_policy)2>::__shared_ptr<std::allocator<void>, decltype(nullptr), decltype(nullptr)>(std::_Sp_alloc_shared_tag<std::allocator<void> >, decltype(nullptr)&&, decltype(nullptr)&&) (/home/shangzh/ros2_jazzy/build/rviz_rendering/screw_visual_test_target+0x29626) (BuildId: 8481e6e1921d95bc91594aac6abeaaea97bb291c)
#5 0x56340d6a8125 in std::shared_ptr<rviz_rendering::ScrewVisual>::shared_ptr<std::allocator<void>, decltype(nullptr), decltype(nullptr)>(std::_Sp_alloc_shared_tag<std::allocator<void> >, decltype(nullptr)&&, decltype(nullptr)&&) (/home/shangzh/ros2_jazzy/build/rviz_rendering/screw_visual_test_target+0x29125) (BuildId: 8481e6e1921d95bc91594aac6abeaaea97bb291c)
#6 0x56340d6a74b4 in std::shared_ptr<std::enable_if<!std::is_array<rviz_rendering::ScrewVisual>::value, rviz_rendering::ScrewVisual>::type> std::make_shared<rviz_rendering::ScrewVisual, decltype(nullptr), decltype(nullptr)>(decltype(nullptr)&&, decltype(nullptr)&&) (/home/shangzh/ros2_jazzy/build/rviz_rendering/screw_visual_test_target+0x284b4) (BuildId: 8481e6e1921d95bc91594aac6abeaaea97bb291c)
#7 0x56340d6a4d46 in ScrewVisualTestFixture_HandleNullSceneManagerAndParentNode_Test::TestBody() (/home/shangzh/ros2_jazzy/build/rviz_rendering/screw_visual_test_target+0x25d46) (BuildId: 8481e6e1921d95bc91594aac6abeaaea97bb291c)
#8 0x56340d747e07 in void testing::internal::HandleSehExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) (/home/shangzh/ros2_jazzy/build/rviz_rendering/screw_visual_test_target+0xc8e07) (BuildId: 8481e6e1921d95bc91594aac6abeaaea97bb291c)
#9 0x56340d734f13 in void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) (/home/shangzh/ros2_jazzy/build/rviz_rendering/screw_visual_test_target+0xb5f13) (BuildId: 8481e6e1921d95bc91594aac6abeaaea97bb291c)
#10 0x56340d6da639 in testing::Test::Run() (/home/shangzh/ros2_jazzy/build/rviz_rendering/screw_visual_test_target+0x5b639) (BuildId: 8481e6e1921d95bc91594aac6abeaaea97bb291c)
#11 0x56340d6dbe15 in testing::TestInfo::Run() (/home/shangzh/ros2_jazzy/build/rviz_rendering/screw_visual_test_target+0x5ce15) (BuildId: 8481e6e1921d95bc91594aac6abeaaea97bb291c)
#12 0x56340d6dd16e in testing::TestSuite::Run() (/home/shangzh/ros2_jazzy/build/rviz_rendering/screw_visual_test_target+0x5e16e) (BuildId: 8481e6e1921d95bc91594aac6abeaaea97bb291c)
#13 0x56340d703e99 in testing::internal::UnitTestImpl::RunAllTests() (/home/shangzh/ros2_jazzy/build/rviz_rendering/screw_visual_test_target+0x84e99) (BuildId: 8481e6e1921d95bc91594aac6abeaaea97bb291c)
#14 0x56340d74b262 in bool testing::internal::HandleSehExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) (/home/shangzh/ros2_jazzy/build/rviz_rendering/screw_visual_test_target+0xcc262) (BuildId: 8481e6e1921d95bc91594aac6abeaaea97bb291c)
#15 0x56340d7381b0 in bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) (/home/shangzh/ros2_jazzy/build/rviz_rendering/screw_visual_test_target+0xb91b0) (BuildId: 8481e6e1921d95bc91594aac6abeaaea97bb291c)
#16 0x56340d7004a3 in testing::UnitTest::Run() (/home/shangzh/ros2_jazzy/build/rviz_rendering/screw_visual_test_target+0x814a3) (BuildId: 8481e6e1921d95bc91594aac6abeaaea97bb291c)
#17 0x56340d6aa944 in RUN_ALL_TESTS() (/home/shangzh/ros2_jazzy/build/rviz_rendering/screw_visual_test_target+0x2b944) (BuildId: 8481e6e1921d95bc91594aac6abeaaea97bb291c)
#18 0x56340d6aa890 in main (/home/shangzh/ros2_jazzy/build/rviz_rendering/screw_visual_test_target+0x2b890) (BuildId: 8481e6e1921d95bc91594aac6abeaaea97bb291c)
#19 0x7a96f7a2a1c9 in __libc_start_call_main ../sysdeps/nptl/libc_start_call_main.h:58
#20 0x7a96f7a2a28a in __libc_start_main_impl ../csu/libc-start.c:360
#21 0x56340d6a42b4 in _start (/home/shangzh/ros2_jazzy/build/rviz_rendering/screw_visual_test_target+0x252b4) (BuildId: 8481e6e1921d95bc91594aac6abeaaea97bb291c)
AddressSanitizer can not provide additional info.
SUMMARY: AddressSanitizer: SEGV (/home/shangzh/ros2_jazzy/install/rviz_rendering/lib/librviz_rendering.so+0x3bdf47) (BuildId: cffd3d255d72a7634225ec0bbe57959441c23146) in rviz_rendering::ScrewVisual::ScrewVisual(Ogre::SceneManager*, Ogre::SceneNode*)
==551531==ABORTING
Expected behavior
The constructor should check for null pointers before using scene_manager and parent_node to ensure that the parameters are valid. If either parameter is nullptr, the constructor should return early or throw an appropriate exception to prevent the program from crashing.
Actual behavior
When nullptr is passed as a parameter, the program crashes, typically resulting in a null pointer dereference and undefined behavior.
Operating System:
Linux shangzh-VMware-Virtual-Platform 6.11.0-19-generic #19~24.04.1-Ubuntu SMP PREEMPT_DYNAMIC Mon Feb 17 11:51:52 UTC 2 x86_64 x86_64 x86_64 GNU/Linux
ROS version or commit hash:
ros2 jazzy
RMW implementation (if applicable):
No response
RMW Configuration (if applicable):
No response
Client library (if applicable):
rviz
'ros2 doctor --report' output
ros2 doc --report
Steps to reproduce issue
Environment
OS Version: Ubuntu 24.04
rviz version: ros2 jazzy
Compiler name and version number: Ubuntu clang version 18.1.3
Source or binary build?
source build
build options: --mixin asan-gcc
Description:
When calling the ScrewVisual constructor, if either scene_manager or parent_node is nullptr, the program crashes. The constructor does not perform a null pointer check for these input parameters, leading to a null pointer dereference error.
Test Case
Output
Expected behavior
The constructor should check for null pointers before using scene_manager and parent_node to ensure that the parameters are valid. If either parameter is nullptr, the constructor should return early or throw an appropriate exception to prevent the program from crashing.
Actual behavior
When nullptr is passed as a parameter, the program crashes, typically resulting in a null pointer dereference and undefined behavior.
Additional information
Suggested Fix
Add null pointer checks in the constructor:
The text was updated successfully, but these errors were encountered: