[{"id":28555,"web_url":"https://patchwork.libcamera.org/comment/28555/","msgid":"<87jzo16sq4.fsf@redhat.com>","date":"2024-01-22T20:03:31","subject":"Re: [PATCH 07/12] test: message: Destroy Object from correct thread\n\tcontext","submitter":{"id":177,"url":"https://patchwork.libcamera.org/api/people/177/","name":"Milan Zamazal","email":"mzamazal@redhat.com"},"content":"Laurent Pinchart <laurent.pinchart@ideasonboard.com> writes:\n\n> The MessageReceiver and RecursiveMessageReceiver used in the test are\n> destroyed from the main thread, which is invalid for a thread-bound\n> object bound to a different thread. Fix it by destroying them with\n> deleteLater().\n>\n> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n\nReviewed-by: Milan Zamazal <mzamazal@redhat.com>\n\n> ---\n>  test/message.cpp | 19 ++++++++++++-------\n>  1 file changed, 12 insertions(+), 7 deletions(-)\n>\n> diff --git a/test/message.cpp b/test/message.cpp\n> index a34e0f0b5e10..2f9f281c5101 100644\n> --- a/test/message.cpp\n> +++ b/test/message.cpp\n> @@ -109,16 +109,19 @@ protected:\n>  \t\t\treturn TestFail;\n>  \t\t}\n>  \n> -\t\tMessageReceiver receiver;\n> -\t\treceiver.moveToThread(&thread_);\n> +\t\tMessageReceiver *receiver = new MessageReceiver();\n> +\t\treceiver->moveToThread(&thread_);\n>  \n>  \t\tthread_.start();\n>  \n> -\t\treceiver.postMessage(std::make_unique<Message>(Message::None));\n> +\t\treceiver->postMessage(std::make_unique<Message>(Message::None));\n>  \n>  \t\tthis_thread::sleep_for(chrono::milliseconds(100));\n>  \n> -\t\tswitch (receiver.status()) {\n> +\t\tMessageReceiver::Status status = receiver->status();\n> +\t\treceiver->deleteLater();\n> +\n> +\t\tswitch (status) {\n>  \t\tcase MessageReceiver::NoMessage:\n>  \t\t\tcout << \"No message received\" << endl;\n>  \t\t\treturn TestFail;\n> @@ -135,8 +138,7 @@ protected:\n>  \t\t * leaks. Two messages need to be posted to ensure we don't only\n>  \t\t * test the simple case of a queue containing a single message.\n>  \t\t */\n> -\t\tstd::unique_ptr<RecursiveMessageReceiver> recursiveReceiver =\n> -\t\t\tstd::make_unique<RecursiveMessageReceiver>();\n> +\t\tRecursiveMessageReceiver *recursiveReceiver = new RecursiveMessageReceiver();\n>  \t\trecursiveReceiver->moveToThread(&thread_);\n>  \n>  \t\trecursiveReceiver->postMessage(std::make_unique<Message>(Message::None));\n> @@ -144,7 +146,10 @@ protected:\n>  \n>  \t\tthis_thread::sleep_for(chrono::milliseconds(10));\n>  \n> -\t\tif (!recursiveReceiver->success()) {\n> +\t\tbool success = recursiveReceiver->success();\n> +\t\trecursiveReceiver->deleteLater();\n> +\n> +\t\tif (!success) {\n>  \t\t\tcout << \"Recursive message delivery failed\" << endl;\n>  \t\t\treturn TestFail;\n>  \t\t}","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 48EC2BDB1C\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon, 22 Jan 2024 20:03:39 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id A32EE628B7;\n\tMon, 22 Jan 2024 21:03:38 +0100 (CET)","from us-smtp-delivery-124.mimecast.com\n\t(us-smtp-delivery-124.mimecast.com [170.10.133.124])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 10A4A61D30\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 22 Jan 2024 21:03:36 +0100 (CET)","from mail-wm1-f69.google.com (mail-wm1-f69.google.com\n\t[209.85.128.69]) by relay.mimecast.com with ESMTP with STARTTLS\n\t(version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id\n\tus-mta-50-3fVaHl1WMMKl8AX-zUpdxQ-1; Mon, 22 Jan 2024 15:03:34 -0500","by mail-wm1-f69.google.com with SMTP id\n\t5b1f17b1804b1-40e9d6a364eso29827405e9.3\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 22 Jan 2024 12:03:34 -0800 (PST)","from nuthatch (ip-77-48-47-2.net.vodafone.cz. [77.48.47.2])\n\tby smtp.gmail.com with ESMTPSA id\n\tek15-20020a05600c3ecf00b0040e8e358f82sm17034698wmb.19.2024.01.22.12.03.31\n\t(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n\tMon, 22 Jan 2024 12:03:31 -0800 (PST)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=redhat.com header.i=@redhat.com\n\theader.b=\"gPiyvY9M\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;\n\ts=mimecast20190719; t=1705953815;\n\th=from:from:reply-to:subject:subject:date:date:message-id:message-id:\n\tto:to:cc:cc:mime-version:mime-version:content-type:content-type:\n\tin-reply-to:in-reply-to:references:references;\n\tbh=reAOF79QxD02w8kUq4qdR4YoJc/NXoN+2t0bdjalIiQ=;\n\tb=gPiyvY9Mc8fZeFzNuPLcs6veif4cdbXrFK9bXsSE+vKyHKZL6O/4TKO05n06eqRmVDmrv6\n\t8WDrUNesKF4wpL0q9MMtmdg7ltDClaghWkZ3SoBVwA5ewFIkbsXT/z9yfgL9IYhNz17UN+\n\t+G2ziHJ/N1mQrkHz6ivOVq4laWGDMJY=","X-MC-Unique":"3fVaHl1WMMKl8AX-zUpdxQ-1","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20230601; t=1705953812; x=1706558612;\n\th=mime-version:user-agent:message-id:date:references:in-reply-to\n\t:subject:cc:to:from:x-gm-message-state:from:to:cc:subject:date\n\t:message-id:reply-to;\n\tbh=reAOF79QxD02w8kUq4qdR4YoJc/NXoN+2t0bdjalIiQ=;\n\tb=nTt0qDvF+menObXRrzkGIC4BTZzptxr/CLL0mcH+2EyiJ7Ti1KSDaIIFA9FqMjK/MV\n\t5KBgVy3WO9T7l0euN6ES7LZ/joTxEf6MWzDqebI37L1SVpMk0E304xlXQQQyKKb+Y90d\n\t4Z2+2owRDBsM4Ut59+zk+JDtDKwc6AIA/5fhrf2RH2vvIa0/7lrh69erG6sFvxBNroQk\n\tADPnSXJeCmZVlVxcBcYRJMPjqgHQhl2y2egC5eaDDAujt7sl72o6vR1Y3arXUVhvAKnC\n\tCEVWuePAijqo2bmH9NTsiUCqRRj5zl7Edj82FZkYdDp0/mbaTKI/lzWcltpw3apRQyOj\n\tSaJA==","X-Gm-Message-State":"AOJu0YyHP4944zs+V6C2c2WdD+k5rBPncHDFK1+gwm9stKUI/+k9ekZu\n\txrmSeTjHPM0Zyem/ouoKyg+atoMIrkJm/pbGSQecVItbb/kAvoCrPgy0Zff3ik8tE2dPR1V04J8\n\t87sONdvUd/L6Dm41279zxyiMOLiJBmd9M7J7UTDCAM8urMpUFrjYNiGbPpoE4uH8xGE7cPGOwv2\n\tsfdcyZUcC0uzQlvgnsWWIJtkgGdlyysGwUiKOlOnu23PAPZboY/fku5yY=","X-Received":["by 2002:a05:600c:1910:b0:40e:6238:e9e8 with SMTP id\n\tj16-20020a05600c191000b0040e6238e9e8mr2415793wmq.1.1705953812460; \n\tMon, 22 Jan 2024 12:03:32 -0800 (PST)","by 2002:a05:600c:1910:b0:40e:6238:e9e8 with SMTP id\n\tj16-20020a05600c191000b0040e6238e9e8mr2415786wmq.1.1705953812083; \n\tMon, 22 Jan 2024 12:03:32 -0800 (PST)"],"X-Google-Smtp-Source":"AGHT+IEbRLieZMGkfRkvAyzeuLDd9NsXGZF/s/e3ZaS4cXwJ5Mkb349wLV/ntTR5AII5HSzx9K2Rlw==","From":"Milan Zamazal <mzamazal@redhat.com>","To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","Subject":"Re: [PATCH 07/12] test: message: Destroy Object from correct thread\n\tcontext","In-Reply-To":"<20240121035948.4226-8-laurent.pinchart@ideasonboard.com>\n\t(Laurent Pinchart's message of \"Sun, 21 Jan 2024 05:59:43 +0200\")","References":"<20240121035948.4226-1-laurent.pinchart@ideasonboard.com>\n\t<20240121035948.4226-8-laurent.pinchart@ideasonboard.com>","Date":"Mon, 22 Jan 2024 21:03:31 +0100","Message-ID":"<87jzo16sq4.fsf@redhat.com>","User-Agent":"Gnus/5.13 (Gnus v5.13)","MIME-Version":"1.0","X-Mimecast-Spam-Score":"0","X-Mimecast-Originator":"redhat.com","Content-Type":"text/plain","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","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}}]