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

Umang Jain umang.jain at ideasonboard.com
Wed Sep 1 07:49:27 CEST 2021


Hello,

On 9/1/21 2:34 AM, Laurent Pinchart wrote:
> Hi Hiro,
>
> Thank you for the patch.
>
> On Wed, Sep 01, 2021 at 03:37:39AM +0900, Hirokazu Honda wrote:
>> The problem is happening because we seem to add a CameraStream
>> associated buffer(depending on the CameraStream::Type) to the Request,
> s/(/ (/
>
>> in CameraDevice::processCaptureRequest().
>>
>> However, when the camera stops, all the current buffers are marked with
>> FrameMetadata::FrameCancelled and proceed to completion. But the buffer
>> associated with the CameraStream (that was previously added to the
>> request) has now been cleared out with a part of streams_.clear(), even
>> before the camera stop() has been invoked. Any access to those request
>> buffers after they have been cleared, shall result in a crash.
> s/shall/will/
>
>> Signed-off-by: Hirokazu Honda <hiroh at chromium.org>
> I can fix the above when pushing.
>
> Reviewed-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>


Reviewed-by: Umang Jain <umang.jain at ideasonboard.com>

>
>> ---
>>   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..fda77db4 100644
>> --- a/src/android/camera_device.cpp
>> +++ b/src/android/camera_device.cpp
>> @@ -423,8 +423,6 @@ int CameraDevice::open(const hw_module_t *hardwareModule)
>>   
>>   void CameraDevice::close()
>>   {
>> -	streams_.clear();
>> -
>>   	stop();
>>   
>>   	camera_->release();
>> @@ -457,6 +455,8 @@ void CameraDevice::stop()
>>   	camera_->stop();
>>   
>>   	descriptors_.clear();
>> +	streams_.clear();
>> +
>>   	state_ = State::Stopped;
>>   }
>>   


More information about the libcamera-devel mailing list