@@ -346,15 +346,18 @@ details::StringSplitter split(const std::string &str, const std::string &delim)
*/
bool isLibcameraInstalled()
{
+#if 0
/*
* DT_RUNPATH (DT_RPATH when the linker uses old dtags) is removed on
* install.
*/
for (const ElfW(Dyn) *dyn = _DYNAMIC; dyn->d_tag != DT_NULL; ++dyn) {
- if (dyn->d_tag == DT_RUNPATH || dyn->d_tag == DT_RPATH)
+ if (dyn->d_tag == DT_RUNPATH || dyn->d_tag == DT_RPATH) {
+ printf("XXXXX - dyn->d_un.d_ptr: %s\n", (char*)dyn->d_un.d_ptr);
return false;
+ }
}
-
+#endif
return true;
}
Maybe this is because of the buildroot local meson patch ([1]), leading
to an empty (but not absent) RPATH?
With this patch applied, next try:
$ qcam -platform linuxfb -c ov5647
[ 60.656531] random: crng init done
[0:01:00.797904315] [248] INFO Camera camera_manager.cpp:280 libcamera v0.0.0
[0:01:01.248904870] [248] INFO Camera camera.cpp:770 configuring streams: (0) 800x600-0x34325241
[0:01:01.249270722] [249] INFO RPI raspberrypi.cpp:115 Mode: 2592x1944 fmt BG10 Score: 2284 (best 2284)
[0:01:01.249425945] [249] INFO RPI raspberrypi.cpp:115 Mode: 1920x1080 fmt BG10 Score: 2066.67 (best 2066.67)
[0:01:01.249534278] [249] INFO RPI raspberrypi.cpp:115 Mode: 1296x972 fmt BG10 Score: 1717 (best 1717)
[0:01:01.249633315] [249] INFO RPI raspberrypi.cpp:115 Mode: 640x480 fmt BG10 Score: 2060 (best 1717)
[0:01:01.249731593] [249] INFO RPI raspberrypi.cpp:115 Mode: 640x480 fmt BA81 Score: 3060 (best 1717)
[0:01:01.249828611] [249] INFO RPI raspberrypi.cpp:115 Mode: 2592x1944 fmt pBAA Score: 1784 (best 1717)
[0:01:01.249922500] [249] INFO RPI raspberrypi.cpp:115 Mode: 1920x1080 fmt pBAA Score: 1566.67 (best 1566.67)
[0:01:01.250069815] [249] INFO RPI raspberrypi.cpp:115 Mode: 1296x972 fmt pBAA Score: 1217 (best 1217)
[0:01:01.250169482] [249] INFO RPI raspberrypi.cpp:115 Mode: 640x480 fmt pBAA Score: 1560 (best 1217)
[0:01:01.250298593] [249] INFO RPI raspberrypi.cpp:619 Sensor: ov5647 - Selected mode: 1296x972-pBAA
Zero-copy enabled
[0:01:01.319715019] [249] FATAL default raspberrypi.cpp:791 assertion "data->staggeredCtrl_" failed
Backtrace:
/usr/lib/libcamera.so(_ZN9libcamera18PipelineHandlerRPi5startEPNS_6CameraE+0x164) [0xb6eb432c]
/usr/lib/libcamera.so(_ZN9libcamera15BoundMethodArgsIiJPNS_6CameraEEE10invokePackEPNS_19BoundMethodPackBaseE+0x18) [0xb6e7f670]
/usr/lib/libcamera.so(_ZN9libcamera6Object7messageEPNS_7MessageE+0x1c) [0xb6e9eafc]
/usr/lib/libcamera.so(_ZN9libcamera6Thread16dispatchMessagesEv+0xfc) [0xb6ea3f44]
/usr/lib/libcamera.so(_ZN9libcamera19EventDispatcherPoll13processEventsEv+0x14) [0xb6e92d08]
/usr/lib/libcamera.so(_ZN9libcamera6Thread4execEv+0x54) [0xb6ea3e0c]
/usr/lib/libcamera.so(_ZN9libcamera13CameraManager7Private3runEv+0xa8) [0xb6e80f44]
/usr/lib/libstdc++.so.6(+0x9bddc) [0xb6104ddc]
Aborted
Running with LIBCAMERA_LOG_LEVELS=DEBUG gives:
[...]
[0:02:18.061949510] [251] DEBUG IPAModule ipa_module.cpp:330 ipa_rpi.so: IPA module /usr/lib/libcamera/ipa_rpi.so is signed
[...]
[0:02:18.125804232] [252] DEBUG IPAManager ipa_manager.cpp:316 IPA module /usr/lib/libcamera/ipa_rpi.so signature is not valid
[0:02:18.126069417] [252] DEBUG IPAProxy ipa_proxy_linux.cpp:50 initializing dummy proxy: loading IPA from /usr/lib/libcamera/ipa_rpi.so
[...]
This can be avoided with the following patch/hack (disable signature check):
@@ -301,6 +301,9 @@ std::unique_ptr<IPAProxy> IPAManager::createIPA(PipelineHandler *pipe,
bool IPAManager::isSignatureValid(IPAModule *ipa) const
{
+#if 1
+ return true;
+#else
#if HAVE_IPA_PUBKEY
File file{ ipa->path() };
if (!file.open(File::ReadOnly))
@@ -320,6 +323,7 @@ bool IPAManager::isSignatureValid(IPAModule *ipa) const
#else
return false;
#endif
+#endif
}
} /* namespace libcamera */