text:
Std::length_error in running the camera_node

I installed the camera_ros from source. On my attempts to run the node using ros2 jazzy,  I am using a YUYV pixel format with a pi camera 3. Every resolution I try ends up with the node terminating after throwing an instance of 'std::length_error'. The error description saws that it cannot create std::vector larger than max_size().

Is this the same as https://github.com/christianrauch/camera_ros/issues/13?

I have the same problem with the same hardware,
this very likely is #13

Using #15 worked!

this was built inside a container with the command:
docker run -it --network=host -v /dev:/dev/ -v /run/udev/:/run/udev/ --privileged --rm ros:humble bash
using the build instructions

I removed --skip-keys=libcamera,
didn't compile/install any libcamera dependencies or libcamera itself
and ran git branch fix_dynamic_extent

mkdir -p ~/camera_ws/
cd ~/camera_ws/
git clone https://github.com/christianrauch/camera_ros.git src/camera_ros
cd src/camera_ros
git checkout fix_dynamic_extent
cd ../..

apt update
source /opt/ros/humble/setup.bash
rosdep install --from-paths src --ignore-src -y #-y for automatic 'yes'
colcon build

source install/setup.bash
ros2 run camera_ros camera_node

setting no parameters used the NV21 format, resulting in Unrecognized image encoding [nv21]
this is probably because ROS doesn't support that encoding?
Anyway, I also set some other parameters to remove warnings

root@bento-dev:~/camera_ws# ros2 run camera_ros camera_node --ros-args -p format:=XRGB8888 -p width:=1920 -p height:=1080 -p camera:=0
[0:24:41.552822524] [5042]  INFO Camera camera_manager.cpp:284 libcamera v0.1.0
[0:24:41.660784514] [5052]  INFO RPI vc4.cpp:390 Registered camera /base/soc/i2c0mux/i2c@0/imx708@1a to Unicam device /dev/media0 and ISP device /dev/media1
[WARN] [1718294411.663979311] [camera]: stream configuration adjusted from "1920x1080-XRGB8888" to "1920x1080-XRGB8888"
[0:24:41.662344396] [5042]  INFO Camera camera.cpp:1033 configuring streams: (0) 1920x1080-XRGB8888
[0:24:41.662978671] [5052]  INFO RPI vc4.cpp:512 Sensor: /base/soc/i2c0mux/i2c@0/imx708@1a - Selected sensor format: 2304x1296-SBGGR10_1X10 - Selected unicam format: 2304x1296-pBAA
[INFO] [1718294411.666719355] [camera]: camera "/base/soc/i2c0mux/i2c@0/imx708@1a" configured with 1920x1080-XRGB8888 stream
[WARN] [1718294411.669851100] [camera]: control NoiseReductionMode (39) not handled
[0:24:41.692182414] [5059]  WARN IPARPI ipa_base.cpp:1050 Could not set AF_PAUSE - no AF algorithm or not Continuous
[0:24:41.692278487] [5059]  WARN IPARPI ipa_base.cpp:1067 Could not set AF_TRIGGER - no AF algorithm or not Auto
[INFO] [1718294412.140485575] [camera]: using default calibration URL
[INFO] [1718294412.140828647] [camera]: camera calibration URL: file:///root/.ros/camera_info/imx708__base_soc_i2c0mux_i2c_0_imx708_1a_1920x1080.yaml
[ERROR] [1718294412.141129961] [camera_calibration_parsers]: Unable to open camera calibration file [/root/.ros/camera_info/imx708__base_soc_i2c0mux_i2c_0_imx708_1a_1920x1080.yaml]
[WARN] [1718294412.141239905] [camera]: Camera calibration file /root/.ros/camera_info/imx708__base_soc_i2c0mux_i2c_0_imx708_1a_1920x1080.yaml not found
[0:24:42.213161149] [5059]  WARN IPARPI ipa_base.cpp:1050 Could not set AF_PAUSE - no AF algorithm or not Continuous
[0:24:42.213275537] [5059]  WARN IPARPI ipa_base.cpp:1067 Could not set AF_TRIGGER - no AF algorithm or not Auto

Thank you for maintaining this package @christianrauch!
It's the best way to interface Pi cameras with ROS!

Using #15 worked!

Nice. In the other issue it was reported that it causes another issue. Therefore I did not merge it yet.
Could you provide some details on how the AfWindows (the one that causes the issue) plays out in the end? Since I don't own the hardware, I cannot test how the AfWindows is exactly used. The AfWindows is a list of Rectangle, that as far as I understand, defines auto-focus areas in form of a bounding box made out of 4 values per "area".
If AfWindows only contains one Rectangle, then you should be able to get and set the parameter via a list of integers. If there are multiple Rectangle in AfWindows, then we cannot represent this in form of ROS parameters and the node should show a warning.
Could you please check the following:

start the node on the Raspberry Pi
check if the node prints [ERROR] [<timestamp>] [camera]: unsupported control 'AfWindows' (type: Rectangle): ParameterValue only supported for arithmetic types
get the parameter description and value via ros2 param describe /camera AfWindows and ros2 param describe /camera AfWindows (where /camera is the node name)

setting no parameters used the NV21 format, resulting in Unrecognized image encoding [nv21] once a subscriber reads images
this is probably because ROS doesn't support that encoding?

Correct. The encoding exists for the message, but a lot of tools in the ROS ecosystem do not support that encoding.
Could you provide a full log of the terminal output when running the node with the default parameters? Since https://github.com/christianrauch/camera_ros/pull/47, the node should select defaults that match the libcamera defaults when supported by the ROS message. Theoretically, the selected pixel format should be the same as the one selected by the cam example.

Thank you for maintaining this package @christianrauch! It's the best way to interface Pi cameras with ROS!

Thanks :-)

Edit: I just realized libcamera also works on my desktop PC. Well, i guess it's most modern camera software then, even better!

libcamera is quite versatile and aims to support all the "standard webcam" hardware. So I think this is a good replacement for the V4L2 and Raspberry Pi specific libraries.

1&2: The log in my last comment is the entire log, nothing else was written
3: AfWindows seems to contain one rectangle and makes sense
root@frameslap:/bento_ws# ros2 param get /camera AfWindows
Integer values are: array('q', [0, 0, 0, 0])

root@frameslap:/bento_ws# ros2 param describe /camera AfWindows
Parameter name: AfWindows
  Type: integer array
  Description: Rectangle array[] range {(0, 0)/0x0}..{(65535, 65535)/65535x65535} (default: {(0, 0)/0x0})
  Constraints:

I fiddled around with the autofocus, everything seems to work fine
only AfTrigger acts weird, as you need to toggle it for it to work
(send a 1, nothing happens, then send a 0, and it triggers autofocus)

Correct. The encoding exists for the message, but a lot of tools in the ROS ecosystem do not support that encoding.

Thought so :+1:

The entire default log, for good measure:
root@bento-dev:~/camera_ws# ros2 run camera_ros camera_node
[1:53:37.700525972] [3994]  INFO Camera camera_manager.cpp:284 libcamera v0.1.0
[1:53:37.854544722] [4004]  INFO RPI vc4.cpp:390 Registered camera /base/soc/i2c0mux/i2c@0/imx708@1a to Unicam device /dev/media1 and ISP device /dev/media3
[1:53:37.855800148] [4004]  WARN CameraSensorProperties camera_sensor_properties.cpp:249 No static properties available for 'imx708_wide'
[1:53:37.855871813] [4004]  WARN CameraSensorProperties camera_sensor_properties.cpp:251 Please consider updating the camera sensor properties database
[1:53:37.864540517] [4004]  INFO RPI vc4.cpp:390 Registered camera /base/soc/i2c0mux/i2c@1/imx708@1a to Unicam device /dev/media2 and ISP device /dev/media5
[INFO] [1718323520.386056317] [camera]:
>> cameras:
   0: imx708 (/base/soc/i2c0mux/i2c@0/imx708@1a)
   1: imx708_wide (/base/soc/i2c0mux/i2c@1/imx708@1a)
[WARN] [1718323520.386842805] [camera]: no camera selected, using default: "/base/soc/i2c0mux/i2c@0/imx708@1a"
[WARN] [1718323520.386986044] [camera]: set parameter 'camera' to silent this warning
[INFO] [1718323520.387802569] [camera]:
>> stream formats:
   - Pixelformat: NV21 (64x64 - 4608x2592)
   - Pixelformat: XBGR8888 (64x64 - 4608x2592)
   - Pixelformat: BGR888 (64x64 - 4608x2592)
   - Pixelformat: RGB888 (64x64 - 4608x2592)
   - Pixelformat: XRGB8888 (64x64 - 4608x2592)
   - Pixelformat: YUYV (64x64 - 4608x2592)
   - Pixelformat: UYVY (64x64 - 4608x2592)
[WARN] [1718323520.388042695] [camera]: no pixel format selected, using default: "NV21"
[WARN] [1718323520.388119768] [camera]: set parameter 'format' to silent this warning
[INFO] [1718323520.388332783] [camera]:
>> NV21 format sizes:
   - 160x120
   - 240x160
   - 320x240
   - 400x240
   - 480x320
   - 640x360
   - 640x480
   - 720x480
   - 768x480
   - 854x480
   - 720x576
   - 800x600
   - 960x540
   - 1024x576
   - 960x640
   - 1024x600
   - 1024x768
   - 1280x720
   - 1152x864
   - 1280x800
   - 1360x768
   - 1366x768
   - 1440x900
   - 1280x1024
   - 1536x864
   - 1280x1080
   - 1600x900
   - 1400x1050
   - 1680x1050
   - 1600x1200
   - 1920x1080
   - 2048x1080
   - 1920x1200
   - 2160x1080
   - 2048x1152
   - 2560x1080
   - 2048x1536
   - 2560x1440
   - 2560x1600
   - 3840x1080
   - 2960x1440
   - 3440x1440
   - 2560x2048
   - 3200x1800
   - 3840x1600
   - 3200x2048
   - 3200x2400
   - 3840x2160
   - 4096x2160
   - 3840x2400
[WARN] [1718323520.388697778] [camera]: no dimensions selected, auto-selecting: "1920x1080"
[WARN] [1718323520.388751481] [camera]: set parameter 'width' or 'height' to silent this warning
[1:53:37.867970466] [3994]  INFO Camera camera.cpp:1033 configuring streams: (0) 1920x1080-NV21
[1:53:37.869038894] [4004]  INFO RPI vc4.cpp:512 Sensor: /base/soc/i2c0mux/i2c@0/imx708@1a - Selected sensor format: 2304x1296-SBGGR10_1X10 - Selected unicam format: 2304x1296-pBAA
[INFO] [1718323520.391931563] [camera]: camera "/base/soc/i2c0mux/i2c@0/imx708@1a" configured with 1920x1080-NV21 stream
[WARN] [1718323520.394777668] [camera]: control NoiseReductionMode (39) not handled
[1:53:37.888444678] [4013]  WARN IPARPI ipa_base.cpp:1050 Could not set AF_PAUSE - no AF algorithm or not Continuous
[1:53:37.888534658] [4013]  WARN IPARPI ipa_base.cpp:1067 Could not set AF_TRIGGER - no AF algorithm or not Auto
[INFO] [1718323520.831088415] [camera]: using default calibration URL
[INFO] [1718323520.831297931] [camera]: camera calibration URL: file:///root/.ros/camera_info/imx708__base_soc_i2c0mux_i2c_0_imx708_1a_1920x1080.yaml
[ERROR] [1718323520.831643648] [camera_calibration_parsers]: Unable to open camera calibration file [/root/.ros/camera_info/imx708__base_soc_i2c0mux_i2c_0_imx708_1a_1920x1080.yaml]
[WARN] [1718323520.831859108] [camera]: Camera calibration file /root/.ros/camera_info/imx708__base_soc_i2c0mux_i2c_0_imx708_1a_1920x1080.yaml not found
[1:53:38.420992929] [4013]  WARN IPARPI ipa_base.cpp:1050 Could not set AF_PAUSE - no AF algorithm or not Continuous
[1:53:38.421077872] [4013]  WARN IPARPI ipa_base.cpp:1067 Could not set AF_TRIGGER - no AF algorithm or not Auto

Note the Format, 1920x1080-NV21
Interestingly the cam demo takes a different one per default 800x600-XRGB8888:
bento@bento-dev:~ $ cam -c1 --capture=1
[1:57:27.523006513] [21553]  INFO Camera camera_manager.cpp:313 libcamera v0.3.0+49-e76bb1f5
[1:57:27.809698111] [21554]  WARN RPiSdn sdn.cpp:40 Using legacy SDN tuning - please consider moving SDN inside rpi.denoise
[1:57:27.821443546] [21554]  INFO RPI vc4.cpp:400 Registered camera /base/soc/i2c0mux/i2c@0/imx708@1a to Unicam device /dev/media1 and ISP device /dev/media3
[1:57:27.825800925] [21554]  WARN CameraSensorProperties camera_sensor_properties.cpp:274 No static properties available for 'imx708_wide'
[1:57:27.825903979] [21554]  WARN CameraSensorProperties camera_sensor_properties.cpp:276 Please consider updating the camera sensor properties database
[1:57:27.925924234] [21554]  WARN RPiSdn sdn.cpp:40 Using legacy SDN tuning - please consider moving SDN inside rpi.denoise
[1:57:27.933452084] [21554]  INFO RPI vc4.cpp:400 Registered camera /base/soc/i2c0mux/i2c@1/imx708@1a to Unicam device /dev/media2 and ISP device /dev/media5
Using camera /base/soc/i2c0mux/i2c@0/imx708@1a as cam0
[1:57:27.936054990] [21553]  INFO Camera camera.cpp:1183 configuring streams: (0) 800x600-XRGB8888
[1:57:27.937278286] [21554]  INFO RPI vc4.cpp:569 Sensor: /base/soc/i2c0mux/i2c@0/imx708@1a - Selected sensor format: 1536x864-SBGGR10_1X10 - Selected unicam format: 1536x864-pBAA
cam0: Capture 1 frames
7048.315389 (0.00 fps) cam0-stream0 seq: 000007 bytesused: 1920000

