[{"id":28556,"web_url":"https://patchwork.libcamera.org/comment/28556/","msgid":"<87fryp6smk.fsf@redhat.com>","date":"2024-01-22T20:05:39","subject":"Re: [PATCH 08/12] test: signal-threads: Destroy Object from correct\n\tthread context","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 SignalReceiver used in the test is destroyed from the main thread,\n> which is invalid for a thread-bound object bound to a different thread.\n> Fix it by destroying it with deleteLater().\n>\n> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n\nReviewed-by: Milan Zamazal <mzamazal@redhat.com>\n\n> ---\n>  test/signal-threads.cpp | 23 +++++++++++++++--------\n>  1 file changed, 15 insertions(+), 8 deletions(-)\n>\n> diff --git a/test/signal-threads.cpp b/test/signal-threads.cpp\n> index 8c550eb014d8..8c212b6f9ade 100644\n> --- a/test/signal-threads.cpp\n> +++ b/test/signal-threads.cpp\n> @@ -59,15 +59,20 @@ private:\n>  class SignalThreadsTest : public Test\n>  {\n>  protected:\n> +\tint init()\n> +\t{\n> +\t\treceiver_ = new SignalReceiver();\n> +\t\tsignal_.connect(receiver_, &SignalReceiver::slot);\n> +\n> +\t\treturn TestPass;\n> +\t}\n> +\n>  \tint run()\n>  \t{\n> -\t\tSignalReceiver receiver;\n> -\t\tsignal_.connect(&receiver, &SignalReceiver::slot);\n> -\n>  \t\t/* Test that a signal is received in the main thread. */\n>  \t\tsignal_.emit(0);\n>  \n> -\t\tswitch (receiver.status()) {\n> +\t\tswitch (receiver_->status()) {\n>  \t\tcase SignalReceiver::NoSignal:\n>  \t\t\tcout << \"No signal received for direct connection\" << endl;\n>  \t\t\treturn TestFail;\n> @@ -83,8 +88,8 @@ protected:\n>  \t\t * Move the object to a thread and verify that the signal is\n>  \t\t * correctly delivered, with the correct data.\n>  \t\t */\n> -\t\treceiver.reset();\n> -\t\treceiver.moveToThread(&thread_);\n> +\t\treceiver_->reset();\n> +\t\treceiver_->moveToThread(&thread_);\n>  \n>  \t\tthread_.start();\n>  \n> @@ -92,7 +97,7 @@ protected:\n>  \n>  \t\tthis_thread::sleep_for(chrono::milliseconds(100));\n>  \n> -\t\tswitch (receiver.status()) {\n> +\t\tswitch (receiver_->status()) {\n>  \t\tcase SignalReceiver::NoSignal:\n>  \t\t\tcout << \"No signal received for message connection\" << endl;\n>  \t\t\treturn TestFail;\n> @@ -104,7 +109,7 @@ protected:\n>  \t\t\tbreak;\n>  \t\t}\n>  \n> -\t\tif (receiver.value() != 42) {\n> +\t\tif (receiver_->value() != 42) {\n>  \t\t\tcout << \"Signal received with incorrect value\" << endl;\n>  \t\t\treturn TestFail;\n>  \t\t}\n> @@ -114,11 +119,13 @@ protected:\n>  \n>  \tvoid cleanup()\n>  \t{\n> +\t\treceiver_->deleteLater();\n>  \t\tthread_.exit(0);\n>  \t\tthread_.wait();\n>  \t}\n>  \n>  private:\n> +\tSignalReceiver *receiver_;\n>  \tThread thread_;\n>  \n>  \tSignal<int> signal_;","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 ECBBEBDB1C\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon, 22 Jan 2024 20:05:46 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 5399B62948;\n\tMon, 22 Jan 2024 21:05:46 +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 59D3C61D30\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 22 Jan 2024 21:05:45 +0100 (CET)","from mail-wr1-f71.google.com (mail-wr1-f71.google.com\n\t[209.85.221.71]) by relay.mimecast.com with ESMTP with STARTTLS\n\t(version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id\n\tus-mta-256-k1ZzFMHcPTm3A46ADERcHQ-1; Mon, 22 Jan 2024 15:05:43 -0500","by mail-wr1-f71.google.com with SMTP id\n\tffacd0b85a97d-337a9795c5cso2872264f8f.2\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 22 Jan 2024 12:05:43 -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\tq12-20020adfab0c000000b00337d8c40ff7sm10568248wrc.3.2024.01.22.12.05.40\n\t(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n\tMon, 22 Jan 2024 12:05:40 -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=\"HAgfbMfi\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;\n\ts=mimecast20190719; t=1705953944;\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=5YyBD05s2CfTf88GGVBmleamZMCJ11K9HX5HmkBDbRw=;\n\tb=HAgfbMfis9pgGchkLmrE+4WaZvprlSISlWVjuKAuhx0x8CvNlJbgjdUKiXEi719li5gAMh\n\tO23biIQ6T/0MNNAZZU5yLPN24fY2BWweR1Pd7gjyI40UEf07xyPK/iEV00o8aQSnIHw3Wx\n\tcNb0FAj5Y4iZvoDxgavUJIwnoI9nnMo=","X-MC-Unique":"k1ZzFMHcPTm3A46ADERcHQ-1","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20230601; t=1705953941; x=1706558741;\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=5YyBD05s2CfTf88GGVBmleamZMCJ11K9HX5HmkBDbRw=;\n\tb=M+tujE4+zegH6IoCaxrhHl3LcUvMs4evdB14qFZeKGHyt2ZVqjjLKi2+ccOdlotviZ\n\tZDcBK5+OQeEP82yN8WHKrhTpzS2UuVv9DkSGC4RynpE5BowyAsGccTKGfrQdKuTGs+1k\n\t+MTb0gWfmVPMOZgH/g869ZfNF2i7OJzl/xFbhhgMFSg4/XSeQ8URtqu3/XSY5KXOh8QH\n\t/IpZ4KYhfc44wXIv0qjO4NtWccEM5rUCeNzlIaVxsS6kuWSTBhVTFMU5DZ5REMRM8QnC\n\tLxgvmVAUYlUE/1+pz7p0mhBSzbzXYAA1bM4UwEusAIRyVLH2PPc9SHIx2MWmhkK+guOy\n\tU1pA==","X-Gm-Message-State":"AOJu0YxrgjrJH2O4igtgl92+ZyUGq7qAv5hkopnQ/oXOYUYkhDg647jw\n\t1bXsGp8xkbSlvAot2DxDqRkSLG8RDFMJsFcdtOeTHdBJOTiNSpk/El7EO+QX0EdTjzOdQHlN6Lr\n\t/vr7UFdlcj0wHr830r9gFdRdt/NZaMkZlsK7frJokm4EvvC/xK7U7VvF+Va9jLbqNPy2bukqBgu\n\tWJfbUnleFL+Xs3unrsCrdW0BksJwaNFu52aBz3OSzVxRk6lIadbD5PoFk=","X-Received":["by 2002:a05:6000:890:b0:339:372e:771d with SMTP id\n\tcs16-20020a056000089000b00339372e771dmr741576wrb.64.1705953941403; \n\tMon, 22 Jan 2024 12:05:41 -0800 (PST)","by 2002:a05:6000:890:b0:339:372e:771d with SMTP id\n\tcs16-20020a056000089000b00339372e771dmr741571wrb.64.1705953940884; \n\tMon, 22 Jan 2024 12:05:40 -0800 (PST)"],"X-Google-Smtp-Source":"AGHT+IGOXNxmvbVILBrzsVOo+rGv+YkniTc+AgjUpRyExGtyJRAd65dtqFM9pLbMmmBmXSPOA3rxKg==","From":"Milan Zamazal <mzamazal@redhat.com>","To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","Subject":"Re: [PATCH 08/12] test: signal-threads: Destroy Object from correct\n\tthread context","In-Reply-To":"<20240121035948.4226-9-laurent.pinchart@ideasonboard.com>\n\t(Laurent Pinchart's message of \"Sun, 21 Jan 2024 05:59:44 +0200\")","References":"<20240121035948.4226-1-laurent.pinchart@ideasonboard.com>\n\t<20240121035948.4226-9-laurent.pinchart@ideasonboard.com>","Date":"Mon, 22 Jan 2024 21:05:39 +0100","Message-ID":"<87fryp6smk.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>"}}]