[libcamera-devel] [PATCH v4 0/3] lc-compliance: Add a libcamera compliance tool
Nícolas F. R. A. Prado
nfraprado at collabora.com
Mon Mar 29 21:00:55 CEST 2021
Hi Niklas,
Running lc-compliance on the Rock Pi 4 with a imx219 camera fails for me,
although I think this indicates a bug in the rkisp1 pipeline rather than in
lc-compliance.
I'm able to stream from the camera on this platform using cam.
These are my libcamera and kernel trees for reference:
https://gitlab.collabora.com/nfraprado/libcamera/-/tree/lc-compliance
https://gitlab.collabora.com/nfraprado/linux/-/tree/rockpi4-cam
First of all, as already mentioned on
https://patchwork.libcamera.org/cover/11542/#15629 , rkisp1 doesn't seem to
support raw streaming, thus the following SEGFAULT occurs:
user at gst-build-sdk:~$ lc-compliance -c '/base/i2c at ff3d0000/sensor at 10'
[0:05:52.419438332] [336] INFO Camera camera_manager.cpp:298 libcamera v0.0.0+2470-8029d912
[0:05:52.442680790] [337] WARN CameraSensor camera_sensor.cpp:306 'imx219 4-0010': Recommended V4L2 control 0x009a0922 not supported
[0:05:52.442872415] [337] WARN CameraSensor camera_sensor.cpp:358 'imx219 4-0010': The sensor kernel driver needs to be fixed
[0:05:52.442946790] [337] WARN CameraSensor camera_sensor.cpp:360 'imx219 4-0010': See Documentation/sensor_driver_requirements.rst in the libcamera sources for more information
[0:05:52.449002374] [337] WARN CameraSensor camera_sensor.cpp:473 'imx219 4-0010': Failed to retrieve the camera location
Using camera /base/i2c at ff3d0000/sensor at 10
= Test role raw
* Test single capture cycles
[0:05:52.459568749] [336] WARN RkISP1 rkisp1.cpp:537 Requested stream role not supported: 0
Segmentation fault
Disabling the raw streaming though, I now get a "No BufferCache available to
queue." error:
user at gst-build-sdk:~$ lc-compliance -c '/base/i2c at ff3d0000/sensor at 10'
[0:01:19.542206077] [326] INFO Camera camera_manager.cpp:298 libcamera v0.0.0+2469-229601cc
[0:01:19.566360452] [327] WARN CameraSensor camera_sensor.cpp:306 'imx219 4-0010': Recommended V4L2 control 0x009a0922 not supported
[0:01:19.566502785] [327] WARN CameraSensor camera_sensor.cpp:358 'imx219 4-0010': The sensor kernel driver needs to be fixed
[0:01:19.566545660] [327] WARN CameraSensor camera_sensor.cpp:360 'imx219 4-0010': SSee Documentation/sensor_driver_requirements.rst in the libcamera sources for more information
[0:01:19.574099160] [327] WARN CameraSensor camera_sensor.cpp:473 'imx219 4-0010': Failed to retrieve the camera location
Using camera /base/i2c at ff3d0000/sensor at 10
= Test role still
* Test single capture cycles
[0:01:19.585448577] [326] INFO Camera camera.cpp:905 configuring streams: (0) 3280x2464-NV12
[0:01:19.587510869] [327] INFO IPARkISP1 rkisp1.cpp:127 Exposure: 4-3522 Gain: 1-232
- SKIP: Camera needs 4 requests, can't test only 1
[0:01:19.651448077] [326] INFO Camera camera.cpp:905 configuring streams: (0) 3280x2464-NV12
[0:01:19.653177869] [327] INFO IPARkISP1 rkisp1.cpp:127 Exposure: 4-3522 Gain: 1-232
- SKIP: Camera needs 4 requests, can't test only 2
[0:01:19.714663619] [326] INFO Camera camera.cpp:905 configuring streams: (0) 3280x2464-NV12
[0:01:19.716524952] [327] INFO IPARkISP1 rkisp1.cpp:127 Exposure: 4-3522 Gain: 1-232
- SKIP: Camera needs 4 requests, can't test only 3
[0:01:19.787002202] [326] INFO Camera camera.cpp:905 configuring streams: (0) 3280x2464-NV12
[0:01:19.788506285] [327] INFO IPARkISP1 rkisp1.cpp:127 Exposure: 4-3522 Gain: 1-232
- PASS: Balanced capture of 5 requests with 1 start cycles
[0:01:20.442971911] [326] INFO Camera camera.cpp:905 configuring streams: (0) 3280x2464-NV12
[0:01:20.444870327] [327] INFO IPARkISP1 rkisp1.cpp:127 Exposure: 4-3522 Gain: 1-232
- PASS: Balanced capture of 8 requests with 1 start cycles
[0:01:21.308764328] [326] INFO Camera camera.cpp:905 configuring streams: (0) 3280x2464-NV12
[0:01:21.310607911] [327] INFO IPARkISP1 rkisp1.cpp:127 Exposure: 4-3522 Gain: 1-232
- PASS: Balanced capture of 13 requests with 1 start cycles
[0:01:22.508115453] [326] INFO Camera camera.cpp:905 configuring streams: (0) 3280x2464-NV12
[0:01:22.509954953] [327] INFO IPARkISP1 rkisp1.cpp:127 Exposure: 4-3522 Gain: 1-232
- PASS: Balanced capture of 21 requests with 1 start cycles
[0:01:24.240576371] [326] INFO Camera camera.cpp:905 configuring streams: (0) 3280x2464-NV12
[0:01:24.242428996] [327] INFO IPARkISP1 rkisp1.cpp:127 Exposure: 4-3522 Gain: 1-232
- PASS: Balanced capture of 34 requests with 1 start cycles
[0:01:26.839422081] [326] INFO Camera camera.cpp:905 configuring streams: (0) 3280x2464-NV12
[0:01:26.841328081] [327] INFO IPARkISP1 rkisp1.cpp:127 Exposure: 4-3522 Gain: 1-232
- PASS: Balanced capture of 55 requests with 1 start cycles
[0:01:30.838071457] [326] INFO Camera camera.cpp:905 configuring streams: (0) 3280x2464-NV12
[0:01:30.839926124] [327] INFO IPARkISP1 rkisp1.cpp:127 Exposure: 4-3522 Gain: 1-232
- PASS: Balanced capture of 89 requests with 1 start cycles
* Test multiple start/stop cycles
[0:01:37.103226919] [326] INFO Camera camera.cpp:905 configuring streams: (0) 3280x2464-NV12
[0:01:37.105141377] [327] INFO IPARkISP1 rkisp1.cpp:127 Exposure: 4-3522 Gain: 1-232
- SKIP: Camera needs 4 requests, can't test only 1
[0:01:37.175349669] [326] INFO Camera camera.cpp:905 configuring streams: (0) 3280x2464-NV12
[0:01:37.177253044] [327] INFO IPARkISP1 rkisp1.cpp:127 Exposure: 4-3522 Gain: 1-232
- SKIP: Camera needs 4 requests, can't test only 2
[0:01:37.245730044] [326] INFO Camera camera.cpp:905 configuring streams: (0) 3280x2464-NV12
[0:01:37.247179585] [327] INFO IPARkISP1 rkisp1.cpp:127 Exposure: 4-3522 Gain: 1-232
- SKIP: Camera needs 4 requests, can't test only 3
[0:01:37.310524961] [326] INFO Camera camera.cpp:905 configuring streams: (0) 3280x2464-NV12
[0:01:37.312106044] [327] INFO IPARkISP1 rkisp1.cpp:127 Exposure: 4-3522 Gain: 1-232
- PASS: Balanced capture of 5 requests with 3 start cycles
[0:01:39.286329003] [326] INFO Camera camera.cpp:905 configuring streams: (0) 3280x2464-NV12
[0:01:39.288254753] [327] INFO IPARkISP1 rkisp1.cpp:127 Exposure: 4-3522 Gain: 1-232
- PASS: Balanced capture of 8 requests with 3 start cycles
[0:01:41.875714796] [326] INFO Camera camera.cpp:905 configuring streams: (0) 3280x2464-NV12
[0:01:41.877583088] [327] INFO IPARkISP1 rkisp1.cpp:127 Exposure: 4-3522 Gain: 1-232
- PASS: Balanced capture of 13 requests with 3 start cycles
[0:01:45.463695506] [326] INFO Camera camera.cpp:905 configuring streams: (0) 3280x2464-NV12
[0:01:45.465565256] [327] INFO IPARkISP1 rkisp1.cpp:127 Exposure: 4-3522 Gain: 1-232
- PASS: Balanced capture of 21 requests with 3 start cycles
[0:01:50.632783759] [326] INFO Camera camera.cpp:905 configuring streams: (0) 3280x2464-NV12
[0:01:50.635397967] [327] INFO IPARkISP1 rkisp1.cpp:127 Exposure: 4-3522 Gain: 1-232
- PASS: Balanced capture of 34 requests with 3 start cycles
[0:01:58.396298012] [326] INFO Camera camera.cpp:905 configuring streams: (0) 3280x2464-NV12
[0:01:58.398886554] [327] INFO IPARkISP1 rkisp1.cpp:127 Exposure: 4-3522 Gain: 1-232
- PASS: Balanced capture of 55 requests with 3 start cycles
[0:02:10.352359601] [326] INFO Camera camera.cpp:905 configuring streams: (0) 3280x2464-NV12
[0:02:10.354941726] [327] INFO IPARkISP1 rkisp1.cpp:127 Exposure: 4-3522 Gain: 1-232
- PASS: Balanced capture of 89 requests with 3 start cycles
* Test unbalanced stop
[0:02:29.101426527] [326] INFO Camera camera.cpp:905 configuring streams: (0) 3280x2464-NV12
[0:02:29.103894902] [327] INFO IPARkISP1 rkisp1.cpp:127 Exposure: 4-3522 Gain: 1-232
- PASS: Unbalanced capture of 1 requests
[0:02:29.482435069] [326] INFO Camera camera.cpp:905 configuring streams: (0) 3280x2464-NV12
[0:02:29.484985694] [327] INFO IPARkISP1 rkisp1.cpp:127 Exposure: 4-3522 Gain: 1-232
[0:02:29.969575319] [327] FATAL V4L2 v4l2_videodevice.cpp:1400 /dev/video0[13:cap]: No BufferCache available to queue.
Backtrace:
/usr/local/lib/libcamera.so(_ZN9libcamera15V4L2VideoDevice11queueBufferEPNS_11FrameBufferE+0xa8) [0x7fb33adfa8]
/usr/local/lib/libcamera.so(_ZN9libcamera10RkISP1Path11queueBufferEPNS_11FrameBufferE+0x24) [0x7fb33f0a7c]
/usr/local/lib/libcamera.so(_ZN9libcamera16RkISP1CameraData16queueFrameActionEjRKNS_3ipa6rkisp112RkISP1ActionE+0x110) [0x7fb33ed0f8]
/usr/local/lib/libcamera.so(_ZN9libcamera17BoundMethodMemberINS_16RkISP1CameraDataEvJjRKNS_3ipa6rkisp112RkISP1ActionEEE8activateEjS6_b+0x9c) [0x7fb33f4f9c]
/usr/local/lib/libcamera.so(_ZN9libcamera6SignalIJjRKNS_3ipa6rkisp112RkISP1ActionEEE4emitEjS5_+0x94) [0x7fb32e8f24]
/usr/local/lib/libcamera.so(_ZN9libcamera3ipa6rkisp114IPAProxyRkISP122queueFrameActionThreadEjRKNS1_12RkISP1ActionE+0x7c) [0x7fb32e7c2c]
/usr/local/lib/libcamera.so(_ZN9libcamera17BoundMethodMemberINS_3ipa6rkisp114IPAProxyRkISP1EvJjRKNS2_12RkISP1ActionEEE6invokeEjS6_+0x84) [0x7fb32eaf7c]
/usr/local/lib/libcamera.so(_ZN9libcamera15BoundMethodArgsIvJjRKNS_3ipa6rkisp112RkISP1ActionEEE10invokePackIJLm0ELm1EEEEvPNS_19BoundMethodPackBaseESt16integer_sequenceImJXspT_EEE+0x5c) [0x7fb32eb210]
/usr/local/lib/libcamera.so(_ZN9libcamera15BoundMethodArgsIvJjRKNS_3ipa6rkisp112RkISP1ActionEEE10invokePackEPNS_19BoundMethodPackBaseE+0x1c) [0x7fb32ead94]
/usr/local/lib/libcamera.so(_ZN9libcamera13InvokeMessage6invokeEv+0x44) [0x7fb3383b5c]
/usr/local/lib/libcamera.so(_ZN9libcamera6Object7messageEPNS_7MessageE+0x48) [0x7fb33840dc]
/usr/local/lib/libcamera.so(_ZN9libcamera6Thread16dispatchMessagesENS_7Message4TypeE+0x1fc) [0x7fb3398b98]
/usr/local/lib/libcamera.so(_ZN9libcamera3ipa6rkisp114IPAProxyRkISP110stopThreadEv+0xdc) [0x7fb32e6d40]
/usr/local/lib/libcamera.so(_ZN9libcamera3ipa6rkisp114IPAProxyRkISP14stopEv+0x30) [0x7fb32e6c50]
/usr/local/lib/libcamera.so(_ZN9libcamera21PipelineHandlerRkISP14stopEPNS_6CameraE+0x178) [0x7fb33ef484]
/usr/local/lib/libcamera.so(_ZN9libcamera17BoundMethodMemberINS_15PipelineHandlerEvJPNS_6CameraEEE6invokeES3_+0x7c) [0x7fb3308c50]
/usr/local/lib/libcamera.so(_ZN9libcamera15BoundMethodArgsIvJPNS_6CameraEEE10invokePackIJLm0EEEEvPNS_19BoundMethodPackBaseESt16integer_sequenceImJXspT_EEE+0x4c) [0x7fb33090cc]
/usr/local/lib/libcamera.so(_ZN9libcamera15BoundMethodArgsIvJPNS_6CameraEEE10invokePackEPNS_19BoundMethodPackBaseE+0x1c) [0x7fb3308bc8]
/usr/local/lib/libcamera.so(_ZN9libcamera13InvokeMessage6invokeEv+0x44) [0x7fb3383b5c]
/usr/local/lib/libcamera.so(_ZN9libcamera6Object7messageEPNS_7MessageE+0x48) [0x7fb33840dc]
/usr/local/lib/libcamera.so(_ZN9libcamera6Thread16dispatchMessagesENS_7Message4TypeE+0x1fc) [0x7fb3398b98]
/usr/local/lib/libcamera.so(_ZN9libcamera19EventDispatcherPoll13processEventsEv+0x20) [0x7fb33569c0]
/usr/local/lib/libcamera.so(_ZN9libcamera6Thread4execEv+0x78) [0x7fb3398164]
/usr/local/lib/libcamera.so(_ZN9libcamera13CameraManager7Private3runEv+0xbc) [0x7fb3309d9c]
/usr/local/lib/libcamera.so(_ZN9libcamera6Thread11startThreadEv+0x100) [0x7fb33980e0]
/usr/local/lib/libcamera.so(_ZSt13__invoke_implIvMN9libcamera6ThreadEFvvEPS1_JEET_St21__invoke_memfun_derefOT0_OT1_DpOT2_+0x78) [0x7fb339c554]
/usr/local/lib/libcamera.so(_ZSt8__invokeIMN9libcamera6ThreadEFvvEJPS1_EENSt15__invoke_resultIT_JDpT0_EE4typeEOS6_DpOS7_+0x38) [0x7fb339c46c]
/usr/local/lib/libcamera.so(_ZNSt6thread8_InvokerISt5tupleIJMN9libcamera6ThreadEFvvEPS3_EEE9_M_invokeIJLm0ELm1EEEEvSt12_Index_tupleIJXspT_EEE+0x3c) [0x7fb339c3d0]
/usr/local/lib/libcamera.so(_ZNSt6thread8_InvokerISt5tupleIJMN9libcamera6ThreadEFvvEPS3_EEEclEv+0x14) [0x7fb339c388]
/usr/local/lib/libcamera.so(_ZNSt6thread11_State_implINS_8_InvokerISt5tupleIJMN9libcamera6ThreadEFvvEPS4_EEEEE6_M_runEv+0x18) [0x7fb339c368]
Aborted
The comment in the code suggests that this is something that should be fixed in
the pipeline:
/*
* Pipeline handlers should not requeue buffers after releasing the
* buffers on the device. Any occurence of this error should be fixed
* in the pipeline handler directly.
*/
Also, just running it a second time after that error, a kernel panic occurs:
[ 195.788185] SError Interrupt on CPU1, code 0xbf000000 -- SError
[ 195.788205] CPU: 1 PID: 367 Comm: lc-compliance Not tainted 5.11.0-00001-g16b7543b296a #45
[ 195.788215] Hardware name: Radxa ROCK Pi 4A (DT)
[ 195.788224] pstate: 40000005 (nZcv daif -PAN -UAO -TCO BTYPE=--)
[ 195.788231] pc : get_random_u64+0x28/0xd4
[ 195.788238] lr : copy_process+0x2e8/0x1260
[ 195.788245] sp : ffffffc012103c10
[ 195.788252] x29: ffffffc012103c10 x28: ffffff80050d5700
[ 195.788273] x27: ffffffc011a90fc4 x26: ffffff800d804e80
[ 195.788290] x25: ffffff800d804e80 x24: ffffffc012828000
[ 195.788308] x23: ffffff80050d1d00 x22: ffffffc011a358d0
[ 195.788326] x21: ffffffc012103db0 x20: 0000000000000000
[ 195.788343] x19: 00000000003d0f00 x18: 0000000000000000
[ 195.788361] x17: 0000000000000000 x16: 0000000000000000
[ 195.788379] x15: 0000000000000000 x14: 0000000000000000
[ 195.788397] x13: 0000000000000000 x12: 0000000000000000
[ 195.788414] x11: 0000000000000000 x10: 0000000000000000
[ 195.788432] x9 : ffffffc01003ea00 x8 : 0000000000000000
[ 195.788450] x7 : 0000000000000000 x6 : ffffff80050d6580
[ 195.788467] x5 : 0000000000000000 x4 : 0000000000000000
[ 195.788485] x3 : 0000000000000000 x2 : 0000000000000000
[ 195.788502] x1 : ffffffffffffffff x0 : 0000000000000027
[ 195.788521] Kernel panic - not syncing: Asynchronous SError Interrupt
[ 195.788532] CPU: 1 PID: 367 Comm: lc-compliance Not tainted 5.11.0-00001-g16b7543b296a #45
[ 195.788541] Hardware name: Radxa ROCK Pi 4A (DT)
[ 195.788548] Call trace:
[ 195.788554] dump_backtrace+0x0/0x1b4
[ 195.788560] show_stack+0x24/0x34
[ 195.788566] dump_stack+0xcc/0x10c
[ 195.788573] panic+0x170/0x348
[ 195.788579] nmi_panic+0x7c/0xa0
[ 195.788585] arm64_serror_panic+0x7c/0x88
[ 195.788592] do_serror+0x2c/0x68
[ 195.788598] el1_error+0x78/0xf0
[ 195.788604] get_random_u64+0x28/0xd4
[ 195.788611] copy_process+0x2e8/0x1260
[ 195.788617] kernel_clone+0xa8/0x2b0
[ 195.788624] __do_sys_clone+0x58/0x80
[ 195.788631] __arm64_sys_clone+0x28/0x34
[ 195.788638] el0_svc_common.constprop.0+0x114/0x188
[ 195.788645] do_el0_svc+0x8c/0x98
[ 195.788651] el0_svc+0x20/0x30
[ 195.788658] el0_sync_handler+0x144/0x1f0
[ 195.788664] el0_sync+0x174/0x180
[ 195.788713] SMP: stopping secondary CPUs
[ 195.788721] Kernel Offset: disabled
[ 195.788728] CPU features: 0x00040022,6100200c
[ 195.788735] Memory Limit: none
Just thought I'd document these issues in case it's reproducible by others as
well.
Thanks,
Nícolas
More information about the libcamera-devel
mailing list