[libcamera-devel] [PATCH] qcam: Fix ViewFinder memory leak
Jacopo Mondi
jacopo at jmondi.org
Tue Sep 24 10:16:00 CEST 2019
Hi Kieran,
On Mon, Sep 23, 2019 at 02:22:29PM +0100, Kieran Bingham wrote:
> When setting the format on the ViewFinder, a new image_ is allocated.
> Any change in format deletes the existing allocation, but it is not
> cleaned up on shutdown:
>
> Direct leak of 32 byte(s) in 1 object(s) allocated from:
> #0 0x7f0bf8a7e17f in operator new(unsigned long) (/usr/lib/x86_64-linux-gnu/libasan.so.5+0x10e17f)
> #1 0x564c7205f7b0 in ViewFinder::setFormat(unsigned int, unsigned int, unsigned int) ../src/qcam/viewfinder.cpp:43
> #2 0x564c71fec467 in MainWindow::startCapture() ../src/qcam/main_window.cpp:152
> #3 0x564c71fe6c1a in MainWindow::MainWindow(libcamera::CameraManager*, OptionsParser::Options const&) ../src/qcam/main_window.cpp:40
> #4 0x564c71fdf133 in main ../src/qcam/main.cpp:76
> #5 0x7f0bf5944b6a in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x26b6a)
>
> Provide a ViewFinder destructor, and delete the allocation as
> appropriate.
Good catch, but I don't see where the viewfinder gets destroyed in
main_window.cpp. How does the newly added destructor gets called?
Thanks
j
>
> Signed-off-by: Kieran Bingham <kieran.bingham at ideasonboard.com>
> ---
> src/qcam/viewfinder.cpp | 5 +++++
> src/qcam/viewfinder.h | 1 +
> 2 files changed, 6 insertions(+)
>
> diff --git a/src/qcam/viewfinder.cpp b/src/qcam/viewfinder.cpp
> index 224a227ddd5b..98a8ab68e5f6 100644
> --- a/src/qcam/viewfinder.cpp
> +++ b/src/qcam/viewfinder.cpp
> @@ -16,6 +16,11 @@ ViewFinder::ViewFinder(QWidget *parent)
> {
> }
>
> +ViewFinder::~ViewFinder()
> +{
> + delete image_;
> +}
> +
> void ViewFinder::display(const unsigned char *raw, size_t size)
> {
> converter_.convert(raw, size, image_);
> diff --git a/src/qcam/viewfinder.h b/src/qcam/viewfinder.h
> index c9ca98913e05..33bdb1460f84 100644
> --- a/src/qcam/viewfinder.h
> +++ b/src/qcam/viewfinder.h
> @@ -17,6 +17,7 @@ class ViewFinder : public QLabel
> {
> public:
> ViewFinder(QWidget *parent);
> + ~ViewFinder();
>
> int setFormat(unsigned int format, unsigned int width,
> unsigned int height);
> --
> 2.20.1
>
> _______________________________________________
> libcamera-devel mailing list
> libcamera-devel at lists.libcamera.org
> https://lists.libcamera.org/listinfo/libcamera-devel
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <https://lists.libcamera.org/pipermail/libcamera-devel/attachments/20190924/7a1487e3/attachment.sig>
More information about the libcamera-devel
mailing list