About the error:
I found out the isArray_ error comes from building libcamera yourself.
If I use the ros-humble-libcamera package it works just fine, no error.
If I compile camera_ros with ros-humble-libcamera (and then uninstall it and compile libcamera) and run it with self-compiled libcamera it also shows the error.
I tried this with the latest libcamera source, and with 0.1.0, both behaved the same.

libcamera is quite versatile and aims to support all the "standard webcam" hardware. So I think this is a good replacement for the V4L2 and Raspberry Pi specific libraries.

Definitely! There's somewhat of a revolution happening in the linux-camera world.
Pipewire is planning having camera support / already has it.
And V4L2 cameras that needed binary blobs are being replaced with open-source libcamera drivers.

Hi this may be an ignorant question, but I am trying to install the ros-jazzy-libcamera because rosdep tells me that the package exists. I cannot seem to get the system to find the package, nor can I find any documentation for it. I am running Ubuntu 24.04 with ros jazzy. Any tips?

Trying to untie some of the issues here:

The entire default log, for good measure:
root@bento-dev:~/camera_ws# ros2 run camera_ros camera_node
[1:53:37.700525972] [3994]  INFO Camera camera_manager.cpp:284 libcamera v0.1.0
[1:53:37.854544722] [4004]  INFO RPI vc4.cpp:390 Registered camera /base/soc/i2c0mux/i2c@0/imx708@1a to Unicam device /dev/media1 and ISP device /dev/media3
[1:53:37.855800148] [4004]  WARN CameraSensorProperties camera_sensor_properties.cpp:249 No static properties available for 'imx708_wide'
[1:53:37.855871813] [4004]  WARN CameraSensorProperties camera_sensor_properties.cpp:251 Please consider updating the camera sensor properties database
[1:53:37.864540517] [4004]  INFO RPI vc4.cpp:390 Registered camera /base/soc/i2c0mux/i2c@1/imx708@1a to Unicam device /dev/media2 and ISP device /dev/media5
[...]
[1:53:37.867970466] [3994]  INFO Camera camera.cpp:1033 configuring streams: (0) 1920x1080-NV21
[1:53:37.869038894] [4004]  INFO RPI vc4.cpp:512 Sensor: /base/soc/i2c0mux/i2c@0/imx708@1a - Selected sensor format: 2304x1296-SBGGR10_1X10 - Selected unicam format: 2304x1296-pBAA
[INFO] [1718323520.391931563] [camera]: camera "/base/soc/i2c0mux/i2c@0/imx708@1a" configured with 1920x1080-NV21 stream
[...]

Note the Format, 1920x1080-NV21 Interestingly the cam demo takes a different one per default 800x600-XRGB8888:
bento@bento-dev:~ $ cam -c1 --capture=1
[1:57:27.523006513] [21553]  INFO Camera camera_manager.cpp:313 libcamera v0.3.0+49-e76bb1f5
[...]
Using camera /base/soc/i2c0mux/i2c@0/imx708@1a as cam0
[1:57:27.936054990] [21553]  INFO Camera camera.cpp:1183 configuring streams: (0) 800x600-XRGB8888
[1:57:27.937278286] [21554]  INFO RPI vc4.cpp:569 Sensor: /base/soc/i2c0mux/i2c@0/imx708@1a - Selected sensor format: 1536x864-SBGGR10_1X10 - Selected unicam format: 1536x864-pBAA
cam0: Capture 1 frames
7048.315389 (0.00 fps) cam0-stream0 seq: 000007 bytesused: 1920000

With https://github.com/christianrauch/camera_ros/pull/47 this should not happen. But previously, these commits were not in the PR for the dynamic extends (https://github.com/christianrauch/camera_ros/pull/15). I rebased the PR recently. Can you update the remote branches, hard-reset on the updated remote branch for fix_dynamic_extent, and then try this again?

About the error:
I found out the isArray_ error comes from building libcamera yourself. If I use the ros-humble-libcamera package it works just fine, no error.
If I compile camera_ros with ros-humble-libcamera (and then uninstall it and compile libcamera) and run it with self-compiled libcamera it also shows the error. I tried this with the latest libcamera source, and with 0.1.0 and 0.2.0, all behaved the same.

So you are saying that the Assertion 'isArray_' failed error that was reported in the other issue does not occur with the binary ros-humble-libcamera (version 0.1), but only happens when building versions 0.1 and 0.2 from source?

Hi this may be an ignorant question, but I am trying to install the ros-jazzy-libcamera because rosdep tells me that the package exists. I cannot seem to get the system to find the package, nor can I find any documentation for it. I am running Ubuntu 24.04 with ros jazzy. Any tips?

The bloomed libcamera version is in the "testing" repositories (https://docs.ros.org/en/jazzy/Installation/Testing.html). The rosdep index seems to be updated before the packages are actually released to "stable".
You can either use the "testing" repository to use the ros-jazzy-libcamera (version 0.3) right now or you have to wait for the next jazzy sync when the "testing" packages will move to "stable".

Can you update the remote branches, hard-reset on the updated remote branch for fix_dynamic_extent, and then try this again?

I did all of this yesterday, the latest commit in fix_dynamic_extent was 2 weeks ago
→ nothing changed when I updated just now! :P
I also tried using 6a68576 (checked out to it), it too starts a 1920x1080-NV21 stream

So you are saying that the Assertion 'isArray_' failed error that was reported in the other issue does not occur with the binary ros-humble-libcamera (version 0.1), but only happens when building versions 0.1 and 0.2 from source?

Exactly. this issue is persistent across all libcamera versions, not only 0.1.0 and 0.2.0.
Every from-source build causes the error.
I just tried it on jazzy with the testing repo and ros-jazzy-libcamera
it compiles and runs just fine, running on libcamera 0.3.0
It also does a 1920x1080-NV21 stream per default :/
root@bento-dev:/camera_ws# ros2 run camera_ros camera_node
[6:00:30.598025078] [4625]  INFO Camera camera_manager.cpp:313 libcamera v0.3.0
[6:00:30.748962703] [4640]  WARN RPiSdn sdn.cpp:40 Using legacy SDN tuning - please consider moving SDN inside rpi.denoise
[6:00:30.751851532] [4640]  INFO RPI vc4.cpp:400 Registered camera /base/soc/i2c0mux/i2c@0/imx708@1a to Unicam device /dev/media4 and ISP device /dev/media1
[6:00:30.752833092] [4640]  WARN CameraSensorProperties camera_sensor_properties.cpp:274 No static properties available for 'imx708_wide'
[6:00:30.752885573] [4640]  WARN CameraSensorProperties camera_sensor_properties.cpp:276 Please consider updating the camera sensor properties database
[6:00:30.762190940] [4640]  WARN RPiSdn sdn.cpp:40 Using legacy SDN tuning - please consider moving SDN inside rpi.denoise
[6:00:30.764633572] [4640]  INFO RPI vc4.cpp:400 Registered camera /base/soc/i2c0mux/i2c@1/imx708@1a to Unicam device /dev/media5 and ISP device /dev/media3
[INFO] [1718347963.455339498] [camera]:
>> cameras:
   0: imx708 (/base/soc/i2c0mux/i2c@0/imx708@1a)
   1: imx708_wide (/base/soc/i2c0mux/i2c@1/imx708@1a)
[WARN] [1718347963.455850528] [camera]: no camera selected, using default: "/base/soc/i2c0mux/i2c@0/imx708@1a"
[WARN] [1718347963.455905805] [camera]: set parameter 'camera' to silent this warning
[INFO] [1718347963.456957235] [camera]:
>> stream formats:
   - Pixelformat: NV21 (64x64 - 4608x2592)
   - Pixelformat: XBGR8888 (64x64 - 4608x2592)
   - Pixelformat: BGR888 (64x64 - 4608x2592)
   - Pixelformat: RGB888 (64x64 - 4608x2592)
   - Pixelformat: XRGB8888 (64x64 - 4608x2592)
   - Pixelformat: YUYV (64x64 - 4608x2592)
   - Pixelformat: UYVY (64x64 - 4608x2592)
[WARN] [1718347963.457257527] [camera]: no pixel format selected, using default: "NV21"
[WARN] [1718347963.457331896] [camera]: set parameter 'format' to silent this warning
[INFO] [1718347963.457832444] [camera]:
>> NV21 format sizes:
   - 160x120
   - 240x160
   - 320x240
   - 400x240
   - 480x320
   - 640x360
   - 640x480
   - 720x480
   - 768x480
   - 854x480
   - 720x576
   - 800x600
   - 960x540
   - 1024x576
   - 960x640
   - 1024x600
   - 1024x768
   - 1280x720
   - 1152x864
   - 1280x800
   - 1360x768
   - 1366x768
   - 1440x900
   - 1280x1024
   - 1536x864
   - 1280x1080
   - 1600x900
   - 1400x1050
   - 1680x1050
   - 1600x1200
   - 1920x1080
   - 2048x1080
   - 1920x1200
   - 2160x1080
   - 2048x1152
   - 2560x1080
   - 2048x1536
   - 2560x1440
   - 2560x1600
   - 3840x1080
   - 2960x1440
   - 3440x1440
   - 2560x2048
   - 3200x1800
   - 3840x1600
   - 3200x2048
   - 3200x2400
   - 3840x2160
   - 4096x2160
   - 3840x2400
[WARN] [1718347963.458043997] [camera]: no dimensions selected, auto-selecting: "1920x1080"
[WARN] [1718347963.458091644] [camera]: set parameter 'width' or 'height' to silent this warning
[6:00:30.768202002] [4625]  INFO Camera camera.cpp:1183 configuring streams: (0) 1920x1080-NV21
[6:00:30.769263413] [4640]  INFO RPI vc4.cpp:569 Sensor: /base/soc/i2c0mux/i2c@0/imx708@1a - Selected sensor format: 2304x1296-SBGGR10_1X10 - Selected unicam format: 2304x1296-pBAA
[INFO] [1718347963.461402727] [camera]: camera "/base/soc/i2c0mux/i2c@0/imx708@1a" configured with 1920x1080-NV21 stream
[WARN] [1718347963.464597737] [camera]: control NoiseReductionMode (10002) not handled
[6:00:30.786225227] [4649]  WARN IPARPI ipa_base.cpp:1166 Could not set AF_TRIGGER - no AF algorithm or not Auto
[6:00:30.786499130] [4649]  WARN IPARPI ipa_base.cpp:1149 Could not set AF_PAUSE - no AF algorithm or not Continuous
[INFO] [1718347963.907671899] [camera]: using default calibration URL
[INFO] [1718347963.907864230] [camera]: camera calibration URL: file:///root/.ros/camera_info/imx708__base_soc_i2c0mux_i2c_0_imx708_1a_1920x1080.yaml
[ERROR] [1718347963.908123300] [camera_calibration_parsers]: Unable to open camera calibration file [/root/.ros/camera_info/imx708__base_soc_i2c0mux_i2c_0_imx708_1a_1920x1080.yaml]
[WARN] [1718347963.908307871] [camera]: Camera calibration file /root/.ros/camera_info/imx708__base_soc_i2c0mux_i2c_0_imx708_1a_1920x1080.yaml not found
[6:00:31.323487990] [4649]  WARN IPARPI ipa_base.cpp:1166 Could not set AF_TRIGGER - no AF algorithm or not Auto
[6:00:31.323689728] [4649]  WARN IPARPI ipa_base.cpp:1149 Could not set AF_PAUSE - no AF algorithm or not Continuous

I just tried using a different camera that works off of the main branch
It too defaulted to 1920x1080-NV21

Independent of the default settings:
@ethanblaylock and @snaens Can you confirm that https://github.com/christianrauch/camera_ros/pull/15 fixes the exception cannot create std::vector larger than max_size()?

I can confirm:

#15 consistently functions correctly if using prepackaged libcamera (ros-xxx-libcamera), and results in Assertion 'isArray_' failed. error when using self-compiled libcamera.

#15 consistently fixes cannot create std::vector larger than max_size()

everything was tested on ros humble and jazzy-testing

I believe I also found the cause for the Assertion !isArray_' failed. This was caused by a less/greater comparison of a scalar with an array in the specific case when the AfWindowscontrol contains a list with a singleRectangle(e.g.std::array<libcamera::Rectangle, 1>) instead of simply a Rectangle`. This is now implemented in the latest commit of the PR.
@snaens Could you please check again with the latest https://github.com/christianrauch/camera_ros/pull/15 that the isArray_ assertion is not triggered on any of the libcamera versions from source?

Nope, that wasn't it.
The latest commit changes nothing.
I found out what the problem is though :D

I traced the isArray_ error back to it's source.
It's a missing flag that tells libcamera if the control is an Array!
Libcamera expects this flag, and errors out if it is missing.
https://github.com/raspberrypi/libcamera/blob/main/include/libcamera/controls.h#L167
However it only does this when compiled in 'development' release,
as that's what assert does!

ros-xxx-libcamera is compiled as a release
→ assert() does nothing → no error!

So there's 2 fixes:

The first (temporary) one would be for everyone to compile libcamera as release
 meson setup -Dbuildtype=release build
The second (proper) would be to set the isArray_ flag in the parameters map,
at the defaults setup and the parameter callback.

Demo:

Changing values via debugger (isArray_: false → true)

This function contains the troublesome assert(), but the isArray_ value is correct now

Libcamera expects this flag, and errors out if it is missing.
https://github.com/raspberrypi/libcamera/blob/main/include/libcamera/controls.h#L167
However it only does this when compiled in 'development' release,
as that's what assert does!

I am kind of embarrassed that I did not see this myself :-) Of course, the assert will compiled out in release mode. The assert should trigger in debug mode, when compiled manually with the defaults, on any version of libcamera.

