[{"id":13673,"web_url":"https://patchwork.libcamera.org/comment/13673/","msgid":"<20201112072432.GB4004@pendragon.ideasonboard.com>","date":"2020-11-12T07:24:32","subject":"Re: [libcamera-devel] [PATCH] qcam: Clear the pool of free requests\n\tupon stopCapture()","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"Hi Paul,\n\nThank you for the patch.\n\nOn Thu, Nov 12, 2020 at 02:02:43PM +0900, Paul Elder wrote:\n> To enable reusing Request objects, we kept a pool of free Requests. This\n> pool was not cleared upon stopping capture, however, which caused a\n> segfault when switching to another camera. Fix this by clearing the\n> Request pool on stopCapture().\n> \n> Fixes: c753223ad6b9 (\"libcamera, android, cam, gstreamer, qcam, v4l2:\n> Reuse Request\")\n> Signed-off-by: Paul Elder <paul.elder@ideasonboard.com>\n\nReviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n\n> ---\n>  src/qcam/main_window.cpp | 1 +\n>  1 file changed, 1 insertion(+)\n> \n> diff --git a/src/qcam/main_window.cpp b/src/qcam/main_window.cpp\n> index f140313e..2502ecd4 100644\n> --- a/src/qcam/main_window.cpp\n> +++ b/src/qcam/main_window.cpp\n> @@ -579,6 +579,7 @@ void MainWindow::stopCapture()\n>  \tmappedBuffers_.clear();\n>  \n>  \trequests_.clear();\n> +\tfreeQueue_.clear();\n>  \n>  \tdelete allocator_;\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 830A8BDB89\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu, 12 Nov 2020 07:24:37 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id EF2096313E;\n\tThu, 12 Nov 2020 08:24:36 +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 E074F630C2\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 12 Nov 2020 08:24:35 +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 5CAD231A;\n\tThu, 12 Nov 2020 08:24:35 +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=\"gCXroQFw\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1605165875;\n\tbh=zmqAkDxaJoKNnQekB6J5apJn92j/0na8VorevdW1/oU=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=gCXroQFwwpqrjatdSgCZBBOlP9TEQvl6ivRA4lmj9PbSSAVg8mE4rrsJmBXYwAaAC\n\tY7hbmFX62o5fA/ZUIQBTvEf0C7QYCq3OmKpukisWsZMFc1elWCy0NRQSi3i9beosM1\n\tlGBVN5I4Mr92IC1XEfbs/wgJT4oViITt0dbNrHCA=","Date":"Thu, 12 Nov 2020 09:24:32 +0200","From":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","To":"Paul Elder <paul.elder@ideasonboard.com>","Message-ID":"<20201112072432.GB4004@pendragon.ideasonboard.com>","References":"<20201112050243.32657-1-paul.elder@ideasonboard.com>","MIME-Version":"1.0","Content-Disposition":"inline","In-Reply-To":"<20201112050243.32657-1-paul.elder@ideasonboard.com>","Subject":"Re: [libcamera-devel] [PATCH] qcam: Clear the pool of free requests\n\tupon stopCapture()","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","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":13674,"web_url":"https://patchwork.libcamera.org/comment/13674/","msgid":"<20201112072501.GC4004@pendragon.ideasonboard.com>","date":"2020-11-12T07:25:01","subject":"Re: [libcamera-devel] [PATCH] qcam: Clear the pool of free requests\n\tupon stopCapture()","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"On Thu, Nov 12, 2020 at 09:24:33AM +0200, Laurent Pinchart wrote:\n> Hi Paul,\n> \n> Thank you for the patch.\n> \n> On Thu, Nov 12, 2020 at 02:02:43PM +0900, Paul Elder wrote:\n> > To enable reusing Request objects, we kept a pool of free Requests. This\n> > pool was not cleared upon stopping capture, however, which caused a\n> > segfault when switching to another camera. Fix this by clearing the\n> > Request pool on stopCapture().\n> > \n> > Fixes: c753223ad6b9 (\"libcamera, android, cam, gstreamer, qcam, v4l2:\n> > Reuse Request\")\n\nNitpicking, this line shouldn't be wrapped.\n\n> > Signed-off-by: Paul Elder <paul.elder@ideasonboard.com>\n> \n> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n> \n> > ---\n> >  src/qcam/main_window.cpp | 1 +\n> >  1 file changed, 1 insertion(+)\n> > \n> > diff --git a/src/qcam/main_window.cpp b/src/qcam/main_window.cpp\n> > index f140313e..2502ecd4 100644\n> > --- a/src/qcam/main_window.cpp\n> > +++ b/src/qcam/main_window.cpp\n> > @@ -579,6 +579,7 @@ void MainWindow::stopCapture()\n> >  \tmappedBuffers_.clear();\n> >  \n> >  \trequests_.clear();\n> > +\tfreeQueue_.clear();\n> >  \n> >  \tdelete allocator_;\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 8F85FBDB89\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu, 12 Nov 2020 07:25:06 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 5A7A66313E;\n\tThu, 12 Nov 2020 08:25:06 +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 047FC630C2\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 12 Nov 2020 08:25:05 +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 8D53731A;\n\tThu, 12 Nov 2020 08:25:04 +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=\"PK0P3VsT\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1605165904;\n\tbh=Q5f0p/tNKwRnpS6NZDCyGfuBwJ4Ai5JKMrAUrCv4L8E=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=PK0P3VsTZyPJU4LuNma0yNRAeq2LdBoqtH1FgrZbPk4ROf5rOecENl49mFNmJDSDA\n\t/nHYuTPwXKdWvBMvXe+p1r34yGzQ05O4pQ/6Tv138GVehjtGKD0+0ZCwST1RIvBfKo\n\tUr2cxCDo+zefTmNHaPv4FglqLaGfAUzNPAdZ0dWs=","Date":"Thu, 12 Nov 2020 09:25:01 +0200","From":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","To":"Paul Elder <paul.elder@ideasonboard.com>","Message-ID":"<20201112072501.GC4004@pendragon.ideasonboard.com>","References":"<20201112050243.32657-1-paul.elder@ideasonboard.com>\n\t<20201112072432.GB4004@pendragon.ideasonboard.com>","MIME-Version":"1.0","Content-Disposition":"inline","In-Reply-To":"<20201112072432.GB4004@pendragon.ideasonboard.com>","Subject":"Re: [libcamera-devel] [PATCH] qcam: Clear the pool of free requests\n\tupon stopCapture()","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","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":13675,"web_url":"https://patchwork.libcamera.org/comment/13675/","msgid":"<36b4b351-7bb8-3157-cfa4-066109b93518@ideasonboard.com>","date":"2020-11-12T08:34:09","subject":"Re: [libcamera-devel] [PATCH] qcam: Clear the pool of free requests\n\tupon stopCapture()","submitter":{"id":75,"url":"https://patchwork.libcamera.org/api/people/75/","name":"Jean-Michel Hautbois","email":"jeanmichel.hautbois@ideasonboard.com"},"content":"Hi Paul,\n\nThanks for the patch !\n\nOn 12/11/2020 08:24, Laurent Pinchart wrote:\n> Hi Paul,\n> \n> Thank you for the patch.\n> \n> On Thu, Nov 12, 2020 at 02:02:43PM +0900, Paul Elder wrote:\n>> To enable reusing Request objects, we kept a pool of free Requests. This\n>> pool was not cleared upon stopping capture, however, which caused a\n>> segfault when switching to another camera. Fix this by clearing the\n>> Request pool on stopCapture().\n>>\n>> Fixes: c753223ad6b9 (\"libcamera, android, cam, gstreamer, qcam, v4l2:\n>> Reuse Request\")\n>> Signed-off-by: Paul Elder <paul.elder@ideasonboard.com>\n> \n> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n\nTested-by: Jean-Michel Hautbois <jeanmichel.hautbois@ideasonboard.com>\n> \n>> ---\n>>  src/qcam/main_window.cpp | 1 +\n>>  1 file changed, 1 insertion(+)\n>>\n>> diff --git a/src/qcam/main_window.cpp b/src/qcam/main_window.cpp\n>> index f140313e..2502ecd4 100644\n>> --- a/src/qcam/main_window.cpp\n>> +++ b/src/qcam/main_window.cpp\n>> @@ -579,6 +579,7 @@ void MainWindow::stopCapture()\n>>  \tmappedBuffers_.clear();\n>>  \n>>  \trequests_.clear();\n>> +\tfreeQueue_.clear();\n>>  \n>>  \tdelete allocator_;\n>>  \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 5F097BE082\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu, 12 Nov 2020 08:56:06 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id D43906313E;\n\tThu, 12 Nov 2020 09:56:05 +0100 (CET)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id ECEC36033E\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 12 Nov 2020 09:34:09 +0100 (CET)","from [IPv6:2a01:e0a:169:7140:6b9:cf70:730:71f6] (unknown\n\t[IPv6:2a01:e0a:169:7140:6b9:cf70:730:71f6])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 739AB31A;\n\tThu, 12 Nov 2020 09:34:09 +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=\"FlvvNawu\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1605170049;\n\tbh=dw6o6LRjTkMAXbQUZn2slS8NZz9HNYmHBGCyhIoGtqE=;\n\th=Subject:To:Cc:References:From:Date:In-Reply-To:From;\n\tb=FlvvNawu0Rx4A7CNmWrBbQCS7m80iKZ6dKw5pwP26vwNAbe+yS40F+0XNEUR2p4SO\n\tBZgd8G+VRW4fUzBodOz4Fdod6XQVy4Vc9MAxlmgZp+nD87aVrweBQosdQ9RfiXJccP\n\te+OWigFZztoyYToZ089oW7dhuQfNL9YQyp3GR26Y=","To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>,\n\tPaul Elder <paul.elder@ideasonboard.com>","References":"<20201112050243.32657-1-paul.elder@ideasonboard.com>\n\t<20201112072432.GB4004@pendragon.ideasonboard.com>","From":"Jean-Michel Hautbois <jeanmichel.hautbois@ideasonboard.com>","Message-ID":"<36b4b351-7bb8-3157-cfa4-066109b93518@ideasonboard.com>","Date":"Thu, 12 Nov 2020 09:34:09 +0100","User-Agent":"Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101\n\tThunderbird/78.3.2","MIME-Version":"1.0","In-Reply-To":"<20201112072432.GB4004@pendragon.ideasonboard.com>","Content-Language":"en-US","X-Mailman-Approved-At":"Thu, 12 Nov 2020 09:56:04 +0100","Subject":"Re: [libcamera-devel] [PATCH] qcam: Clear the pool of free requests\n\tupon stopCapture()","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","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":13676,"web_url":"https://patchwork.libcamera.org/comment/13676/","msgid":"<20201112103634.GD1263071@oden.dyn.berto.se>","date":"2020-11-12T10:36:34","subject":"Re: [libcamera-devel] [PATCH] qcam: Clear the pool of free requests\n\tupon stopCapture()","submitter":{"id":5,"url":"https://patchwork.libcamera.org/api/people/5/","name":"Niklas Söderlund","email":"niklas.soderlund@ragnatech.se"},"content":"Hi Paul,\n\nThanks for your work.\n\nOn 2020-11-12 14:02:43 +0900, Paul Elder wrote:\n> To enable reusing Request objects, we kept a pool of free Requests. This\n> pool was not cleared upon stopping capture, however, which caused a\n> segfault when switching to another camera. Fix this by clearing the\n> Request pool on stopCapture().\n> \n> Fixes: c753223ad6b9 (\"libcamera, android, cam, gstreamer, qcam, v4l2:\n> Reuse Request\")\n> Signed-off-by: Paul Elder <paul.elder@ideasonboard.com>\n\nAs Laurent already pointed out the fixes lines shall not be wrapped, \nwith this fixed,\n\nReviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>\n\n> ---\n>  src/qcam/main_window.cpp | 1 +\n>  1 file changed, 1 insertion(+)\n> \n> diff --git a/src/qcam/main_window.cpp b/src/qcam/main_window.cpp\n> index f140313e..2502ecd4 100644\n> --- a/src/qcam/main_window.cpp\n> +++ b/src/qcam/main_window.cpp\n> @@ -579,6 +579,7 @@ void MainWindow::stopCapture()\n>  \tmappedBuffers_.clear();\n>  \n>  \trequests_.clear();\n> +\tfreeQueue_.clear();\n>  \n>  \tdelete allocator_;\n>  \n> -- \n> 2.27.0\n> \n> _______________________________________________\n> libcamera-devel mailing list\n> libcamera-devel@lists.libcamera.org\n> https://lists.libcamera.org/listinfo/libcamera-devel","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 A60DEBDB89\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu, 12 Nov 2020 10:36:39 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 2D5D063162;\n\tThu, 12 Nov 2020 11:36:39 +0100 (CET)","from mail-lf1-x141.google.com (mail-lf1-x141.google.com\n\t[IPv6:2a00:1450:4864:20::141])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 5486B63137\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 12 Nov 2020 11:36:37 +0100 (CET)","by mail-lf1-x141.google.com with SMTP id l2so7638458lfk.0\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 12 Nov 2020 02:36:37 -0800 (PST)","from localhost (h-209-203.A463.priv.bahnhof.se. [155.4.209.203])\n\tby smtp.gmail.com with ESMTPSA id\n\tg5sm506325ljj.80.2020.11.12.02.36.35\n\t(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n\tThu, 12 Nov 2020 02:36:35 -0800 (PST)"],"Authentication-Results":"lancelot.ideasonboard.com;\n\tdkim=fail reason=\"signature verification failed\" (2048-bit key;\n\tunprotected) header.d=ragnatech-se.20150623.gappssmtp.com\n\theader.i=@ragnatech-se.20150623.gappssmtp.com\n\theader.b=\"TJ+9kf1F\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=ragnatech-se.20150623.gappssmtp.com; s=20150623;\n\th=date:from:to:cc:subject:message-id:references:mime-version\n\t:content-disposition:content-transfer-encoding:in-reply-to;\n\tbh=FU2DsLG0eYkueJdib4voDjJ4tRbHwU0509tJEJz5R5E=;\n\tb=TJ+9kf1FbQYcmgfkeWdJLUB4aH3A6FcCAEb3Cy0TWXGfnoESF2r7Hfj1XRhM4Hnb9z\n\t52HJmHD0U+GzQAcvgQrn26F+FbyuJN8OmtJ2eTFL9gheOsWS8xXii426iy3ynX2DIysy\n\tuc06paUvZHfAnDVslpyImRfrp5gM6BjQWYvjJ8cbKjwuehvmyk8xmsGhp9L8kmm7JCvC\n\tTmA9ZwFp+MV1pWYwDj7gvoYo1h3CzT8YQeW3GB36Vxu1uXOcpGOuTrop8kBd1PFZsupg\n\txCGpYaobOL5cvl8jtH7QjXjlbwnKs8ZRW6A3LD4axrnSc6msCTxE+LokeGX+rTYT2hs7\n\tXHuA==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20161025;\n\th=x-gm-message-state:date:from:to:cc:subject:message-id:references\n\t:mime-version:content-disposition:content-transfer-encoding\n\t:in-reply-to;\n\tbh=FU2DsLG0eYkueJdib4voDjJ4tRbHwU0509tJEJz5R5E=;\n\tb=ZB22gf52AYaCwYCyGNxGvMItrCKksfuBTE85Z92Obiu9/KWW+uFv3tycD7WVHaDKWt\n\teXQxDJ5JHLJD6AsRJuGp0srlYUrW6z0GZ4e4QiTR2LEmqJrCDVg+gXXP7UgEAwEiArlK\n\tek9jp6ey9KoyH4sS7xbWPNdY6kMw5E5uSFKf1iZbSJlqEEySekYSKXBVRlo2nqYtx7Ka\n\tfY9WX2E+opK81P6JcLiM7p5/PxPa6XU4xBHRbF1eS/kL23309Sbp2aGJ0TEhEdzuzfKi\n\tv3MknfV4Gf18V3SHjk4himykNvBux/Id4iTvjTGSLM5Ha+cR1cuVRSsjeSpNb93m3nqV\n\t0xRg==","X-Gm-Message-State":"AOAM533IY8R4gElTKNMqcX6laQtdZ7f3xcfOqKpZE/VfAWP0vYF9nTU9\n\tlBFR75c72R1dvTPGs4LFJvInyQ==","X-Google-Smtp-Source":"ABdhPJwPQZAhO/ojOzsa0jGJLD/rzhn9+G0fkOjmfRRvDJMIoeWryI1pwK7NIE8OzDvvCai3EwNesg==","X-Received":"by 2002:a19:110:: with SMTP id 16mr4817383lfb.557.1605177396470; \n\tThu, 12 Nov 2020 02:36:36 -0800 (PST)","Date":"Thu, 12 Nov 2020 11:36:34 +0100","From":"Niklas =?iso-8859-1?q?S=F6derlund?= <niklas.soderlund@ragnatech.se>","To":"Paul Elder <paul.elder@ideasonboard.com>","Message-ID":"<20201112103634.GD1263071@oden.dyn.berto.se>","References":"<20201112050243.32657-1-paul.elder@ideasonboard.com>","MIME-Version":"1.0","Content-Disposition":"inline","In-Reply-To":"<20201112050243.32657-1-paul.elder@ideasonboard.com>","Subject":"Re: [libcamera-devel] [PATCH] qcam: Clear the pool of free requests\n\tupon stopCapture()","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","Content-Type":"text/plain; charset=\"iso-8859-1\"","Content-Transfer-Encoding":"quoted-printable","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":13677,"web_url":"https://patchwork.libcamera.org/comment/13677/","msgid":"<790d8daf-d65b-d8cc-9556-f840dc1a5920@ideasonboard.com>","date":"2020-11-12T10:40:09","subject":"Re: [libcamera-devel] [PATCH] qcam: Clear the pool of free requests\n\tupon stopCapture()","submitter":{"id":4,"url":"https://patchwork.libcamera.org/api/people/4/","name":"Kieran Bingham","email":"kieran.bingham@ideasonboard.com"},"content":"Hi Paul,\n\nOn 12/11/2020 05:02, Paul Elder wrote:\n> To enable reusing Request objects, we kept a pool of free Requests. This\n> pool was not cleared upon stopping capture, however, which caused a\n> segfault when switching to another camera. Fix this by clearing the\n> Request pool on stopCapture().\n> \n> Fixes: c753223ad6b9 (\"libcamera, android, cam, gstreamer, qcam, v4l2:\n> Reuse Request\")\n> Signed-off-by: Paul Elder <paul.elder@ideasonboard.com>\n\n\nFixes things for me!\n\nWhen this crashed for me, it was hitting code in the Request class, is\nthere anything we need to do to be more defensive about this?\n\nWas that just because we were using a Request object which had been\nfree'd or something?\n\nAnyway, for this fix :\n\nTested-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\nReviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n\n\n\n> ---\n>  src/qcam/main_window.cpp | 1 +\n>  1 file changed, 1 insertion(+)\n> \n> diff --git a/src/qcam/main_window.cpp b/src/qcam/main_window.cpp\n> index f140313e..2502ecd4 100644\n> --- a/src/qcam/main_window.cpp\n> +++ b/src/qcam/main_window.cpp\n> @@ -579,6 +579,7 @@ void MainWindow::stopCapture()\n>  \tmappedBuffers_.clear();\n>  \n>  \trequests_.clear();\n> +\tfreeQueue_.clear();\n>  \n>  \tdelete allocator_;\n>  \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 35000BE082\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu, 12 Nov 2020 10:40:14 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id BD9BE63162;\n\tThu, 12 Nov 2020 11:40:13 +0100 (CET)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 6D3E163137\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 12 Nov 2020 11:40:12 +0100 (CET)","from [192.168.0.20]\n\t(cpc89244-aztw30-2-0-cust3082.18-1.cable.virginm.net [86.31.172.11])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id DC45231A;\n\tThu, 12 Nov 2020 11:40:11 +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=\"Q4awtgeX\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1605177612;\n\tbh=77kFKXmxIBCJjEi35CpJ0mJDdXlMsDCOoqtJG9h7q5Y=;\n\th=Reply-To:Subject:To:References:From:Date:In-Reply-To:From;\n\tb=Q4awtgeXaY8bIh9OWd1Gt+1Svxr6uNm85h6Tm9jzRFdM6wn9sKzZnJm1hHgE7+lHx\n\tEfdR0Fsf/GcLqhpT/ZVeQEkBPXBnNAw98bCfpm4TvwD1sak4ofdPEBx07V/PuOh4cm\n\t426Qc/NY3PGP85pNOJeTOelSeVk4yVuJKrPXKC8E=","To":"Paul Elder <paul.elder@ideasonboard.com>,\n\tlibcamera-devel@lists.libcamera.org","References":"<20201112050243.32657-1-paul.elder@ideasonboard.com>","From":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Autocrypt":"addr=kieran.bingham@ideasonboard.com; keydata=\n\t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\n\tWZw01QYHU/GUV/zHJSFk","Organization":"Ideas on Board","Message-ID":"<790d8daf-d65b-d8cc-9556-f840dc1a5920@ideasonboard.com>","Date":"Thu, 12 Nov 2020 10:40:09 +0000","User-Agent":"Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101\n\tThunderbird/68.10.0","MIME-Version":"1.0","In-Reply-To":"<20201112050243.32657-1-paul.elder@ideasonboard.com>","Content-Language":"en-GB","Subject":"Re: [libcamera-devel] [PATCH] qcam: Clear the pool of free requests\n\tupon stopCapture()","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>","Reply-To":"kieran.bingham@ideasonboard.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":13695,"web_url":"https://patchwork.libcamera.org/comment/13695/","msgid":"<20201113081130.GE1811@pyrite.rasen.tech>","date":"2020-11-13T08:11:30","subject":"Re: [libcamera-devel] [PATCH] qcam: Clear the pool of free requests\n\tupon stopCapture()","submitter":{"id":17,"url":"https://patchwork.libcamera.org/api/people/17/","name":"Paul Elder","email":"paul.elder@ideasonboard.com"},"content":"On Thu, Nov 12, 2020 at 10:40:09AM +0000, Kieran Bingham wrote:\n> Hi Paul,\n> \n> On 12/11/2020 05:02, Paul Elder wrote:\n> > To enable reusing Request objects, we kept a pool of free Requests. This\n> > pool was not cleared upon stopping capture, however, which caused a\n> > segfault when switching to another camera. Fix this by clearing the\n> > Request pool on stopCapture().\n> > \n> > Fixes: c753223ad6b9 (\"libcamera, android, cam, gstreamer, qcam, v4l2:\n> > Reuse Request\")\n> > Signed-off-by: Paul Elder <paul.elder@ideasonboard.com>\n> \n> \n> Fixes things for me!\n> \n> When this crashed for me, it was hitting code in the Request class, is\n> there anything we need to do to be more defensive about this?\n> \n> Was that just because we were using a Request object which had been\n> free'd or something?\n\nYeah, that's what's happening. processCapture() adds the request (that's\nprepared to be reused) to the request pool, meanwhile its unique_ptr\ngets freed at stopCapture() (the request_.clear() below). So of course\nMainWindow::queueRequest() picks up a freed request from the request\npool :)\n\nI don't think this is anything that needs to be protected against on\nlibcamera's side. qcam had a request, freed it, and then tried to reuse\nit. All the code that's involved in this chain is contained completely\nin qcam.\n\n> Anyway, for this fix :\n> \n> Tested-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n\n\nThanks,\n\nPaul\n> > ---\n> >  src/qcam/main_window.cpp | 1 +\n> >  1 file changed, 1 insertion(+)\n> > \n> > diff --git a/src/qcam/main_window.cpp b/src/qcam/main_window.cpp\n> > index f140313e..2502ecd4 100644\n> > --- a/src/qcam/main_window.cpp\n> > +++ b/src/qcam/main_window.cpp\n> > @@ -579,6 +579,7 @@ void MainWindow::stopCapture()\n> >  \tmappedBuffers_.clear();\n> >  \n> >  \trequests_.clear();\n> > +\tfreeQueue_.clear();\n> >  \n> >  \tdelete allocator_;\n> >  \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 71958BE086\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri, 13 Nov 2020 08:11:40 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id EF0EC631AF;\n\tFri, 13 Nov 2020 09:11:39 +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 890EE6033D\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 13 Nov 2020 09:11:38 +0100 (CET)","from pyrite.rasen.tech (unknown\n\t[IPv6:2400:4051:61:600:2c71:1b79:d06d:5032])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id E4AAF31A;\n\tFri, 13 Nov 2020 09:11:36 +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=\"negrtGHk\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1605255098;\n\tbh=kgDm1XLelYimpHzlOKeCEHX+/v5E9DCS6Pg6Udx4iXw=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=negrtGHkDD3ZTHqVzxWS7akGqPmOKoO7B6q4dVKceYCcNhuqhRBnCGxBB19jx2/2J\n\tkp3u0pUCTjMrO+VkDDHzy7VsicF1nu+nS1BVJFodGsNobDxEM7de8d+AhlDJ9CYaMw\n\tBdBLQSqI3akSrSHsQM3I0si/MaSj6WlISSTz1Jto=","Date":"Fri, 13 Nov 2020 17:11:30 +0900","From":"paul.elder@ideasonboard.com","To":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Message-ID":"<20201113081130.GE1811@pyrite.rasen.tech>","References":"<20201112050243.32657-1-paul.elder@ideasonboard.com>\n\t<790d8daf-d65b-d8cc-9556-f840dc1a5920@ideasonboard.com>","MIME-Version":"1.0","Content-Disposition":"inline","In-Reply-To":"<790d8daf-d65b-d8cc-9556-f840dc1a5920@ideasonboard.com>","Subject":"Re: [libcamera-devel] [PATCH] qcam: Clear the pool of free requests\n\tupon stopCapture()","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","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>"}}]