Repository navigation
fix: handle invalid camera frames and preserve Gazebo signal handling - #5
Merged
Merged
Conversation
This was referenced Sep 30, 2026
… patch [skip ci] Reproduce the subscriber churn SIGSEGV using separate processes and compare pinned gz-transport 15.1.0 builds with identical flags. Serialize nonblocking socket polling and wait on OS notification descriptors outside the node mutex. Preserve every failure and first core; verify the loaded library and real deliveries. This commit does not install the candidate into release Dockerfiles or claim final-image acceptance. Explicit manual diagnostics do not enable publication.
Bring current main into the review branch while retaining only the five camera source/build/test changes. Preserve prior commits as history. ARM64 download retry already exists in main; drop duplicate Docker changes and the unrelated overlays, diagnostics and publication automation. Validated with the real posim_interfaces and posim_gz_sensor_plugins package build and five passing camera regression cases on Linux ARM64.
This was referenced Oct 8, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why this fix is still needed
Normal camera demos can run on current
main(109d545e). This patch addresses specific input and initialization cases that a normal startup does not cover:(99, 3)instead of(3, 4)because the row stride is ignored.Unsupported pixel format.The same five isolated regression cases passed 2/5 on unchanged main and 5/5 with the fix. This is not a claim that every camera run crashes.
Changes — camera only, 5 files
Validate frame dimensions, formats, buffer lengths and row stride; wait for compatible depth data; use owned image storage and guard callbacks during teardown. Preserve the enclosing process's signal handler and avoid ROS work after shutdown.
The other changed files register the five camera regression tests through
ament_cmake_gtest. Docker recipes, CI configuration, dependency overlays, image publication and website changes are not part of this PR. The ArduPilot download retry is already in main and is not duplicated.Checks on the retained patch
22184d95.The CI jobs build images; they do not run the full Gazebo runtime matrix, and image publication is disabled for PR events.
Reproduce the package tests
From a sourced Lyrical/Jetty workspace with the dependencies installed:
CMAKE_BUILD_PARALLEL_LEVEL=1 MAKEFLAGS=-j1 \ colcon build --merge-install --executor sequential \ --packages-up-to posim_gz_sensor_plugins \ --cmake-args -DBUILD_TESTING=ON -DCMAKE_BUILD_TYPE=Debug colcon test --merge-install --packages-select posim_gz_sensor_plugins --return-code-on-test-failure colcon test-result --verboseEarlier PR scope and images
The former broad candidate is preserved at 584953b5. Historical
validation-pr5-*images and their runtime results belong to that earlier source, not this camera-only patch.Open for review; not merged.