I traced the isArray_ error back to it's source.
It's a missing flag that tells libcamera if the control is an Array!

The isArray_ flag is nothing that should be changed by the user. The assert there should just make sure that, when this template specialisation with details::is_span<T>::value (i.e. the control is a span/list/array) is used, the isArray_ is also true. Otherwise, something in between would have altered the type of the control.
Forcing the isArray_ flag to some value does not solve the underlying issue.
I assume you get the same assert with 0.3 when compiled from source in debug mode. I found one case where that assert was triggered in 0.3 when I used a Span with a single element. I can see from your screenshots where the assert is generated. But I still cannot reproduce this by faking the controls on my side. Can you see where this ctrl is generated and what its type is?

Hi, sorry for taking so long, just had a bad few last days.

I found out that this line was where the incorrect values originated.
I believe this is from a somehow non-erroring type mismatch.
onParameterChange expects a libcamera::ControlValue,
but pv_to_cv_int_array, which is called by pv_to_cv, returns a libcamera::Rectangle

As a test I changed the return type to libcamera::Span by changing these lines to this:
[...]
  case libcamera::ControlTypeInteger64:
  case libcamera::ControlTypeRectangle:
    return {libcamera::Span<const CTInteger64>(values)};
[...]

This circumvents the error, and the Node then works fine.

Having what seems to be the wrong type explains why the parameter value wasn't set to an array.
It's values were Jibberish :P

I found out that this line was where the incorrect values originated.
I believe this is from a somehow non-erroring type mismatch. onParameterChange expects a libcamera::ControlValue, but pv_to_cv_int_array, which is called by pv_to_cv, returns a libcamera::Rectangle

A libcamera::ControlValue can hold scalar or array values of any type in the libcamera::ControlType enum. Amongst others, it can hold a libcamera::Rectangle (type ControlTypeRectangle) or libcamera::Span<libcamera::Rectangle, Extent>.
The section https://github.com/christianrauch/camera_ros/blob/82b86b243dedaba7b871393619d87492f94c7fda/src/pv_to_cv.cpp#L22-L23 you highlighted in pv_to_cv_int_array thus constructs a libcamera::ControlValue from a libcamera::Rectangle, which itself is constructed from 4 integers of an integer array.
So far, this behaviour is correct and the compiler would have complained if the construction/conversion is not possible. E.g. if you try to store a string in a ControlValue, you will get something like error: could not convert ‘{"I am a string."}’ from ‘<brace-enclosed initializer list>’ to ‘libcamera::ControlValue’.
However, I think you are on the right track here.
The ROS 2 parameters only support POD (Plain Old Data) types, strings and array versions thereof. But libcamera allows more complex data types, such as Rectangle and Size and Span<> of these, which cannot be directly mapped to the ROS 2 parameters. However, we can serialise/deserialise some of them, e.g. 4 ints to/from Rectangle and 2 ints to/from Size. This should work if a libcamera::Control holds a single type, such as the Control<Rectangle> ScalerCrop. However, this does not work for a list of unknown size, such as Control<Span<const Rectangle>> AfWindows.

As a test I changed the return type to libcamera::Span by changing these lines to this:
[...]
  case libcamera::ControlTypeInteger64:
  case libcamera::ControlTypeRectangle:
    return {libcamera::Span<const CTInteger64>(values)};
[...]

This circumvents the error, and the Node then works fine.

In https://github.com/christianrauch/camera_ros/blob/82b86b243dedaba7b871393619d87492f94c7fda/src/pv_to_cv.cpp#L22-L23 we try to deserialise 4 integers back into a Rectangle. What you propose instead is to skip this and return the raw integer values instead. That means, setting the parameter via:
ros2 param set /camera AfWindows "[10, 10, 50, 50]"

will result in:
Setting parameter failed: AfWindows: parameter types mismatch, expected 'Rectangle', got 'Integer64'

I think that the underlying problem is that if the ControlId is ControlTypeRectangle, we do not know if we should serialise to a Rectangle or a Span<Rectangle, 1> (i.e. a list with a single element). And here we are returning a Rectangle while later parts of the stack that consume the ControlValue may assume this to be a Span<Rectangle, 1>. In extract_value
https://github.com/christianrauch/camera_ros/blob/c640c5fa7cf98d1dac66193ea3b87efadf14efad/src/cv_to_pv.cpp#L23-L34
single types are converted into a single-element array and in https://github.com/christianrauch/camera_ros/blob/c640c5fa7cf98d1dac66193ea3b87efadf14efad/src/cv_to_pv.cpp#L84-L86 we convert single-element arrays into scalar representations, e.g. a std::vector<Rectangle> of size 1 into a Rectangle. This information is lost, hence we can later not recover the original type.
As I cannot reproduce this and debug properly, it is still not clear where this issue originates and where the assertion occurs. Could you please run the node with the full debug information from libcamera and the ROS node in gdb and generate the backtrace:
LIBCAMERA_LOG_LEVELS=*:DEBUG ros2 run --prefix 'gdb -ex run --args' camera_ros camera_node --ros-args --log-level camera:=debug

and then paste the full log here?

Full log:
root@bento-dev:/camera_ws# LIBCAMERA_LOG_LEVELS=*:DEBUG ros2 run --prefix 'gdb -ex run --args' camera_ros camera_node --ros-args --log-level camera:=debug
GNU gdb (Ubuntu 12.1-0ubuntu1~22.04.2) 12.1
Copyright (C) 2022 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "aarch64-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<https://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
    <http://www.gnu.org/software/gdb/documentation/>.

