[{"id":15604,"web_url":"https://patchwork.libcamera.org/comment/15604/","msgid":"<YEqcPT2llOebRm8I@pendragon.ideasonboard.com>","date":"2021-03-11T22:39:57","subject":"Re: [libcamera-devel] [PATCH 1/2] gst: provider: Fix crash in\n\tfinalize","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"Hi Nicolas,\n\nThank you for the patch.\n\nOn Thu, Mar 11, 2021 at 03:52:54PM -0500, Nicolas Dufresne wrote:\n> From: Nicolas Dufresne <nicolas.dufresne@collabora.com>\n> \n> Both the DeviceProvider and Device classes had the same mistake,\n> calling G_OBJECT_GET_CLASS() instead of G_OBJECT_CLASS() when\n> chaining their finalize call to their base class. This would\n> crash at destruction, which was causing gst-device-monitor-1.0\n> tool to crash and application using that API to crash too.\n> \n> Signed-off-by: Nicolas Dufresne <nicolas.dufresne@collabora.com>\n\nThis looks good to me,\n\nReviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n\nA bit annoying that gobject can't catch this type of issue at compile\ntime :-S\n\n> ---\n>  src/gstreamer/gstlibcameraprovider.cpp | 4 ++--\n>  1 file changed, 2 insertions(+), 2 deletions(-)\n> \n> diff --git a/src/gstreamer/gstlibcameraprovider.cpp b/src/gstreamer/gstlibcameraprovider.cpp\n> index ee44dc73..29da6c32 100644\n> --- a/src/gstreamer/gstlibcameraprovider.cpp\n> +++ b/src/gstreamer/gstlibcameraprovider.cpp\n> @@ -101,7 +101,7 @@ gst_libcamera_device_finalize(GObject *object)\n>  \n>  \tg_free(self->name);\n>  \n> -\tG_OBJECT_GET_CLASS(klass)->finalize(object);\n> +\tG_OBJECT_CLASS(klass)->finalize(object);\n>  }\n>  \n>  static void\n> @@ -218,7 +218,7 @@ gst_libcamera_provider_finalize(GObject *object)\n>  \n>  \tdelete self->cm;\n>  \n> -\treturn G_OBJECT_GET_CLASS(klass)->finalize(object);\n> +\treturn G_OBJECT_CLASS(klass)->finalize(object);\n>  }\n>  \n>  static void","headers":{"Return-Path":"<libcamera-devel-bounces@lists.libcamera.org>","X-Original-To":"parsemail@patchwork.libcamera.org","Delivered-To":"parsemail@patchwork.libcamera.org","Received":["from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id E3FF2BD80C\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu, 11 Mar 2021 22:40:34 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 4BE70602E8;\n\tThu, 11 Mar 2021 23:40:34 +0100 (CET)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 47D34602E8\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 11 Mar 2021 23:40:32 +0100 (CET)","from pendragon.ideasonboard.com (62-78-145-57.bb.dnainternet.fi\n\t[62.78.145.57])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id B41EE3E4;\n\tThu, 11 Mar 2021 23:40:31 +0100 (CET)"],"Authentication-Results":"lancelot.ideasonboard.com;\n\tdkim=fail reason=\"signature verification failed\" (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"q4td+VA7\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1615502431;\n\tbh=FwgXaJ+/WYvd0CI79sNGxNEFCML6AAxeDPR6H+/uSeg=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=q4td+VA7CSTnn/VlhKEedcbfnjH7Ib/9AOSsCzqNQMkl8iWf30upxBAOOKibbtn8y\n\tFpoM62Wye15yyMeZXoee43iaB+XtxQQPoPp4WtDhDBQVq/H7r46zbxRDgKjY6C3Gqu\n\tNeyj9nJsVveo3JOldoOHmg80M6Mrw/x7sjy9T1KA=","Date":"Fri, 12 Mar 2021 00:39:57 +0200","From":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","To":"Nicolas Dufresne <nicolas@ndufresne.ca>","Message-ID":"<YEqcPT2llOebRm8I@pendragon.ideasonboard.com>","References":"<20210311205255.741985-1-nicolas@ndufresne.ca>\n\t<20210311205255.741985-2-nicolas@ndufresne.ca>","MIME-Version":"1.0","Content-Disposition":"inline","In-Reply-To":"<20210311205255.741985-2-nicolas@ndufresne.ca>","Subject":"Re: [libcamera-devel] [PATCH 1/2] gst: provider: Fix crash in\n\tfinalize","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","Cc":"libcamera-devel@lists.libcamera.org, kernel@collabora.com,\n\tNicolas Dufresne <nicolas.dufresne@collabora.com>","Content-Type":"text/plain; charset=\"us-ascii\"","Content-Transfer-Encoding":"7bit","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":15607,"web_url":"https://patchwork.libcamera.org/comment/15607/","msgid":"<2cffaf6e-acc3-4f8c-20ad-56474029195d@uajain.com>","date":"2021-03-12T05:05:11","subject":"Re: [libcamera-devel] [PATCH 1/2] gst: provider: Fix crash in\n\tfinalize","submitter":{"id":1,"url":"https://patchwork.libcamera.org/api/people/1/","name":"Umang Jain","email":"email@uajain.com"},"content":"Hi Nicolas,\n\nThank you for the patch.\n\nOn 3/12/21 2:22 AM, Nicolas Dufresne wrote:\n> From: Nicolas Dufresne <nicolas.dufresne@collabora.com>\n>\n> Both the DeviceProvider and Device classes had the same mistake,\n> calling G_OBJECT_GET_CLASS() instead of G_OBJECT_CLASS() when\n> chaining their finalize call to their base class. This would\n> crash at destruction, which was causing gst-device-monitor-1.0\n> tool to crash and application using that API to crash too.\n>\n> Signed-off-by: Nicolas Dufresne <nicolas.dufresne@collabora.com>\nReviewed-by: Umang Jain <email@uajain.com>\n> ---\n>   src/gstreamer/gstlibcameraprovider.cpp | 4 ++--\n>   1 file changed, 2 insertions(+), 2 deletions(-)\n>\n> diff --git a/src/gstreamer/gstlibcameraprovider.cpp b/src/gstreamer/gstlibcameraprovider.cpp\n> index ee44dc73..29da6c32 100644\n> --- a/src/gstreamer/gstlibcameraprovider.cpp\n> +++ b/src/gstreamer/gstlibcameraprovider.cpp\n> @@ -101,7 +101,7 @@ gst_libcamera_device_finalize(GObject *object)\n>   \n>   \tg_free(self->name);\n>   \n> -\tG_OBJECT_GET_CLASS(klass)->finalize(object);\n> +\tG_OBJECT_CLASS(klass)->finalize(object);\n>   }\n>   \n>   static void\n> @@ -218,7 +218,7 @@ gst_libcamera_provider_finalize(GObject *object)\n>   \n>   \tdelete self->cm;\n>   \n> -\treturn G_OBJECT_GET_CLASS(klass)->finalize(object);\n> +\treturn G_OBJECT_CLASS(klass)->finalize(object);\n>   }\n>   \n>   static void","headers":{"Return-Path":"<libcamera-devel-bounces@lists.libcamera.org>","X-Original-To":"parsemail@patchwork.libcamera.org","Delivered-To":"parsemail@patchwork.libcamera.org","Received":["from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id C567FBD1F1\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri, 12 Mar 2021 05:05:17 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 22AA260106;\n\tFri, 12 Mar 2021 06:05:17 +0100 (CET)","from mail.uajain.com (static.126.159.217.95.clients.your-server.de\n\t[95.217.159.126])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 8484760106\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 12 Mar 2021 06:05:15 +0100 (CET)"],"Authentication-Results":"lancelot.ideasonboard.com;\n\tdkim=fail reason=\"signature verification failed\" (2048-bit key;\n\tunprotected) header.d=uajain.com header.i=@uajain.com\n\theader.b=\"KbBulMBK\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=uajain.com; s=mail;\n\tt=1615525514; bh=V+D6O4i6dGMvyX9Z8w7QAMKAvjweYFqQSGTeQHvnD1k=;\n\th=Subject:To:Cc:References:From:In-Reply-To;\n\tb=KbBulMBK7/nflNWV/iD0RyB5m+0mkda2cA8JqqY9Z5juKRT1kW6EOV7BcPa41CQmk\n\taK3aV2HB/AOPkLCSCrwlCErleWAa9CSN1+MwDAGClG9wZsv0vL7ux/2rkpz5+zjdu5\n\tSWdPZbkhRP/v7azTNW84QrdiCutpA8RKwmhVGYIQ/XJUPMi/8tURdSKRdOF1t6UygX\n\tUL42UZEni2+Bni6wEi0pvBzPkBeEqMnoGG3hHulR839p9wLpBCkQb/q2EfLhOZXARF\n\tllX+UTXTGwdt8r9OKZB6rTYL+9vb0uaNf+tObwPT0u2F94q/Tfwjdnaljn4XZJR0Yf\n\tgV088GpuZyfIw==","To":"Nicolas Dufresne <nicolas@ndufresne.ca>,\n\tlibcamera-devel@lists.libcamera.org","References":"<20210311205255.741985-1-nicolas@ndufresne.ca>\n\t<20210311205255.741985-2-nicolas@ndufresne.ca>","From":"Umang Jain <email@uajain.com>","Message-ID":"<2cffaf6e-acc3-4f8c-20ad-56474029195d@uajain.com>","Date":"Fri, 12 Mar 2021 10:35:11 +0530","Mime-Version":"1.0","In-Reply-To":"<20210311205255.741985-2-nicolas@ndufresne.ca>","Content-Language":"en-US","Subject":"Re: [libcamera-devel] [PATCH 1/2] gst: provider: Fix crash in\n\tfinalize","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","Cc":"Nicolas Dufresne <nicolas.dufresne@collabora.com>, kernel@collabora.com","Content-Transfer-Encoding":"7bit","Content-Type":"text/plain; charset=\"us-ascii\"; Format=\"flowed\"","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":15628,"web_url":"https://patchwork.libcamera.org/comment/15628/","msgid":"<437d922e51854ec442a8fade06186bdad8c161f9.camel@collabora.com>","date":"2021-03-12T16:44:11","subject":"Re: [libcamera-devel] [PATCH 1/2] gst: provider: Fix crash in\n\tfinalize","submitter":{"id":31,"url":"https://patchwork.libcamera.org/api/people/31/","name":"Nicolas Dufresne","email":"nicolas.dufresne@collabora.com"},"content":"Le vendredi 12 mars 2021 à 00:39 +0200, Laurent Pinchart a écrit :\n> Hi Nicolas,\n> \n> Thank you for the patch.\n> \n> On Thu, Mar 11, 2021 at 03:52:54PM -0500, Nicolas Dufresne wrote:\n> > From: Nicolas Dufresne <nicolas.dufresne@collabora.com>\n> > \n> > Both the DeviceProvider and Device classes had the same mistake,\n> > calling G_OBJECT_GET_CLASS() instead of G_OBJECT_CLASS() when\n> > chaining their finalize call to their base class. This would\n> > crash at destruction, which was causing gst-device-monitor-1.0\n> > tool to crash and application using that API to crash too.\n> > \n> > Signed-off-by: Nicolas Dufresne <nicolas.dufresne@collabora.com>\n> \n> This looks good to me,\n> \n> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n> \n> A bit annoying that gobject can't catch this type of issue at compile\n> time :-S\n\nIndeed, and it didn't at runtime either, looks like a gap in the runtime checks.\nCompile time of course would require compiler support.\n\n> \n> > ---\n> >  src/gstreamer/gstlibcameraprovider.cpp | 4 ++--\n> >  1 file changed, 2 insertions(+), 2 deletions(-)\n> > \n> > diff --git a/src/gstreamer/gstlibcameraprovider.cpp\n> > b/src/gstreamer/gstlibcameraprovider.cpp\n> > index ee44dc73..29da6c32 100644\n> > --- a/src/gstreamer/gstlibcameraprovider.cpp\n> > +++ b/src/gstreamer/gstlibcameraprovider.cpp\n> > @@ -101,7 +101,7 @@ gst_libcamera_device_finalize(GObject *object)\n> >  \n> >         g_free(self->name);\n> >  \n> > -       G_OBJECT_GET_CLASS(klass)->finalize(object);\n> > +       G_OBJECT_CLASS(klass)->finalize(object);\n> >  }\n> >  \n> >  static void\n> > @@ -218,7 +218,7 @@ gst_libcamera_provider_finalize(GObject *object)\n> >  \n> >         delete self->cm;\n> >  \n> > -       return G_OBJECT_GET_CLASS(klass)->finalize(object);\n> > +       return G_OBJECT_CLASS(klass)->finalize(object);\n> >  }\n> >  \n> >  static void\n>","headers":{"Return-Path":"<libcamera-devel-bounces@lists.libcamera.org>","X-Original-To":"parsemail@patchwork.libcamera.org","Delivered-To":"parsemail@patchwork.libcamera.org","Received":["from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id 9CEDABD80C\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri, 12 Mar 2021 16:44:23 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id DC1D668C69;\n\tFri, 12 Mar 2021 17:44:22 +0100 (CET)","from bhuna.collabora.co.uk (bhuna.collabora.co.uk\n\t[IPv6:2a00:1098:0:82:1000:25:2eeb:e3e3])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id BC16D68C66\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 12 Mar 2021 17:44:21 +0100 (CET)","from [127.0.0.1] (localhost [127.0.0.1])\n\t(Authenticated sender: nicolas) with ESMTPSA id E1DC61F46A8C"],"Message-ID":"<437d922e51854ec442a8fade06186bdad8c161f9.camel@collabora.com>","From":"Nicolas Dufresne <nicolas.dufresne@collabora.com>","To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","Date":"Fri, 12 Mar 2021 11:44:11 -0500","In-Reply-To":"<YEqcPT2llOebRm8I@pendragon.ideasonboard.com>","References":"<20210311205255.741985-1-nicolas@ndufresne.ca>\n\t<20210311205255.741985-2-nicolas@ndufresne.ca>\n\t<YEqcPT2llOebRm8I@pendragon.ideasonboard.com>","User-Agent":"Evolution 3.38.3 (3.38.3-1.fc33) ","MIME-Version":"1.0","Subject":"Re: [libcamera-devel] [PATCH 1/2] gst: provider: Fix crash in\n\tfinalize","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","Cc":"libcamera-devel@lists.libcamera.org, kernel@collabora.com","Content-Type":"text/plain; charset=\"utf-8\"","Content-Transfer-Encoding":"base64","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}}]