[{"id":3154,"web_url":"https://patchwork.libcamera.org/comment/3154/","msgid":"<20191127150418.GG12879@bigcity.dyn.berto.se>","date":"2019-11-27T15:04:18","subject":"Re: [libcamera-devel] [PATCH 2/5] test: message: Add slow receiver\n\ttest","submitter":{"id":5,"url":"https://patchwork.libcamera.org/api/people/5/","name":"Niklas Söderlund","email":"niklas.soderlund@ragnatech.se"},"content":"Hi Laurent,\n\nThanks for your patch.\n\nOn 2019-11-27 10:49:06 +0200, Laurent Pinchart wrote:\n> There's a race in the message delivery against object deletion. Add a\n> test that triggers it reliably. This test is expected to fail with an\n> assertion error.\n> \n> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n\nI like how natural this test feels which means the API must be good \nright ;-)\n\nReviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>\n\n> ---\n>  test/message.cpp | 32 ++++++++++++++++++++++++++++++++\n>  1 file changed, 32 insertions(+)\n> \n> diff --git a/test/message.cpp b/test/message.cpp\n> index cf21d5ca50d1..7ebedb557502 100644\n> --- a/test/message.cpp\n> +++ b/test/message.cpp\n> @@ -52,6 +52,25 @@ private:\n>  \tStatus status_;\n>  };\n>  \n> +class SlowMessageReceiver : public Object\n> +{\n> +protected:\n> +\tvoid message(Message *msg)\n> +\t{\n> +\t\tif (msg->type() != Message::None) {\n> +\t\t\tObject::message(msg);\n> +\t\t\treturn;\n> +\t\t}\n> +\n> +\t\t/*\n> +\t\t * Don't access any member of the object here (including the\n> +\t\t * vtable) as the object will be deleted by the main thread\n> +\t\t * while we're sleeping.\n> +\t\t */\n> +\t\tthis_thread::sleep_for(chrono::milliseconds(100));\n> +\t}\n> +};\n> +\n>  class MessageTest : public Test\n>  {\n>  protected:\n> @@ -88,6 +107,19 @@ protected:\n>  \t\t\tbreak;\n>  \t\t}\n>  \n> +\t\t/*\n> +\t\t * Test for races between message delivery and object deletion.\n> +\t\t * Failures result in assertion errors, there is no need for\n> +\t\t * explicit checks.\n> +\t\t */\n> +\t\tSlowMessageReceiver *slowReceiver = new SlowMessageReceiver();\n> +\t\tslowReceiver->moveToThread(&thread_);\n> +\t\tslowReceiver->postMessage(utils::make_unique<Message>(Message::None));\n> +\n> +\t\tthis_thread::sleep_for(chrono::milliseconds(10));\n> +\n> +\t\tdelete slowReceiver;\n> +\n>  \t\treturn TestPass;\n>  \t}\n>  \n> -- \n> Regards,\n> \n> Laurent Pinchart\n> \n> _______________________________________________\n> libcamera-devel mailing list\n> libcamera-devel@lists.libcamera.org\n> https://lists.libcamera.org/listinfo/libcamera-devel","headers":{"Return-Path":"<niklas.soderlund@ragnatech.se>","Received":["from mail-lj1-x241.google.com (mail-lj1-x241.google.com\n\t[IPv6:2a00:1450:4864:20::241])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 3ED2260C33\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 27 Nov 2019 16:04:20 +0100 (CET)","by mail-lj1-x241.google.com with SMTP id k15so24872201lja.3\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 27 Nov 2019 07:04:20 -0800 (PST)","from localhost (h-93-159.A463.priv.bahnhof.se. [46.59.93.159])\n\tby smtp.gmail.com with ESMTPSA id\n\ti8sm7074048lfl.80.2019.11.27.07.04.18\n\t(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n\tWed, 27 Nov 2019 07:04:18 -0800 (PST)"],"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\t:user-agent; bh=KOMAJgAwPo91K8xNkyB7tWfknguPP8/LwqPj0kf8vPA=;\n\tb=KtXzywShf6qB7mcTyUuw3ctyyaUaaz0u0Fyhxt5M0KVof88sHu9e2oZsBp/hgch85V\n\tHUM2XZQD8+6+l4S6DupGwCTsq2c/pe9x1PLTiRpht6wFDdrp6KMPSJlyFhHdY6+pEP4h\n\teYl9AtRkcBn67tuPQPDAY3PnBTjim5eNtsSesxPLOteu+98M1r57vNd9tz8vdwDneh+p\n\tfPVlVma5E+Vusz4EgeZfEcsXuun0YgeU4iXRG2JfLqpVKztc/uGmOe6P7gt8UEchDBpN\n\tGnmFc1kViHDM0ln3yg2CpQXVQs7Rioh1nL4Yewemock8qaKyrDAhs7UnTX9Ecxbwdgow\n\tq9KA==","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:user-agent;\n\tbh=KOMAJgAwPo91K8xNkyB7tWfknguPP8/LwqPj0kf8vPA=;\n\tb=FECVSXLFL7nNayikMH9h6pNmIThnuMWQMQPNV0pNWUf49Q2iosP3gFy/YZv2vKeiPh\n\trE1gGXFWZLeufhz07WrgaZLAzId8wTza8LSeSqdy+CU3QUOWULvct+InhjeBwVyLzt9g\n\tnYCdHiX7tiezeHVadmb5c8CFPdU01sTXY6byhBq/Gz2FbNUhQUMkR6SARwQbD0K2kp39\n\tnncAg9QMssj0C7SwltDg9gCkKCmk+gmSrV59RW1uZg6EnU5K7kZZtEXCyeqgp1gfilSi\n\tVydCj1nlSJakzugCTHOsMDGqyN2xoEt/RcW13ijtLCOHab0JWvnSclBamc7LKhrUt+3D\n\tcZnA==","X-Gm-Message-State":"APjAAAXXecJcq2xHZpfmpRPPou7547zMSsYIP/r9JhEKx+q/YbaPz6k0\n\twsvlJ4r1I6MPbTowlYYubcs5XykQ5w6Q0g==","X-Google-Smtp-Source":"APXvYqzRn17zoH4nN3SSXBSRDvpH5Ymxt8+8odxJxPcACHWwpYJ/rxyMX/VbU/VHAWyxg8AkZ2zQfw==","X-Received":"by 2002:a2e:9a41:: with SMTP id k1mr5661073ljj.235.1574867059636;\n\tWed, 27 Nov 2019 07:04:19 -0800 (PST)","Date":"Wed, 27 Nov 2019 16:04:18 +0100","From":"Niklas =?iso-8859-1?q?S=F6derlund?= <niklas.soderlund@ragnatech.se>","To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","Cc":"libcamera-devel@lists.libcamera.org","Message-ID":"<20191127150418.GG12879@bigcity.dyn.berto.se>","References":"<20191127084909.10612-1-laurent.pinchart@ideasonboard.com>\n\t<20191127084909.10612-2-laurent.pinchart@ideasonboard.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=iso-8859-1","Content-Disposition":"inline","Content-Transfer-Encoding":"8bit","In-Reply-To":"<20191127084909.10612-2-laurent.pinchart@ideasonboard.com>","User-Agent":"Mutt/1.12.1 (2019-06-15)","Subject":"Re: [libcamera-devel] [PATCH 2/5] test: message: Add slow receiver\n\ttest","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>","X-List-Received-Date":"Wed, 27 Nov 2019 15:04:20 -0000"}}]