For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from /camera_ws/install/camera_ros/lib/camera_ros/camera_node...
(No debugging symbols found in /camera_ws/install/camera_ros/lib/camera_ros/camera_node)
Starting program: /camera_ws/install/camera_ros/lib/camera_ros/camera_node --ros-args --log-level camera:=debug
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/aarch64-linux-gnu/libthread_db.so.1".
[New Thread 0x7ff671e8e0 (LWP 6964)]
[New Thread 0x7feb86e8e0 (LWP 6965)]
[New Thread 0x7feb05e8e0 (LWP 6966)]
[New Thread 0x7fea84e8e0 (LWP 6967)]
[New Thread 0x7fe9fb78e0 (LWP 6968)]
[New Thread 0x7fe97a78e0 (LWP 6969)]
[New Thread 0x7fe8f978e0 (LWP 6970)]
[New Thread 0x7fe3ffe8e0 (LWP 6971)]
[New Thread 0x7fe37ee8e0 (LWP 6972)]
[New Thread 0x7fe2fde8e0 (LWP 6973)]
[New Thread 0x7fe27ce8e0 (LWP 6974)]
[0:53:34.188891857] [6962] DEBUG IPAModule ipa_module.cpp:334 ipa_rkisp1.so: IPA module /usr/local/lib/aarch64-linux-gnu/libcamera/ipa_rkisp1.so is signed
[0:53:34.189352612] [6962] DEBUG IPAManager ipa_manager.cpp:245 Loaded IPA module '/usr/local/lib/aarch64-linux-gnu/libcamera/ipa_rkisp1.so'
[0:53:34.191115612] [6962] DEBUG IPAModule ipa_module.cpp:334 ipa_rpi_vc4.so: IPA module /usr/local/lib/aarch64-linux-gnu/libcamera/ipa_rpi_vc4.so is signed
[0:53:34.191319388] [6962] DEBUG IPAManager ipa_manager.cpp:245 Loaded IPA module '/usr/local/lib/aarch64-linux-gnu/libcamera/ipa_rpi_vc4.so'
[0:53:34.191623755] [6962] DEBUG IPAModule ipa_module.cpp:334 ipa_soft_simple.so: IPA module /usr/local/lib/aarch64-linux-gnu/libcamera/ipa_soft_simple.so is signed
[0:53:34.191720550] [6962] DEBUG IPAManager ipa_manager.cpp:245 Loaded IPA module '/usr/local/lib/aarch64-linux-gnu/libcamera/ipa_soft_simple.so'
[0:53:34.261251323] [6962]  INFO Camera camera_manager.cpp:313 libcamera v0.3.0+117-e3310749
[New Thread 0x7fe1fbe8e0 (LWP 6975)]
[0:53:34.262507772] [6975] DEBUG Camera camera_manager.cpp:69 Starting camera manager
[0:53:34.269463478] [6975] DEBUG DeviceEnumerator device_enumerator.cpp:230 New media device "rpivid" created from /dev/media2
[0:53:34.270030990] [6975] DEBUG DeviceEnumerator device_enumerator_udev.cpp:96 Defer media device /dev/media2 due to 1 missing dependencies
[0:53:34.271093720] [6975] DEBUG DeviceEnumerator device_enumerator_udev.cpp:322 All dependencies for media device /dev/media2 found
[0:53:34.271214515] [6975] DEBUG DeviceEnumerator device_enumerator.cpp:258 Added device /dev/media2: rpivid
[0:53:34.272392539] [6975] DEBUG DeviceEnumerator device_enumerator.cpp:230 New media device "bcm2835-codec" created from /dev/media5
[0:53:34.272600519] [6975] DEBUG DeviceEnumerator device_enumerator_udev.cpp:96 Defer media device /dev/media5 due to 5 missing dependencies
[0:53:34.274269353] [6975] DEBUG DeviceEnumerator device_enumerator_udev.cpp:322 All dependencies for media device /dev/media5 found
[0:53:34.274387611] [6975] DEBUG DeviceEnumerator device_enumerator.cpp:258 Added device /dev/media5: bcm2835-codec
[0:53:34.274996049] [6975] DEBUG DeviceEnumerator device_enumerator.cpp:230 New media device "bcm2835-isp" created from /dev/media0
[0:53:34.275165973] [6975] DEBUG DeviceEnumerator device_enumerator_udev.cpp:96 Defer media device /dev/media0 due to 4 missing dependencies
[0:53:34.275724301] [6975] DEBUG DeviceEnumerator device_enumerator.cpp:230 New media device "bcm2835-isp" created from /dev/media1
[0:53:34.275878373] [6975] DEBUG DeviceEnumerator device_enumerator_udev.cpp:96 Defer media device /dev/media1 due to 4 missing dependencies
[0:53:34.277286692] [6975] DEBUG DeviceEnumerator device_enumerator_udev.cpp:322 All dependencies for media device /dev/media0 found
[0:53:34.277400394] [6975] DEBUG DeviceEnumerator device_enumerator.cpp:258 Added device /dev/media0: bcm2835-isp
[0:53:34.278728029] [6975] DEBUG DeviceEnumerator device_enumerator_udev.cpp:322 All dependencies for media device /dev/media1 found
[0:53:34.278833972] [6975] DEBUG DeviceEnumerator device_enumerator.cpp:258 Added device /dev/media1: bcm2835-isp
[0:53:34.279644149] [6975] DEBUG DeviceEnumerator device_enumerator.cpp:230 New media device "unicam" created from /dev/media3
[0:53:34.279782092] [6975] DEBUG DeviceEnumerator device_enumerator.cpp:258 Added device /dev/media3: unicam
[0:53:34.280270457] [6975] DEBUG DeviceEnumerator device_enumerator.cpp:230 New media device "unicam" created from /dev/media4
[0:53:34.280992746] [6975] DEBUG DeviceEnumerator device_enumerator_udev.cpp:96 Defer media device /dev/media4 due to 2 missing dependencies
[0:53:34.281817052] [6975] DEBUG DeviceEnumerator device_enumerator_udev.cpp:322 All dependencies for media device /dev/media4 found
[0:53:34.281921884] [6975] DEBUG DeviceEnumerator device_enumerator.cpp:258 Added device /dev/media4: unicam
[0:53:34.282723931] [6975] DEBUG Camera camera_manager.cpp:134 Found registered pipeline handler 'imx8-isi'
[0:53:34.283786235] [6975] DEBUG Camera camera_manager.cpp:134 Found registered pipeline handler 'mali-c55'
[0:53:34.284264286] [6975] DEBUG Camera camera_manager.cpp:134 Found registered pipeline handler 'rkisp1'
[0:53:34.284840057] [6975] DEBUG Camera camera_manager.cpp:134 Found registered pipeline handler 'rpi/vc4'
[0:53:34.285102573] [6975] DEBUG DeviceEnumerator device_enumerator.cpp:318 Successful match for media device "unicam"
[0:53:34.285279090] [6975] DEBUG DeviceEnumerator device_enumerator.cpp:318 Successful match for media device "bcm2835-isp"
[0:53:34.285374441] [6975] DEBUG DeviceEnumerator device_enumerator.cpp:318 Successful match for media device "unicam"
[0:53:34.285441662] [6975] DEBUG DeviceEnumerator device_enumerator.cpp:318 Successful match for media device "bcm2835-isp"
[0:53:34.286218043] [6975] DEBUG DmaBufAllocator dma_buf_allocator.cpp:109 Using /dev/dma_heap/linux,cma
[0:53:34.287195977] [6975] DEBUG V4L2 v4l2_device.cpp:636 'imx708': Control: Exposure (0x00980911)
[0:53:34.288194948] [6975] DEBUG V4L2 v4l2_device.cpp:636 'imx708': Control: Horizontal Flip (0x00980914)
[0:53:34.288460186] [6975] DEBUG V4L2 v4l2_device.cpp:636 'imx708': Control: Vertical Flip (0x00980915)
[0:53:34.288597537] [6975] DEBUG V4L2 v4l2_device.cpp:636 'imx708': Control: Wide Dynamic Range (0x009a0915)
[0:53:34.288712943] [6975] DEBUG V4L2 v4l2_device.cpp:636 'imx708': Control: Camera Orientation (0x009a0922)
[0:53:34.289105698] [6975] DEBUG V4L2 v4l2_device.cpp:636 'imx708': Control: Camera Sensor Rotation (0x009a0923)
[0:53:34.289287381] [6975] DEBUG V4L2 v4l2_device.cpp:636 'imx708': Control: Vertical Blanking (0x009e0901)
[0:53:34.289373529] [6975] DEBUG V4L2 v4l2_device.cpp:636 'imx708': Control: Horizontal Blanking (0x009e0902)
[0:53:34.289457120] [6975] DEBUG V4L2 v4l2_device.cpp:636 'imx708': Control: Analogue Gain (0x009e0903)
[0:53:34.289549027] [6975] DEBUG V4L2 v4l2_device.cpp:636 'imx708': Control: Red Pixel Value (0x009e0904)
[0:53:34.289658896] [6975] DEBUG V4L2 v4l2_device.cpp:636 'imx708': Control: Green (Red) Pixel Value (0x009e0905)
[0:53:34.289774524] [6975] DEBUG V4L2 v4l2_device.cpp:636 'imx708': Control: Blue Pixel Value (0x009e0906)
[0:53:34.289866838] [6975] DEBUG V4L2 v4l2_device.cpp:636 'imx708': Control: Green (Blue) Pixel Value (0x009e0907)
[0:53:34.289947837] [6975] DEBUG V4L2 v4l2_device.cpp:636 'imx708': Control: Notify Gains (0x009e0909)
[0:53:34.290081836] [6975] DEBUG V4L2 v4l2_device.cpp:636 'imx708': Control: Link Frequency (0x009f0901)
[0:53:34.290223242] [6975] DEBUG V4L2 v4l2_device.cpp:636 'imx708': Control: Pixel Rate (0x009f0902)
[0:53:34.290353926] [6975] DEBUG V4L2 v4l2_device.cpp:636 'imx708': Control: Test Pattern (0x009f0903)
[0:53:34.290526424] [6975] DEBUG V4L2 v4l2_device.cpp:636 'imx708': Control: Digital Gain (0x009f0905)
[0:53:34.385719465] [6975] DEBUG V4L2 v4l2_device.cpp:636 'dw9807 10-000c': Control: Focus, Absolute (0x009a090a)
[0:53:34.388578232] [6975] DEBUG CameraSensor camera_sensor.cpp:1187 'imx708': Apply test pattern mode 0
[0:53:34.473569898] [6975] DEBUG IPAManager ipa_manager.cpp:316 IPA module /usr/local/lib/aarch64-linux-gnu/libcamera/ipa_rpi_vc4.so signature is valid
[0:53:34.474801071] [6975] DEBUG IPAProxy raspberrypi_ipa_proxy.cpp:45 initializing raspberrypi proxy: loading IPA from /usr/local/lib/aarch64-linux-gnu/libcamera/ipa_rpi_vc4.so
[0:53:35.216459535] [6975] DEBUG RPiBlackLevel black_level.cpp:41  Read black levels red 4096 green 4096 blue 4096
[0:53:35.217104899] [6975]  WARN RPiSdn sdn.cpp:40 Using legacy SDN tuning - please consider moving SDN inside rpi.denoise
[New Thread 0x7fe17ae8e0 (LWP 6976)]
[0:53:35.219508429] [6975] DEBUG RPiAgc agc.cpp:49 Read AGC channel
[0:53:35.219892851] [6975] DEBUG RPiAgc agc_channel.cpp:219 AgcConfig
[0:53:35.222108828] [6975] DEBUG RPiAgc agc.cpp:49 Read AGC channel
[0:53:35.222502287] [6975] DEBUG RPiAgc agc_channel.cpp:219 AgcConfig
[0:53:35.223220983] [6975] DEBUG RPiAgc agc.cpp:49 Read AGC channel
[0:53:35.223378945] [6975] DEBUG RPiAgc agc_channel.cpp:219 AgcConfig
[0:53:35.224038345] [6975] DEBUG RPiAgc agc.cpp:56 Read 3 channel(s)
[New Thread 0x7fe0f9e8e0 (LWP 6977)]
[0:53:35.226000269] [6975] DEBUG RPiAlsc alsc.cpp:139 Read calibrations_Cr calibration for ct 3000
[0:53:35.226394672] [6975] DEBUG RPiAlsc alsc.cpp:139 Read calibrations_Cr calibration for ct 5000
[0:53:35.226700799] [6975] DEBUG RPiAlsc alsc.cpp:139 Read calibrations_Cb calibration for ct 3000
[0:53:35.226989481] [6975] DEBUG RPiAlsc alsc.cpp:139 Read calibrations_Cb calibration for ct 5000
[0:53:35.227625771] [6975] DEBUG RPiSharpen sharpen.cpp:45 Read threshold 1 strength 1 limit 1
[0:53:35.231636432] [6975] DEBUG RPiDelayedControls delayed_controls.cpp:103 Set a delay of 3 and priority write flag 1 for Vertical Blanking
[0:53:35.231880689] [6975] DEBUG RPiDelayedControls delayed_controls.cpp:103 Set a delay of 3 and priority write flag 0 for Horizontal Blanking
[0:53:35.231963762] [6975] DEBUG RPiDelayedControls delayed_controls.cpp:103 Set a delay of 2 and priority write flag 0 for Exposure
[0:53:35.232058224] [6975] DEBUG RPiDelayedControls delayed_controls.cpp:103 Set a delay of 2 and priority write flag 0 for Analogue Gain
[0:53:35.233966260] [6975] DEBUG V4L2 v4l2_videodevice.cpp:632 /dev/video0[30:cap]: Opened device platform:fe801000.csi: unicam: unicam
[0:53:35.235041397] [6975] DEBUG V4L2 v4l2_videodevice.cpp:632 /dev/video1[31:cap]: Opened device platform:fe801000.csi: unicam: unicam
[0:53:35.235279061] [6975] DEBUG V4L2 v4l2_device.cpp:636 /dev/video20[32:cap]: Control: Red Balance (0x0098090e)
[0:53:35.235518318] [6975] DEBUG V4L2 v4l2_device.cpp:636 /dev/video20[32:cap]: Control: Blue Balance (0x0098090f)
[0:53:35.235691297] [6975] DEBUG V4L2 v4l2_device.cpp:636 /dev/video20[32:cap]: Control: Colour Correction Matrix (0x009819e1)
[0:53:35.235849555] [6975] DEBUG V4L2 v4l2_device.cpp:636 /dev/video20[32:cap]: Control: Lens Shading (0x009819e2)
[0:53:35.235968313] [6975] DEBUG V4L2 v4l2_device.cpp:636 /dev/video20[32:cap]: Control: Black Level (0x009819e3)
[0:53:35.236111626] [6975] DEBUG V4L2 v4l2_device.cpp:636 /dev/video20[32:cap]: Control: Green Equalisation (0x009819e4)
[0:53:35.236220755] [6975] DEBUG V4L2 v4l2_device.cpp:636 /dev/video20[32:cap]: Control: Gamma (0x009819e5)
[0:53:35.236314272] [6975] DEBUG V4L2 v4l2_device.cpp:636 /dev/video20[32:cap]: Control: Denoise (0x009819e6)
[0:53:35.236399068] [6975] DEBUG V4L2 v4l2_device.cpp:636 /dev/video20[32:cap]: Control: Sharpen (0x009819e7)
[0:53:35.236494326] [6975] DEBUG V4L2 v4l2_device.cpp:636 /dev/video20[32:cap]: Control: Defective Pixel Correction (0x009819e8)
[0:53:35.236592380] [6975] DEBUG V4L2 v4l2_device.cpp:636 /dev/video20[32:cap]: Control: Colour Denoise (0x009819e9)
[0:53:35.236691324] [6975] DEBUG V4L2 v4l2_device.cpp:636 /dev/video20[32:cap]: Control: Digital Gain (0x009f0905)
[0:53:35.236969247] [6975] DEBUG V4L2 v4l2_videodevice.cpp:632 /dev/video20[32:out]: Opened device platform:bcm2835-isp: bcm2835-isp: bcm2835-isp
[0:53:35.237501926] [6975] DEBUG V4L2 v4l2_videodevice.cpp:632 /dev/video21[33:cap]: Opened device platform:bcm2835-isp: bcm2835-isp: bcm2835-isp
[0:53:35.237855886] [6975] DEBUG V4L2 v4l2_videodevice.cpp:632 /dev/video22[34:cap]: Opened device platform:bcm2835-isp: bcm2835-isp: bcm2835-isp
[0:53:35.238157864] [6975] DEBUG V4L2 v4l2_videodevice.cpp:632 /dev/video23[35:cap]: Opened device platform:bcm2835-isp: bcm2835-isp: bcm2835-isp
[0:53:35.239462647] [6975]  INFO RPI vc4.cpp:400 Registered camera /base/soc/i2c0mux/i2c@1/imx708@1a to Unicam device /dev/media4 and ISP device /dev/media1
[0:53:35.239823902] [6975] DEBUG Camera camera_manager.cpp:155 Pipeline handler "rpi/vc4" matched
[0:53:35.239999511] [6975] DEBUG RPI vc4.cpp:178 Unable to acquire a Unicam instance
[0:53:35.240092344] [6975] DEBUG RPI vc4.cpp:178 Unable to acquire a Unicam instance
[0:53:35.240203880] [6975] DEBUG Camera camera_manager.cpp:134 Found registered pipeline handler 'simple'
[0:53:35.240550913] [6975] DEBUG Camera camera_manager.cpp:134 Found registered pipeline handler 'uvcvideo'
[INFO] [1719912487.991487108] [camera]:
>> cameras:
   0: imx708 (/base/soc/i2c0mux/i2c@1/imx708@1a)
[WARN] [1719912487.992780891] [camera]: no camera selected, using default: "/base/soc/i2c0mux/i2c@1/imx708@1a"
[WARN] [1719912487.992898426] [camera]: set parameter 'camera' to silent this warning
[0:53:35.244862516] [6962] DEBUG Camera camera.cpp:1118 streams configuration: (0) 1920x1080-YUV420
[DEBUG] [1719912487.995610546] [camera]:
>> stream formats:
   - Pixelformat: NV21 (64x64 - 4608x2592)
   - Pixelformat: YUV420 (64x64 - 4608x2592)
   - Pixelformat: NV12 (64x64 - 4608x2592)
   - Pixelformat: YVU420 (64x64 - 4608x2592)
   - Pixelformat: XBGR8888 (64x64 - 4608x2592)
   - Pixelformat: BGR888 (64x64 - 4608x2592)
   - Pixelformat: RGB888 (64x64 - 4608x2592)
   - Pixelformat: XRGB8888 (64x64 - 4608x2592)
   - Pixelformat: RGB565 (64x64 - 4608x2592)
   - Pixelformat: YVYU (64x64 - 4608x2592)
   - Pixelformat: YUYV (64x64 - 4608x2592)
   - Pixelformat: VYUY (64x64 - 4608x2592)
   - Pixelformat: UYVY (64x64 - 4608x2592)
[INFO] [1719912487.996321539] [camera]:
>> stream formats:
   - Pixelformat: NV21 (64x64 - 4608x2592)
   - Pixelformat: XBGR8888 (64x64 - 4608x2592)
   - Pixelformat: BGR888 (64x64 - 4608x2592)
   - Pixelformat: RGB888 (64x64 - 4608x2592)
   - Pixelformat: XRGB8888 (64x64 - 4608x2592)
   - Pixelformat: YUYV (64x64 - 4608x2592)
   - Pixelformat: UYVY (64x64 - 4608x2592)
