[libcamera-devel] [PATCH] android: camera_device: Fix crash in calling CameraDevice::close()

Hirokazu Honda hiroh at chromium.org
Tue Aug 31 10:05:28 CEST 2021


This fixes the crash when post processing is needed and some capture
request is being processed by PipelineHandler upon calling
CameraDevice::close().
The crash happens in Request::completeBuffer(), which is invoked by
Camera::stop(). It uses FrameBuffer after free. The FrameBuffer is
allocated and owned by FrameBufferAllocator, and FrameBufferAllocator
is owned by CamerStream. So Camera::stop() should be executed before
destroying CameraStream.

Signed-off-by: Hirokazu Honda <hiroh at chromium.org>
---
 src/android/camera_device.cpp | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp
index 8ca76719..74a95a2a 100644
--- a/src/android/camera_device.cpp
+++ b/src/android/camera_device.cpp
@@ -423,10 +423,10 @@ int CameraDevice::open(const hw_module_t *hardwareModule)
 
 void CameraDevice::close()
 {
-	streams_.clear();
-
 	stop();
 
+	streams_.clear();
+
 	camera_->release();
 }
 
-- 
2.33.0.259.gc128427fd7-goog



More information about the libcamera-devel mailing list