[WARN] [1719912487.996553518] [camera]: no pixel format selected, using default: "NV21"
[WARN] [1719912487.996747201] [camera]: set parameter 'format' to silent this warning
[INFO] [1719912487.997711895] [camera]:
>> NV21 format sizes:
   - 160x120
   - 240x160
   - 320x240
   - 400x240
   - 480x320
   - 640x360
   - 640x480
   - 720x480
   - 768x480
   - 854x480
   - 720x576
   - 800x600
   - 960x540
   - 1024x576
   - 960x640
   - 1024x600
   - 1024x768
   - 1280x720
   - 1152x864
   - 1280x800
   - 1360x768
   - 1366x768
   - 1440x900
   - 1280x1024
   - 1536x864
   - 1280x1080
   - 1600x900
   - 1400x1050
   - 1680x1050
   - 1600x1200
   - 1920x1080
   - 2048x1080
   - 1920x1200
   - 2160x1080
   - 2048x1152
   - 2560x1080
   - 2048x1536
   - 2560x1440
   - 2560x1600
   - 3840x1080
   - 2960x1440
   - 3440x1440
   - 2560x2048
   - 3200x1800
   - 3840x1600
   - 3200x2048
   - 3200x2400
   - 3840x2160
   - 4096x2160
   - 3840x2400
[WARN] [1719912487.998807976] [camera]: no dimensions selected, auto-selecting: "1920x1080"
[WARN] [1719912487.998937400] [camera]: set parameter 'width' or 'height' to silent this warning
[0:53:35.249631207] [6962] DEBUG RPI pipeline_base.cpp:957 Format: 1536x864 fmt SRGGB10 Score: 2200 (best 2200)
[0:53:35.250014759] [6962] DEBUG RPI pipeline_base.cpp:957 Format: 2304x1296 fmt SRGGB10 Score: 1150 (best 1150)
[0:53:35.250078888] [6962] DEBUG RPI pipeline_base.cpp:957 Format: 4608x2592 fmt SRGGB10 Score: 2050 (best 1150)
[0:53:35.250229738] [6962] DEBUG RPI pipeline_base.cpp:284 Try color space Rec709
[0:53:35.251329078] [6962] DEBUG RPI pipeline_base.cpp:957 Format: 1536x864 fmt SRGGB10 Score: 2200 (best 2200)
[0:53:35.251465262] [6962] DEBUG RPI pipeline_base.cpp:957 Format: 2304x1296 fmt SRGGB10 Score: 1150 (best 1150)
[0:53:35.251518595] [6962] DEBUG RPI pipeline_base.cpp:957 Format: 4608x2592 fmt SRGGB10 Score: 2050 (best 1150)
[0:53:35.251600946] [6962] DEBUG RPI pipeline_base.cpp:284 Try color space Rec709
[0:53:35.251722611] [6962]  INFO Camera camera.cpp:1183 configuring streams: (0) 1920x1080-NV21
[0:53:35.254013124] [6975]  INFO RPI vc4.cpp:569 Sensor: /base/soc/i2c0mux/i2c@1/imx708@1a - Selected sensor format: 2304x1296-SBGGR10_1X10 - Selected unicam format: 2304x1296-pBAA
[0:53:35.254163900] [6975] DEBUG RPI vc4.cpp:584 Setting ISP Output0 to 1920x1080-NV21
[0:53:35.254394083] [6975] DEBUG RPI vc4.cpp:591 Stream ISP Output0 has color space Rec709
[0:53:35.254541785] [6975] DEBUG RPI vc4.cpp:655 Setting ISP Output1 (internal) to 960x540-YU12
[0:53:35.254965781] [6975] DEBUG RPI vc4.cpp:692 Setting embedded data format 0x0-SENS
[0:53:35.256953371] [6975] DEBUG IPARPI ipa_base.cpp:1480 Applying AGC Exposure: 19987.54us (Shutter lines: 1496, AGC requested 20000.00us) Gain: 1 (Gain Code: 112)
[0:53:35.257317719] [6975] DEBUG RPiAf af.cpp:723 setLensPosition: 1
[INFO] [1719912488.009323403] [camera]: camera "/base/soc/i2c0mux/i2c@1/imx708@1a" configured with 1920x1080-NV21 stream
[DEBUG] [1719912488.009711584] [camera]: declare HdrMode with default 0
[DEBUG] [1719912488.010023840] [camera]: declare Contrast with default 1.000000
[DEBUG] [1719912488.010235467] [camera]: declare AfPause with default 0
[DEBUG] [1719912488.011079255] [camera]: declare Brightness with default 0.000000
[DEBUG] [1719912488.011377270] [camera]: declare ColourGains with default not set
[DEBUG] [1719912488.011508065] [camera]: declare AeFlickerPeriod with default not set
[DEBUG] [1719912488.011626564] [camera]: declare AwbMode with default 0
[DEBUG] [1719912488.011760637] [camera]: declare AfTrigger with default 0
[DEBUG] [1719912488.011906913] [camera]: declare AeFlickerMode with default 0
[DEBUG] [1719912488.012454185] [camera]: declare AeExposureMode with default 0
[DEBUG] [1719912488.012877458] [camera]: declare Sharpness with default 1.000000
[DEBUG] [1719912488.013595580] [camera]: declare AfMetering with default 0
[DEBUG] [1719912488.014004817] [camera]: declare ExposureValue with default 0.000000
[DEBUG] [1719912488.014765716] [camera]: declare AeConstraintMode with default 0
[DEBUG] [1719912488.015830890] [camera]: declare ScalerCrop with default [0, 0, 4608, 2592]
[DEBUG] [1719912488.016744288] [camera]: declare AfRange with default 0
[DEBUG] [1719912488.017139858] [camera]: declare AeEnable with default not set
[DEBUG] [1719912488.017871073] [camera]: declare ExposureTime with default not set
[DEBUG] [1719912488.018135681] [camera]: declare AfSpeed with default 0
[DEBUG] [1719912488.019194244] [camera]: declare AfWindows with default [0, 0, 0, 0]
[DEBUG] [1719912488.020062753] [camera]: declare AwbEnable with default not set
[DEBUG] [1719912488.020429824] [camera]: declare LensPosition with default 1.000000
[DEBUG] [1719912488.021250222] [camera]: declare Saturation with default 1.000000
[DEBUG] [1719912488.021968826] [camera]: declare AfMode with default 0
[DEBUG] [1719912488.022721633] [camera]: declare StatsOutputEnable with default false
[DEBUG] [1719912488.023104870] [camera]: declare FrameDurationLimits with default not set
[DEBUG] [1719912488.023620494] [camera]: declare AnalogueGain with default not set
[DEBUG] [1719912488.024314005] [camera]: declare AeMeteringMode with default 0
[WARN] [1719912488.025259810] [camera]: control NoiseReductionMode (10002) not handled
[DEBUG] [1719912488.026060820] [camera]: setting integer parameter AeConstraintMode to 0
[DEBUG] [1719912488.026872016] [camera]: setting integer parameter AeExposureMode to 0
[DEBUG] [1719912488.027275900] [camera]: setting integer parameter AeFlickerMode to 0
[DEBUG] [1719912488.027943727] [camera]: setting integer parameter AeMeteringMode to 0
[DEBUG] [1719912488.028493147] [camera]: setting integer parameter AfMetering to 0
[DEBUG] [1719912488.029159955] [camera]: setting integer parameter AfMode to 0
[DEBUG] [1719912488.029595431] [camera]: setting integer parameter AfPause to 0
[DEBUG] [1719912488.030373849] [camera]: setting integer parameter AfRange to 0
[DEBUG] [1719912488.031135545] [camera]: setting integer parameter AfSpeed to 0
[DEBUG] [1719912488.031816149] [camera]: setting integer parameter AfTrigger to 0
[DEBUG] [1719912488.032466142] [camera]: setting integer_array parameter AfWindows to [0, 0, 0, 0]
[DEBUG] [1719912488.033203949] [camera]: setting integer parameter AwbMode to 0
[DEBUG] [1719912488.033932534] [camera]: setting double parameter Brightness to 0.000000
[DEBUG] [1719912488.034687619] [camera]: setting double parameter Contrast to 1.000000
[DEBUG] [1719912488.035474166] [camera]: setting double parameter ExposureValue to 0.000000
[DEBUG] [1719912488.036151770] [camera]: setting integer parameter HdrMode to 0
[DEBUG] [1719912488.036943947] [camera]: setting double parameter LensPosition to 1.000000
[DEBUG] [1719912488.037700013] [camera]: setting double parameter Saturation to 1.000000
[DEBUG] [1719912488.038425247] [camera]: setting integer_array parameter ScalerCrop to [0, 0, 4608, 2592]
[DEBUG] [1719912488.039236923] [camera]: setting double parameter Sharpness to 1.000000
[DEBUG] [1719912488.040112377] [camera]: setting bool parameter StatsOutputEnable to false
[0:53:35.296972564] [6975] DEBUG V4L2 v4l2_videodevice.cpp:1254 /dev/video21[33:cap]: 4 buffers requested.
[0:53:35.298248458] [6975] DEBUG Buffer framebuffer.cpp:346 Buffer is contiguous
[0:53:35.298656787] [6975] DEBUG Buffer framebuffer.cpp:346 Buffer is contiguous
[0:53:35.298894229] [6975] DEBUG Buffer framebuffer.cpp:346 Buffer is contiguous
[0:53:35.299153689] [6975] DEBUG Buffer framebuffer.cpp:346 Buffer is contiguous
[0:53:35.299270225] [6975] DEBUG V4L2 v4l2_videodevice.cpp:1254 /dev/video21[33:cap]: 0 buffers requested.
[0:53:35.300301436] [6962] DEBUG Request request.cpp:361 Created request - cookie: 0
[0:53:35.300951263] [6962] DEBUG Request request.cpp:361 Created request - cookie: 0
[0:53:35.301078428] [6962] DEBUG Request request.cpp:361 Created request - cookie: 0
[0:53:35.301166464] [6962] DEBUG Request request.cpp:361 Created request - cookie: 0
[New Thread 0x7fcfa0e8e0 (LWP 6978)]
[New Thread 0x7fcf1fe8e0 (LWP 6979)]
[New Thread 0x7fce9ee8e0 (LWP 6980)]
[New Thread 0x7fce1de8e0 (LWP 6981)]
[0:53:35.304819408] [6962] DEBUG Camera camera.cpp:1341 Starting capture
[New Thread 0x7fcd9ce8e0 (LWP 6982)]
[0:53:35.307453565] [6982] DEBUG RPiAf af.cpp:760 setMode: 0
[0:53:35.307594897] [6982] DEBUG IPARPI ipa_base.cpp:747 Request ctrl: Brightness = 0.000000
[0:53:35.307778525] [6982] DEBUG IPARPI ipa_base.cpp:747 Request ctrl: HdrMode = 0
[0:53:35.307957467] [6982] DEBUG RPiAgc agc.cpp:203 setActiveChannels { 0 }
[0:53:35.308073114] [6982] DEBUG IPARPI ipa_base.cpp:747 Request ctrl: AfTrigger = 0
[0:53:35.308111910] [6982]  WARN IPARPI ipa_base.cpp:1167 Could not set AF_TRIGGER - no AF algorithm or not Auto
[0:53:35.308134188] [6982] DEBUG IPARPI ipa_base.cpp:747 Request ctrl: AfSpeed = 0
[0:53:35.308249242] [6982] DEBUG RPiAf af.cpp:683 setSpeed: 0
[0:53:35.308323760] [6982] DEBUG IPARPI ipa_base.cpp:747 Request ctrl: AeConstraintMode = 0
[0:53:35.308581831] [6982] DEBUG RPiAgc agc.cpp:175 setConstraintMode normal
[0:53:35.308765107] [6982] DEBUG IPARPI ipa_base.cpp:747 Request ctrl: AfRange = 0
[0:53:35.308937365] [6982] DEBUG RPiAf af.cpp:676 setRange: 0
[0:53:35.309032253] [6982] DEBUG IPARPI ipa_base.cpp:747 Request ctrl: AeMeteringMode = 0
[0:53:35.309302453] [6982] DEBUG IPARPI ipa_base.cpp:747 Request ctrl: AfPause = 0
[0:53:35.309395786] [6982]  WARN IPARPI ipa_base.cpp:1150 Could not set AF_PAUSE - no AF algorithm or not Continuous
[0:53:35.309443859] [6982] DEBUG IPARPI ipa_base.cpp:747 Request ctrl: Sharpness = 1.000000
[0:53:35.309881688] [6982] DEBUG IPARPI ipa_base.cpp:747 Request ctrl: ScalerCrop = (0, 0)/4608x2592
[0:53:35.309985335] [6982] DEBUG IPARPI ipa_base.cpp:747 Request ctrl: AeFlickerMode = 0
[0:53:35.310465812] [6982] DEBUG RPiAgc agc.cpp:123 setFlickerPeriod 0.00us
[0:53:35.310748623] [6982] DEBUG IPARPI ipa_base.cpp:747 Request ctrl: LensPosition = 1.000000
[0:53:35.310963084] [6982] DEBUG RPiAf af.cpp:723 setLensPosition: 1
[0:53:35.311129231] [6982] DEBUG IPARPI ipa_base.cpp:747 Request ctrl: StatsOutputEnable = false
[0:53:35.311264359] [6982] DEBUG IPARPI ipa_base.cpp:747 Request ctrl: Saturation = 1.000000
[0:53:35.311415431] [6982] DEBUG IPARPI ipa_base.cpp:747 Request ctrl: Contrast = 1.000000
[0:53:35.311537911] [6982] DEBUG IPARPI ipa_base.cpp:747 Request ctrl: AfMode = 0
[0:53:35.311592522] [6982] DEBUG IPARPI ipa_base.cpp:747 Request ctrl: AfWindows = (0, 0)/0x0
camera_node: ../include/libcamera/controls.h:167: T libcamera::ControlValue::get() const [with T = libcamera::Span<const libcamera::Rectangle>; typename std::enable_if<(libcamera::details::is_span<U>::value || std::is_same<std::__cxx11::basic_string<char>, typename std::remove_cv< <template-parameter-1-1> >::type>::value), std::nullptr_t>::type <anonymous> = nullptr]: Assertion `isArray_' failed.

Thread 20 "camera_node" received signal SIGABRT, Aborted.

of intrest are:
[DEBUG] [1719912488.019194244] [camera]: declare AfWindows with default [0, 0, 0, 0]
[DEBUG] [1719912488.032466142] [camera]: setting integer_array parameter AfWindows to [0, 0, 0, 0]
[0:53:35.311592522] [6982] DEBUG IPARPI ipa_base.cpp:747 Request ctrl: AfWindows = (0, 0)/0x0

How is AfWindows = (0, 0)/0x0 to be understood?
0x0 pixels?
I'll take another look at where the rectangle is supposed to come from tonight

Here's the backtrace:
Thread 20 (Thread 0x7fcdcc68e0 (LWP 332) "camera_node"):
#0  __pthread_kill_implementation (threadid=548913572064, signo=signo@entry=6, no_tid=no_tid@entry=0) at ./nptl/pthread_kill.c:44
#1  0x0000007ff79bf254 in __pthread_kill_internal (signo=6, threadid=<optimized out>) at ./nptl/pthread_kill.c:78
#2  0x0000007ff797a67c in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26
#3  0x0000007ff7967130 in __GI_abort () at ./stdlib/abort.c:79
#4  0x0000007ff7973fd0 in __assert_fail_base (fmt=0x7ff7a8c550 "%s%s%s:%u: %s%sAssertion `%s' failed.\n%n", assertion=assertion@entry=0x7fe1d4e230 "isArray_", file=file@entry=0x7fe1d4de28 "../include/libcamera/controls.h", line=line@entry=167, function=function@entry=0x7fe1d4e378 "T libcamera::ControlValue::get() const [with T = libcamera::Span<const libcamera::Rectangle>; typename std::enable_if<(libcamera::details::is_span<U>::value || std::is_same<std::__cxx11::basic_string<"...) at ./assert/assert.c:92
#5  0x0000007ff7974040 in __GI___assert_fail (assertion=0x7fe1d4e230 "isArray_", file=0x7fe1d4de28 "../include/libcamera/controls.h", line=167, function=0x7fe1d4e378 "T libcamera::ControlValue::get() const [with T = libcamera::Span<const libcamera::Rectangle>; typename std::enable_if<(libcamera::details::is_span<U>::value || std::is_same<std::__cxx11::basic_string<"...) at ./assert/assert.c:101
#6  0x0000007fe1cd5e64 in libcamera::ControlValue::get<libcamera::Span<libcamera::Rectangle const, 18446744073709551615ul>, decltype(nullptr)>() const (this=0x7fd4047810) at ../include/libcamera/controls.h:167
#7  0x0000007fe1ccc154 in libcamera::ipa::RPi::IpaBase::applyControls (this=0x7fd400a9a0, controls=...) at ../src/ipa/rpi/common/ipa_base.cpp:1143
#8  0x0000007fe1cc829c in libcamera::ipa::RPi::IpaBase::start (this=0x7fd400a9a0, controls=..., result=0x7fe25cd4b0) at ../src/ipa/rpi/common/ipa_base.cpp:279
#9  0x0000007ff5ae09d8 in libcamera::ipa::RPi::IPAProxyRPi::ThreadProxy::start (this=0x7fd4001ce0, controls=..., result=0x7fe25cd4b0) at include/libcamera/ipa/raspberrypi_ipa_proxy.h:209
#10 0x0000007ff5aeaf20 in libcamera::BoundMethodMember<libcamera::ipa::RPi::IPAProxyRPi::ThreadProxy, void, libcamera::ControlList const&, libcamera::ipa::RPi::StartResult*>::invoke (this=0x5555e691c0, args#0=..., args#1=0x7fe25cd4b0) at ../include/libcamera/base/bound_method.h:191
#11 0x0000007ff5aebef0 in libcamera::BoundMethodArgs<void, libcamera::ControlList const&, libcamera::ipa::RPi::StartResult*>::invokePack<0ul, 1ul, void> (this=0x5555e691c0, pack=0x7fd4047490) at ../include/libcamera/base/bound_method.h:115
#12 0x0000007ff5aeae84 in libcamera::BoundMethodArgs<void, libcamera::ControlList const&, libcamera::ipa::RPi::StartResult*>::invokePack (this=0x5555e691c0, pack=0x7fd4047490) at ../include/libcamera/base/bound_method.h:124
#13 0x0000007ff55faadc in libcamera::InvokeMessage::invoke (this=0x7fd40468d0) at ../src/libcamera/base/message.cpp:153
#14 0x0000007ff55fb224 in libcamera::Object::message (this=0x7fd4001ce0, msg=0x7fd40468d0) at ../src/libcamera/base/object.cpp:211
#15 0x0000007ff56023bc in libcamera::Thread::dispatchMessages (this=0x7fd4001cb0, type=libcamera::Message::None) at ../src/libcamera/base/thread.cpp:638
#16 0x0000007ff55eb4cc in libcamera::EventDispatcherPoll::processEvents (this=0x7fc8000ba0) at ../src/libcamera/base/event_dispatcher_poll.cpp:147
#17 0x0000007ff5601854 in libcamera::Thread::exec (this=0x7fd4001cb0) at ../src/libcamera/base/thread.cpp:342
#18 0x0000007ff56018f8 in libcamera::Thread::run (this=0x7fd4001cb0) at ../src/libcamera/base/thread.cpp:369
#19 0x0000007ff56017e0 in libcamera::Thread::startThread (this=0x7fd4001cb0) at ../src/libcamera/base/thread.cpp:320
#20 0x0000007ff56061e8 in std::__invoke_impl<void, void (libcamera::Thread::*)(), libcamera::Thread*> (__f=@0x7fd40471e0: (void (libcamera::Thread::*)(libcamera::Thread * const)) 0x7ff56016e0 <libcamera::Thread::startThread()>, __t=@0x7fd40471d8: 0x7fd4001cb0) at /usr/include/c++/11/bits/invoke.h:74
#21 0x0000007ff5606128 in std::__invoke<void (libcamera::Thread::*)(), libcamera::Thread*> (__fn=@0x7fd40471e0: (void (libcamera::Thread::*)(libcamera::Thread * const)) 0x7ff56016e0 <libcamera::Thread::startThread()>) at /usr/include/c++/11/bits/invoke.h:96
#22 0x0000007ff560608c in std::thread::_Invoker<std::tuple<void (libcamera::Thread::*)(), libcamera::Thread*> >::_M_invoke<0ul, 1ul> (this=0x7fd40471d8) at /usr/include/c++/11/bits/std_thread.h:259
#23 0x0000007ff5606044 in std::thread::_Invoker<std::tuple<void (libcamera::Thread::*)(), libcamera::Thread*> >::operator() (this=0x7fd40471d8) at /usr/include/c++/11/bits/std_thread.h:266
#24 0x0000007ff5606024 in std::thread::_State_impl<std::thread::_Invoker<std::tuple<void (libcamera::Thread::*)(), libcamera::Thread*> > >::_M_run (this=0x7fd40471d0) at /usr/include/c++/11/bits/std_thread.h:211
#25 0x0000007ff7bf31fc in ?? () from /lib/aarch64-linux-gnu/libstdc++.so.6
#26 0x0000007ff79bd5c8 in start_thread (arg=0x0) at ./nptl/pthread_create.c:442
#27 0x0000007ff7a25edc in thread_start () at ../sysdeps/unix/sysv/linux/aarch64/clone.S:79

Thanks. So this is happening in af->setWindows(ctrl.second.get<Span<const Rectangle>>()); where it tries to read a Span<const Rectangle> for the single Rectangle that we set from the [0,0,0,0] default. Because the get version for Span expects assert(isArray_); but a single Rectangle is not an array, this fails. Essentially, this breaks because the node is directly setting the default provided by the IPA. I am not sure how this should be handled. I think libcamera should make sure that the defaults have the same type as the Control.

I believe the error stems from here:
https://github.com/christianrauch/camera_ros/blob/82b86b243dedaba7b871393619d87492f94c7fda/src/pv_to_cv.cpp#L22-L23
If I change the conversion to output an array-type (such as libcamera::Span<CTInteger64>) the error is fixed
(As I did a few comments earlier https://github.com/christianrauch/camera_ros/issues/50#issuecomment-2185343048)
Something like this:
  case libcamera::ControlTypeRectangle:
    return {libcamera::Span<const CTInteger64>(values)};

If i am not mistaken, pv_to_cv should output an array-type containing rectangles, not a single rectangle, right?
In principal like so:
return {libcamera::Span<libcamera::Rectangle>(libcamera::Rectangle(values[0], values[1], values[2], values[3]))};

This line is definitely wrong though, this goes waaay beyond my c++ knowledge

So this is happening in af->setWindows(ctrl.second.get<Span>());

precisely, i showed this here https://github.com/christianrauch/camera_ros/issues/50#issuecomment-2174927781
That gets called coming from this for loop:
https://github.com/christianrauch/camera_ros/blob/82b86b243dedaba7b871393619d87492f94c7fda/src/CameraNode.cpp#L400-L402
Which already has the incorrect _isArray set in it's parameters.
The source, as I said, seems to be in pv_to_cv

I believe the error stems from here:
https://github.com/christianrauch/camera_ros/blob/82b86b243dedaba7b871393619d87492f94c7fda/src/pv_to_cv.cpp#L22-L23

We are turning in circles here. In the response https://github.com/christianrauch/camera_ros/issues/50#issuecomment-2187309401 I told you that pv_to_cv returns a libcamera::ControlValue which can hold any supported control value (int, float, Rectangle) and spns / arrays of these.
Why are you still thinking that libcamera::ControlValue should only contain spans / arrays?

That gets called coming from this for loop:
https://github.com/christianrauch/camera_ros/blob/82b86b243dedaba7b871393619d87492f94c7fda/src/CameraNode.cpp#L400-L402

pv_to_cv is returning a single Rectangle because this is the type of the default value. The _isArray is therefore correctly set to false. The problem is that in
https://github.com/raspberrypi/libcamera/blob/6ddd79b5bdbedc1f61007aed35391f1559f9e29a/src/ipa/rpi/common/ipa_base.cpp#L1136-L1145
the function setWindows is expecting a Span<const Rectangle>.

no, no
AfWindows is an array of rectangles
However, pv_to_cv returns a singular rectangle, which of course isn't an array
From my debugging this is where the error originated
No errors occur before the parameters are set, as they are simply saved in parameters.
That for loop in CameraNode.cpp then uses those values, and then creates the assertion error

no, no AfWindows is an array of rectangles

The AfWindows Control is of type Span<const Rectangle> but the default value in the ControlInfo that is set by the Raspberry Pi IPA is Rectangle{} (https://github.com/raspberrypi/libcamera/blob/6ddd79b5bdbedc1f61007aed35391f1559f9e29a/src/ipa/rpi/common/ipa_base.cpp#L93).

However, pv_to_cv returns a singular rectangle, which of course isn't an array From my debugging this is where the error originated

True, but this is expected as the conversion is supposed to convert to the type of the original default value. pv_to_cv / pv_to_cv_int_array is trying to convert multiple int to the same type as the default value. In the case of AfWindows, the type of the default value is Rectangle (https://github.com/raspberrypi/libcamera/blob/6ddd79b5bdbedc1f61007aed35391f1559f9e29a/src/ipa/rpi/common/ipa_base.cpp#L93) and not Span<const Rectangle> as the Control.

Ah, ok, thanks for clarifying!
then it must be further down the line
I'll take another look tomorrow :+1:

I changed the way how the ROS parameter type is determined from the libcamera control id in https://github.com/christianrauch/camera_ros/pull/15. It should now ignore control ids where the control id itself cannot be converted to a ROS parameter type, independently of the default control value.
Can you check this again please to see if it correctly ignores the AfWindows control? The node should print a warning unsupported control 'AfWindows' in the terminal.

authors: christianrauch ethanblaylock snaens


text:
add logo testing

We have logo tests that work!!

Christie, you are so aggressive

source: gharchive/pull-request

authors: christielynam jackmallahan

repo: christielynam/weathrly

license: MIT

license_type: permissive

license_source: github-api


text:
ConfigParser Requirement

Might be worth nothing that ConfigParser module is also required.

What is your Python version? On a fresh 3.6 virtualenv this is not the case.

Using a 3.6.0 virtualenv

Very weird, in that case I'll probably just parse the config manually to drop the dependency. Thanks!

configparser is no longer required :slightly_smiling_face:

source: gharchive/issue

authors: christopher-dG kariudo

repo: christopher-dG/pmcli

license: mit

license_source: bigquery


text:
[SEC]: Bandit Scan

Description of changes
Summarize the changes made by this PR.

Improvements & Bug fixes

Added bandit scanning for all pushes to repo

Test plan
How are these changes tested?
Manual testing of the workflow
Documentation Changes
N/A - unless we want to start a separate security section in the main docs repo.

@tazarov Is this good to merge?

authors: HammadB tazarov

repo: chroma-core/chroma


text:
How to compose a selector for an element that does not have id or class?

	ctx, cancel := chromedp.NewExecAllocator(
		context.Background(),
		append(
			chromedp.DefaultExecAllocatorOptions[:],
			chromedp.Flag("headless", false),
		)...,
	)
	defer cancel()

	ctx, cancel = context.WithTimeout(ctx, 20*time.Second)
	ctx, cancel = chromedp.NewContext(ctx,
		chromedp.WithLogf(log.Printf),
	)
	defer cancel()

	urlStr, err := url.Parse("http://testphp.vulnweb.com/AJAX/index.php")

	if err != nil {
		panic("url error")
	}

	if err := chromedp.Run(ctx, chromedp.Tasks{
		// network.SetExtraHTTPHeaders(headers),
		chromedp.ActionFunc(func(ctx context.Context) error {
			_, _, _, err := page.Navigate(urlStr.String()).
				//WithReferrer("https://www.google.com/").
				Do(ctx)
			return err
		}),
	}); err != nil {
		log.Fatal(err)
		return
	}

	var projects []*cdp.Node
	if err := chromedp.Run(ctx, chromedp.Nodes(`a[href]`, &projects)); err != nil {
		fmt.Println(fmt.Errorf("could not get projects: %v", err))
	}

	for i := 0; i < len(projects); i++ {

		m := projects[i]

		onclick := m.AttributeValue("onclick")
		href := m.AttributeValue("href")

		if href != "" && href != "#" {
			if err = chromedp.Run(ctx, chromedp.Tasks{
				chromedp.Click(href, chromedp.FromNode(m)), chromedp.Sleep(time.Second),
			}); err != nil && err.Error() != "page load error net::ERR_ABORTED" {
				log.Fatal(err)
			}
		}

		if onclick != "" && href == "#" {
			if err = chromedp.Run(ctx, chromedp.Tasks{
				chromedp.Click(onclick, chromedp.FromNode(m)), chromedp.Sleep(time.Second),
			}); err != nil && err.Error() != "page load error net::ERR_ABORTED" {
				log.Fatal(err)
			}
		}
	}

Website link ：http://testphp.vulnweb.com/AJAX/index.php

This can only be done on one website. I want to expand. Every website can be clicked. Any suggestions?

Also, I want to find out whether an element exists. If the element does not exist, it will be interrupted and the next operation cannot be continued. I don’t like this

@scc888 Please read https://stackoverflow.com/help/how-to-ask first. First, make sure you know what you want to do, then describe your question clearly.

Ok, I want to get all a tags, get href or onclick to click, such as (http://testphp.vulnweb.com/AJAX/index.php) this website, click the setcookie tag, but there are two content on this page SetMyCookie function, chromedp.click cannot be determined to click, make sure that the connection of each website can be clicked, instead of going to the website to find a certain id and class, filling it and then clicking it is too troublesome

I will leave this issue open for some while in case someone else want to answer your question.

You need to get FullXPath padding
package main

import (
	"context"
	"log"
	"time"

	"github.com/chromedp/chromedp"
)

func main() {

	ctx, cancel := chromedp.NewExecAllocator(
		context.Background(),
		append(
			chromedp.DefaultExecAllocatorOptions[:],
			chromedp.Flag("headless", false),
		)...,
	)
	defer cancel()

	ctx, cancel = context.WithTimeout(ctx, 20*time.Second)
	ctx, cancel = chromedp.NewContext(ctx,
		chromedp.WithLogf(log.Printf),
	)
	defer cancel()

	if err := chromedp.Run(ctx, chromedp.Navigate("http://testphp.vulnweb.com/AJAX/index.php")); err != nil {
		log.Fatal(err)
		return
	}

	var projects []*cdp.Node
	if err := chromedp.Run(ctx, chromedp.Nodes(`a[href]`, &projects)); err != nil {
		fmt.Println(fmt.Errorf("could not get projects: %v", err))
	}

	for i := 0; i < len(projects); i++ {

		m := projects[i]

		if err := chromedp.Run(ctx, chromedp.Tasks{chromedp.Click(m.FullXPath()), chromedp.Sleep(time.Second)});
			err != nil {
			log.Fatal(err)
		}
	}
}

呵呵呵，真恶心
------------------ 原始邮件 ------------------
发件人:                                                                                "chromedp/chromedp"                                                                                @.>;
发送时间: 2021年5月28日(星期五) 上午10:35
@.>;
@.@.>;
主题: Re: [chromedp/chromedp] How to compose a selector for an element that does not have id or class? (#833)
You need to get FullXPath padding
package main import ( 	"context" 	"log" 	"time" 	"github.com/chromedp/chromedp" ) func main() { 	ctx, cancel := chromedp.NewExecAllocator( 		context.Background(), 		append( 			chromedp.DefaultExecAllocatorOptions[:], 			chromedp.Flag("headless", false), 		)..., 	) 	defer cancel() 	ctx, cancel = context.WithTimeout(ctx, 20*time.Second) 	ctx, cancel = chromedp.NewContext(ctx, 		chromedp.WithLogf(log.Printf), 	) 	defer cancel() 	if err := chromedp.Run(ctx, chromedp.Navigate("http://testphp.vulnweb.com/AJAX/index.php")); err != nil { 		log.Fatal(err) 		return 	} 	var projects []*cdp.Node 	if err := chromedp.Run(ctx, chromedp.Nodes(a[href], &projects)); err != nil { 		fmt.Println(fmt.Errorf("could not get projects: %v", err)) 	} 	for i := 0; i < len(projects); i++ { 		m := projects[i] 		if err := chromedp.Run(ctx, chromedp.Tasks{chromedp.Click(m.FullXPath()), chromedp.Sleep(time.Second)}); 			err != nil { 			log.Fatal(err) 		} 	} }
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or unsubscribe.

If https://github.com/chromedp/chromedp/issues/833#issuecomment-850067803 is what you want, you can simplify it with chromedp.QueryAfter. Just search the issues, there are several examples showing how to use it.

authors: ZekeLu baerwang scc888

repo: chromedp/chromedp


text:
encountered an undefined value

What versions are you running?
$ go list -m github.com/chromedp/chromedp
github.com/chromedp/chromedp v0.7.4
$ google-chrome --version
Chromium : 91.0.4472.164
$ go version
go version go1.16.6 windows/amd64
What did you do? Include clear steps.
Hi everyone, I have a function to set some id on select tags.
Here my code :
chromedp.ActionFunc(func(c context.Context) error { // Function to add ids on selects

        var err error
	var selects []*cdp.Node

	chromedp.Nodes("select", &selects, chromedp.ByQueryAll).Do(c)

	var buffer *runtime.RemoteObject

	for index, node := range selects {

		expression := "document.querySelectorAll('select')[" + strconv.Itoa(index) + "].setAttribute('id', '#')"

		if node.ChildNodeCount == 12 { // Month select
			expression = strings.ReplaceAll(expression, "#", "monthSelect")
			err = chromedp.Evaluate(expression, buffer).Do(c)
		} else if node.ChildNodeCount <= 31 && node.ChildNodeCount >= 28 { // Day select
			expression = strings.ReplaceAll(expression, "#", "daySelect")
			err = chromedp.Evaluate(expression, buffer).Do(c)
		} else { // Year select
			expression = strings.ReplaceAll(expression, "#", "yearSelect")
			err = chromedp.Evaluate(expression, buffer).Do(c)
		}

		if err != nil {
			return err
		}
	}

	return err
}),

I use the *runtime.RemoteObject as a buffer to handle the undefined result
However, I meet  the error : encountered an undefined value
Maybe I do something wrong
What did you expect to see?
No error, but I want to handle the error if another occur
What did you see instead?
The error : encountered an undefined value
Have a good day, and thanks for your help

If the result value of chromedp.Evaluate is of type runtime.RemoteObject, the parameter should be of type **runtime.RemoteObject. Here is the change to correct your code:
-err = chromedp.Evaluate(expression, buffer).Do(c)
+err = chromedp.Evaluate(expression, &buffer).Do(c)

What's more, if you don't care about the result value, you can just pass nil to the parameter res (since 0.7.3. see #816).
-err = chromedp.Evaluate(expression, buffer).Do(c)
+err = chromedp.Evaluate(expression, nil).Do(c)

I think the most simple way is to implement the logic with javascript and evaluate the javascript expression with a simple call to chromedp.Evaluate.
expression := `
document.querySelectorAll('select').forEach(s => {
    const childCount = s.children.length;
    const id = childCount === 12 ? 'monthSelect' :
        childCount >= 28 && childCount <= 31 ? 'daySelect' : 'yearSelect'
    s.setAttribute('id', id);
})
`
// ...
	chromedp.Evaluate(expression, nil),

Hello @ZekeLu
It work
Thanks for your reply,
Have a good day

authors: FournyP ZekeLu


text:
Visual Studio hangs when using Resharper and VsChromium with a large project open

When VsChromium indexes a large project, and "Solution Explorer" is enabled, Resharper enumerates all entries (directories and files, recursively) shown in Solution Explorer.
For large projects, there can be hundred of thousand directories, and even more files.
Resharper behavior leads to hangs in Visual Studio UI, because all programmatic access to the
Solution Explorer nodes happens on the UI thread (IvsHierarchy).
With VS 2019, we get a notification that Resharper is the cause of performance issue.

Attaching screenshot

Fixed in https://github.com/chromium/vs-chromium/releases/tag/v0.9.34

repo: chromium/vs-chromium


text:
Additional Registration screen

If a user clicks on the "Link additional account" in settings, this will bring up the link new user screen. If you click BACK, it will give you a Congratulations screen.  Shouldn't get a congrats screen if you are not registering.

P2: Congratulations!' screen appears if press back button on linking screen.
STR:

Link one account.
Navigate to settings and select 'Link additional Google Photos account'.
Press back button on linking screen.

https://roku.box.com/shared/static/inhqubowtlnblp3j9qoglzkzd1fsc54b.mp4

Fixed in v3.776.20170213


text:
[已弃坑]卷分配 DP 数异常，5T 占用的，12T 大小的卷 DP 数量高达 3000-5000

Describe the bug
卷分配 DP 数异常，5T 占用的，12T 大小的卷 DP 数量高达 3000-5000
Environment
CFS 2.2.2 release
To Reproduce
发现同一个业务的卷都有此类问题，其他业务卷没有这个问题
Expected behavior
不应该有这么多 DP，而且大多数只读
Additional context
cat 1
elk_801_data_285_stale
elk_801_data_287_stale
elk_801_data_286_stale
elk_801_data_289_stale
elk_801_data_292_stale
elk_801_data_291_stale
elk_801_data_296_stale
elk_801_data_282_stale
elk_801_data_283_stale
elk_801_data_295_stale
elk_801_data_284_stale
elk_801_data_290_stale
elk_801_data_294_stale
elk_801_data_293_stale
elk_801_data_288_stale

for i in `cat 1`;do /cfs/bin/cfs-cli volume info $i -d;done|grep   'Read only' | wc -l
41372

for i in `cat 1`;do /cfs/bin/cfs-cli volume info $i -d;done|grep   Writable | wc -l
4673

@zcola
在创建volume之后是否存在调用add-dp命令或者接口为这些volume人为增加DP数量的操作？

大多数DP 只读，应该是master 认为没有足够多的可写分区创建

hello, it may be userful forr your problem, please refer to pr: https://github.com/chubaofs/chubaofs/pull/1106

fix by fix by #1124

repo: chubaofs/chubaofs


text:
v2 ANSI format shows forecast by hour, but v2 JSON format every 3 hours

I would like to parse the hourly weather forecast (chance of precipitation and MM) from the JSON format. For this, I am using
wget -qO - v2.wttr.in/heidelberg?format=j1

However I realized that the JSON format only provides the weather every 3 hours. You can check it out using the following command:
wget -qO - v2.wttr.in/heidelberg?format=j1 | grep \"time\": | sort -u

"time" values are [0, 300, 600, 900, 1200, 1500, 1800, 2100]; corresponding to "00:00 .. 21:00", respectively.

Is there any way to get the hourly forecast as it is shown in the terminal (ANSI format) by default?
Thanks!
Javier

@jperales Yes, it is a very good qustioon. Actually, it would be great to have the j2 format,
that provides absolutely the same data as v2 does, but in JSON format.

authors: chubin jperales


text:
Load from check point

Hi, thanks for sharing your great work!
Do you have any script for continuing train from saved checkpoint, it seems in train.py there isn't args for passing the checkpoint path etc., thanks!

Thanks to the excellent code.
Resume code is in  humannerf/core/train/trainers/human_nerf/trainer.py.
You can run it with
python train.py --cfg configs/human_nerf/zju_mocap/392/adventure.yaml resume True

thanks!

Thanks to the excellent code.
Resume code is in humannerf/core/train/trainers/human_nerf/trainer.py. You can run it with
python train.py --cfg configs/human_nerf/zju_mocap/392/adventure.yaml resume True

repo: chungyiweng/humannerf


text:
link href is not always css

You should check on the link rel. Some are stylesheet, others are icon / apple-touch-icon ... They should be treated as image.

This is fixed in my fork: https://github.com/marcusklaas/grunt-inline.

authors: JSteunou marcusklaas

repo: chyingp/grunt-inline


text:
Add Helm Clustermesh disconnect command

Surface new command to match cluster disconnect when CLI helm mode in enabled

Signed-off-by: Fernand Galiana fernand.galiana@isovalent.com

Yes, the failure is caused by the modifications here to the version
checking logic. semver.Compare was specifically avoided previously because
it did not handle prefixes and suffixes present in the version strings that
are used by Cilium for pre-release versions.
I would advise debugging the code using the values present in the CI
context, or reverting to the previous implementation.
On Tue, Jun 20, 2023 at 11:17 PM Fernand Galiana @.***>
wrote:

@.**** commented on this pull request.
In clustermesh/clustermesh.go
https://github.com/cilium/cilium-cli/pull/1739#discussion_r1236232876:

@@ -2082,6 +2073,107 @@ func (k *K8sClusterMesh) ConnectWithHelm(ctx context.Context) error {
return nil
}

+// Helm-based clustermesh enable is only supported on Cilium
+// v1.14+ due to a lack of support in earlier versions for
+// autoconfigured certificates (tls.{crt,key}) for cluster
+// members when running in certgen (cronJob) PKI mode
+func (k *K8sClusterMesh) inClassicMode(r *release.Release) (bool, error) {
Also do you have an idea on what's up with the tests failures?
When I've first checked in this am, all tests were green and now 2 suites
are failing consistently relating to a hosed tls secret key? Do you have a
sense on why they started failing?
—
Reply to this email directly, view it on GitHub
https://github.com/cilium/cilium-cli/pull/1739#discussion_r1236232876,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAPTWHW2RMCL5UFICSXN3XDXMJRV7ANCNFSM6AAAAAAZNQAGJM
.
You are receiving this because your review was requested.Message ID:
@.***>

Correct, this is a semantic nitpick from me. This boolean predicate
function is returning whether or not we “needClassicMode”, the value of the
environment variable which causes us to reach this function means we must
already be in Helm mode. In other words, a Helm version is not
“isClassicMode”, but it might “needClassicMode”. It’s really a nitpick.
On Tue, Jun 20, 2023 at 11:12 PM Fernand Galiana @.***>
wrote:

@.**** commented on this pull request.
In clustermesh/clustermesh.go
https://github.com/cilium/cilium-cli/pull/1739#discussion_r1236230275:

@@ -2082,6 +2073,107 @@ func (k *K8sClusterMesh) ConnectWithHelm(ctx context.Context) error {
return nil
}

+// Helm-based clustermesh enable is only supported on Cilium
+// v1.14+ due to a lack of support in earlier versions for
+// autoconfigured certificates (tls.{crt,key}) for cluster
+// members when running in certgen (cronJob) PKI mode
+func (k *K8sClusterMesh) inClassicMode(r *release.Release) (bool, error) {
Thanks Andrew! I thought ClassicMode meant: "run the standard Clustermesh
connect/disconnect as if helm upgrade mode is disabled". If that's the case
and the cilium rev is < 1.14.0 then we are `in classic mode'.
Am I wrong about that?
—
Reply to this email directly, view it on GitHub
https://github.com/cilium/cilium-cli/pull/1739#discussion_r1236230275,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAPTWHRBEC6L6VLAVS467PDXMJRAVANCNFSM6AAAAAAZNQAGJM
.
You are receiving this because your review was requested.Message ID:
@.***>

authors: asauber derailed

repo: cilium/cilium-cli


text:
install: Add --deployment-mode flag to allow printing Helm options

Signed-off-by: Thomas Graf thomas@cilium.io

Closing in favor of #717.

authors: tgraf tklauser


text:
helm: Allow disabling xt_socket fallback

Helm cannot distinguish between empty and false value, so previously used if-statement prevented from disabling the fallback when "--set global.enableXTSocketFallback=false" was set.
Fixes: 68858fcf95b ("iptables: Add a fallback to missing xt_socket module.")

This change is

test-me-please

If we do this then we have to add a default value in values.yaml to make sure it is always initialized.

Isn't that the case already?
https://github.com/cilium/cilium/blob/cec34b10ce1830bf20397a08971fd1f5603edbfb/install/kubernetes/cilium/values.yaml#L85-L90

authors: aanm brb

repo: cilium/cilium


text:
ci: fix gke prune script

The script exited when docker prune failed, which was not intended
behaviour (it was supposed to loop until the counter reached 10 or
docker prune succeeded).

test-gke

Maybe outline in the description what was wrong with the script?

Coverage decreased (-0.01%) to 37.172% when pulling 3888ead32798b97cb877c6d689c21bbd7fb5948d on pr/fix-gke-prune-script into 486bedff7375892f07d9c9a5308e522bf30d51e4 on master.

test-gke

test-4.9

authors: coveralls jrajahalme nebril


text:
vendor: update arping lib to fix concurrency issues

The library was fixed upstream with some concurrency issues that were
found.
Signed-off-by: André Martins andre@cilium.io
Fixes https://github.com/cilium/cilium/issues/13435

test-me-please

retest-gke

retest-gke

retest-gke

retest-gke

The library was fixed upstream with some concurrency issues that were found.

Ah, that explains why I had so much trouble git blaming a Cilium contributor :-)

authors: aanm pchaigno


text:
hubble: add a unique identifier to flows

Before this patch, identifying a specific flow was non trivial and would often require using a combination of fields. This PR introduce a unique flow identifier along with a matching Hubble filter.

I don't think you meant to push flow.pb.go.orig right?

good catch, fixed.

/test

/ci-verifier

/ci-gke

/ci-multicluster


text:
v1.12: vendor: update logrus v1.9.0 => v1.9.3

Release v1.9.3 address a potential DoS vulnerability.
Update the logrus dependency to address a security issue.

/test-backport-1.12

Looks like a flake, I'll re-trigger the test
	 Error: INSTALLATION FAILED: cannot re-use a name that is still in use

/test-1.22-4.9

/test-backport-1.12

/test-1.24-net-next

authors: aanm rolinh


text:
Optimize allowedIPs for wireguard with CIDRs

I tried to grasp all the details in the commit message.
The idea is to use pod CIDRs when available rather than having to add single IPs/32 or IPs/128 to the allowedIPs in WireGuard. Among the advantages:

less lookup in the kernel trie while processing packets
less updates to the peer configurations in the kernel.

Fixes: #35331
Optimize AllowedIPs tracking for WireGuard with CIDRs when available, preventing tracking each individual IP and reducing peer configuration updates.

/test

/ci-ginkgo

/ci-ginkgo

/ci-ginkgo

/test

/test

/test

/test

I created a kind cilium (vxlan routing) using this PR, the wg output from a node is:
$ nscontainer kind-worker wg
interface: cilium_wg0
  public key: e7DcIto1CcNWZasdIPiyES1qpET0KPCU8R73zZd28FI=
  private key: (hidden)
  listening port: 51871
  fwmark: 0x1e00

peer: +t7+WQjJyRpVsTBEsrgKWXypwxL5FZOcPZ9y1o4oMCQ=
  endpoint: 172.20.0.2:51871
  allowed ips: 10.244.0.0/24, fd00:10:244::/64, 172.20.0.2/32, fc00:c111::2/128
  latest handshake: 1 minute, 37 seconds ago
  transfer: 3.63 KiB received, 3.57 KiB sent

peer: WY3mQEhOPIG4B/H7tPzhcbaHzBHC3lrkkNEFOLQQukk=
  endpoint: 172.20.0.5:51871
  allowed ips: 10.244.2.0/24, fd00:10:244:2::/64, 172.20.0.5/32, fc00:c111::5/128
  latest handshake: 1 minute, 41 seconds ago
  transfer: 11.79 KiB received, 11.93 KiB sent

peer: vr/azY9vQlnrHIt051zSa7e7SnDcWvBnLIH3Q3S9CAQ=
  endpoint: 172.20.0.3:51871
  allowed ips: fd00:10:244:1::/64, 172.20.0.3/32, fc00:c111::3/128, 10.244.1.0/24
  latest handshake: 2 minutes ago
  transfer: 14.43 KiB received, 14.00 KiB sent

There are still cidrs in allowed ips, are they expected?

I created a kind cilium (vxlan routing) using this PR, the wg output from a node is:
...
There are still cidrs in allowed ips, are they expected?

Thanks for pointing out, please let me know which was the command you used to install it, as I'm not able to reproduce it.
In any case, I'm moving the CIDRs-related logic into a new separate PR.
In this I'll only handle the difference between previous behavior and tunneling mode, while also refactoring tests and adding a fallback hidden flag to the daemon config to use our old behavior in case something's wrong with the new logic.

/test

/test

/test


text:
v1.0 backports 2018-06-15

#4527
#4439

This change is

test-me-please

(Ok, looks like previous CI run was a flake. https://jenkins.cilium.io/job/Cilium-PR-Ginkgo-Tests-Validated/4179/testReport/)


text:
DO NOT MERGE: Testing v1.3 before release

This change is

test-me-please

test-missed-k8s

Build failure:
https://jenkins.cilium.io/job/Cilium-PR-Ginkgo-Tests-K8s/1119
etcd-operator scaled down again it looks like.

test-me-please

test-missed-k8s

test-upstream-k8s

test-docs-please

authors: ianvernon tgraf


text:
Decouple CRD identity allocator from kvstore availability

This change is

Coverage decreased (-0.005%) to 44.251% when pulling 4537d27dc3b1da7591fd337b2c47aad40caf750a on pr/tgraf/allocator-kvstore into 620068e100b0b046d45d11bdf594426065701ebe on master.

test-me-please

authors: coveralls tgraf


text:
v1.6 backports 2019-08-29

PR: 9039 -- doc: Add Azure CNI to CNI chaining section (@tgraf) -- https://github.com/cilium/cilium/pull/9039
PR: 9049 -- test: Wait for at least one Istio POD to get ready (@jrajahalme) -- https://github.com/cilium/cilium/pull/9049
PR: 9063 -- CI: decouple HTTP and DNS testing in K8sPolicyTest (@raybejjani) -- https://github.com/cilium/cilium/pull/9063
PR: 9074 -- docs: clarify nodeport and host-reachable services and 5.0.y kernel (@borkmann) -- https://github.com/cilium/cilium/pull/9074
PR: 9072 -- cilium: silence harmless CILIUM_TRANSIENT_FORWARD warning on startup (@borkmann) -- https://github.com/cilium/cilium/pull/9072

This change is

never-tell-me-the-odds

k8s upstream test seems to have an issue:
01:00:03.457  # k8s.io/client-go/transport
01:00:03.457  ../../../k8s.io/client-go/transport/round_trippers.go:70:11: cannot convert klog.V(9) (type klog.Verbose) to type bool
01:00:03.457  ../../../k8s.io/client-go/transport/round_trippers.go:72:11: cannot convert klog.V(8) (type klog.Verbose) to type bool
01:00:03.457  ../../../k8s.io/client-go/transport/round_trippers.go:74:11: cannot convert klog.V(7) (type klog.Verbose) to type bool
01:00:03.457  ../../../k8s.io/client-go/transport/round_trippers.go:76:11: cannot convert klog.V(6) (type klog.Verbose) to type bool
01:00:03.457  2019/08/29 11:35:39 e2e.go:77: err: go get -u k8s.io/test-infra/kubetest: exit status 2
01:00:03.457  exit status 1
[Pipeline] }

authors: borkmann tgraf


text:
Fix reporting the monitor status in cilium status

Previously the MonitorStatus was returned directly as a structure,
rather than a pointer, which meant that the node-monitor status probe
in the daemon under startStatusCollector() would not successfully cast
the status report to a *models.ClusterStatus, and as such the monitor
would always report to be disabled.
Fix this by returning a pointer just like the other status reports do.

This change is

test-me-please

Coverage increased (+0.02%) to 45.161% when pulling 4a46a6daf68ad867f950370200e0ab72fb109f31 on joestringer:submit/fix-monitor-status into da33ac4845fd0bcc38e7df67ee37395105a4ce18 on cilium:master.

authors: coveralls joestringer