Received: by 2002:a05:6358:45e:b0:b5:b6eb:e1f9 with SMTP id 30csp215161rwe; Wed, 31 Aug 2022 20:13:18 -0700 (PDT) X-Google-Smtp-Source: AA6agR561qjVh3Q2iKAlJcVjxX3/V41oV/A5lW0KKFg4ppcVJ7oiyELkEvnfbdGuP5nRbKagfK8p X-Received: by 2002:a05:6402:5024:b0:440:e4ad:f7b6 with SMTP id p36-20020a056402502400b00440e4adf7b6mr27381193eda.358.1662001998080; Wed, 31 Aug 2022 20:13:18 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1662001998; cv=none; d=google.com; s=arc-20160816; b=aoWoB/SoK4VXCZCyvHEaZHXUP4him1jtyQPvzJslh/l5VHV5SVzhaDmoChFS5+5FWB 6t6L0Sh8WReo48k/x3fs+2q5m5aKbK333tgSuv0H148fUKsxVfjPJwmp+1gSROkQM9lx m6k8ggIYxDX5AKJBXV9inxpVGOUKCb+tjeITZ5GLjx9rzVVxXepfj4NAfIcfn+g70Gh6 90wf5A2uIB40w+gtfj0qWqtKRQAz+yTo6vG8TBaHzi0v3/Z1+EC9SCHjO2+GFVpITPDF hDtSgWJkDgQUSmrdoJQxeB2KGmynic6ImacZ5GUWKOURBY4ofnJ6thIzUcP3e5oaIPOQ Oo0Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:message-id:date:subject:cc:to:from :dkim-signature; bh=AHPZvJazFd1q87YaF+oOE/CDLh9RAqlmX9L7CcYBVwY=; b=Vypw/z+ldLsxXawavdQT4tnB+Ms3BRAA6tx2iB4DTnsLPuM83l6VNOQiOBqs799tXB zyWYWogih3J1AWqI/pOytxnTugbRDBsbszc57dT3j+Q7sTuPzyqZgQQkT7tJBGM//eys vjrBbHhC+yfhowag8Mx4tprM7DqIdPZsG8Glu7EYGQWVuElcxCzB9wx8bRYrHqOLyPCX XEBRN9hKb4reZsN28XTfgLC0reXPaTqqJuW41RHqvcy1mST1QIIxwApfG2B0lrGh6GSc rY5vPTjG7IagqqLWtvs7m/ojy6uCrgvn9t1hdoeBLf6FuYTkP69hbPnIRqG/04FQqLTf rgPQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@fujitsu.com header.s=170520fj header.b=GQIS20Um; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=fujitsu.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id qw33-20020a1709066a2100b00741795a8603si9702998ejc.196.2022.08.31.20.12.46; Wed, 31 Aug 2022 20:13:18 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@fujitsu.com header.s=170520fj header.b=GQIS20Um; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=fujitsu.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231700AbiIADLr (ORCPT + 99 others); Wed, 31 Aug 2022 23:11:47 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60600 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229746AbiIADLn (ORCPT ); Wed, 31 Aug 2022 23:11:43 -0400 Received: from mail1.bemta37.messagelabs.com (mail1.bemta37.messagelabs.com [85.158.142.113]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 083A010A632; Wed, 31 Aug 2022 20:11:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fujitsu.com; s=170520fj; t=1662001895; i=@fujitsu.com; bh=AHPZvJazFd1q87YaF+oOE/CDLh9RAqlmX9L7CcYBVwY=; h=From:To:CC:Subject:Date:Message-ID:MIME-Version:Content-Type; b=GQIS20UmeaAXxyXF+CLkPX0X1EDJme6AUEJL3UzB6/1GQw6Mv9+0ypYS6HZqXfujV cQYW6c4zHkQsffaDbO5YyTlk/FKAUCApXg6VDlD98Z9IVTXu/WNsXLtAS239/b52rY 5yYRgo0MGhTAhafVDuaF1iCjPwIHxro5I+YHozVGz7Lm9W7hPa1eCsb30MZTGPTrxx SBLPsVtpt+Akst1NWrFimUF1a5JeT93JK9SAr8G9d4GHQDJKxs5zSkJaeXobJKr/tE 9jZ5QRtbw/BVTu1qPx9JErNqlBSrtQb8+nkR4bcl4VcEQoNgBHBVcg5SGOMhsy2R7D ha/6/ZoZ8GxiA== X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrHIsWRWlGSWpSXmKPExsViZ8ORpPtMSSD ZYNJiCYvXhz8xWlzeNYfNYvqd92wWlw5dZLKY8nIduwOrx+I9L5k8Nq3qZPP4vEkugDmKNTMv Kb8igTVj9vbDjAXvRCr+TT7H2sDYLtjFyMUhJLCRUeLSh3csEM5SJomLs69AOUcZJfbs6GDtY uTkYBPQkLjXcpMRxBYRCJA4fOs4mM0skCWxs/kdkM3BISwQJHF8UzxImEVAReJn10k2EJtXwF Hiyt9v7CC2hICCxJSH75kh4oISJ2c+YYEYIyFx8MULZogaRYkjnX9ZIOxKidYPv6BsNYmr5zY xT2Dkn4WkfRaS9gWMTKsYbZOKMtMzSnITM3N0DQ0MdA0NTYG0sa6RoZleYpVuol5qqW5eflFJ hq6hXmJ5sV5qcbFecWVuck6KXl5qySZGYFCnFKff2MG4a98vvUOMkhxMSqK8FYv5k4X4kvJTK jMSizPii0pzUosPMcpwcChJ8DID40RIsCg1PbUiLTMHGGEwaQkOHiUR3ieKQGne4oLE3OLMdI jUKUZdjoO79u9lFmLJy89LlRLnzVUAKhIAKcoozYMbAYv2S4yyUsK8jAwMDEI8BalFuZklqPK vGMU5GJWEeRlALuHJzCuB2/QK6AgmoCOmz+QHOaIkESEl1cDEyPfy59q3j7bZ7ry/WuZY1EcF uyPe7SJ3NaX2HVq2/2xbWdKJKCbHXKct0/glfTqVsvv72xa8PeX6dD9PJtNdceaW4m832vUM4 /YG/1d+6rJfxfq4cl7F5Tdf3p54rXq9VF8olmfH8h/hYrcnxkZ8WlvxUDBz7q9Pp9ZPMlvKHC rw8XPlZoPb9ouVVnPVxE09cH+Xb2i8pKSUh/m/LrlFdpwV0x3mB/wrqL3Ze9j13bnZe0IUV3H vvJN4/fgpvqCcO2FbnFZ+OxYqFv3rWvjmB+tc1di9DCq1b68o2GuZq3XVduXTpQ+5hWoLCgrC OI81fQl6MP1trfbKs5Vt9s+kfVfL63Q+Vrp/8P/e3DgOJZbijERDLeai4kQArxgR5HEDAAA= X-Env-Sender: lizhijian@fujitsu.com X-Msg-Ref: server-3.tower-728.messagelabs.com!1662001893!143285!1 X-Originating-IP: [62.60.8.98] X-SYMC-ESS-Client-Auth: outbound-route-from=pass X-StarScan-Received: X-StarScan-Version: 9.87.3; banners=-,-,- X-VirusChecked: Checked Received: (qmail 5747 invoked from network); 1 Sep 2022 03:11:34 -0000 Received: from unknown (HELO n03ukasimr03.n03.fujitsu.local) (62.60.8.98) by server-3.tower-728.messagelabs.com with ECDHE-RSA-AES256-GCM-SHA384 encrypted SMTP; 1 Sep 2022 03:11:34 -0000 Received: from n03ukasimr03.n03.fujitsu.local (localhost [127.0.0.1]) by n03ukasimr03.n03.fujitsu.local (Postfix) with ESMTP id BEF681AD; Thu, 1 Sep 2022 04:11:33 +0100 (BST) Received: from R01UKEXCASM223.r01.fujitsu.local (R01UKEXCASM223 [10.182.185.121]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by n03ukasimr03.n03.fujitsu.local (Postfix) with ESMTPS id B35121AC; Thu, 1 Sep 2022 04:11:33 +0100 (BST) Received: from fd75cb8233c6.g08.fujitsu.local (10.167.226.45) by R01UKEXCASM223.r01.fujitsu.local (10.182.185.121) with Microsoft SMTP Server (TLS) id 15.0.1497.32; Thu, 1 Sep 2022 04:11:30 +0100 From: Li Zhijian To: , , CC: , Li Zhijian , "Philip Li" Subject: [PATCH v3] ksefltests: pidfd: Fix wait_states: Test terminated by timeout Date: Thu, 1 Sep 2022 03:10:07 +0000 Message-ID: <1662001807-7-1-git-send-email-lizhijian@fujitsu.com> X-Mailer: git-send-email 1.8.3.1 MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [10.167.226.45] X-ClientProxiedBy: G08CNEXCHPEKD07.g08.fujitsu.local (10.167.33.80) To R01UKEXCASM223.r01.fujitsu.local (10.182.185.121) X-Virus-Scanned: ClamAV using ClamSMTP X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,SPF_NONE,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 0Day/LKP observed that the kselftest blocks forever since one of the pidfd_wait doesn't terminate in 1 of 30 runs. After digging into the source, we found that it blocks at: ASSERT_EQ(sys_waitid(P_PIDFD, pidfd, &info, WCONTINUED, NULL), 0); wait_states has below testing flow: CHILD PARENT ---------------+-------------- 1 STOP itself 2 WAIT for CHILD STOPPED 3 SIGNAL CHILD to CONT 4 CONT 5 STOP itself 5' WAIT for CHILD CONT 6 WAIT for CHILD STOPPED The problem is that the kernel cannot ensure the order of 5 and 5', once 5 goes first, the test will fail. we can reproduce it by: $ while true; do make run_tests -C pidfd; done Introduce a blocking read in child process to make sure the parent can check its WCONTINUED. CC: Philip Li Reported-by: kernel test robot Signed-off-by: Li Zhijian Reviewed-by: Christian Brauner (Microsoft) --- I have almost forgotten this patch since the former version post over 6 months ago. This time I just do a rebase and update the comments. V3: fixes description and add review tag V2: rewrite with pipe to avoid usleep --- tools/testing/selftests/pidfd/pidfd_wait.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/tools/testing/selftests/pidfd/pidfd_wait.c b/tools/testing/selftests/pidfd/pidfd_wait.c index 070c1c876df1..c3e2a3041f55 100644 --- a/tools/testing/selftests/pidfd/pidfd_wait.c +++ b/tools/testing/selftests/pidfd/pidfd_wait.c @@ -95,20 +95,28 @@ static int sys_waitid(int which, pid_t pid, siginfo_t *info, int options, .flags = CLONE_PIDFD | CLONE_PARENT_SETTID, .exit_signal = SIGCHLD, }; + int pfd[2]; pid_t pid; siginfo_t info = { .si_signo = 0, }; + ASSERT_EQ(pipe(pfd), 0); pid = sys_clone3(&args); ASSERT_GE(pid, 0); if (pid == 0) { + char buf[2]; + + close(pfd[1]); kill(getpid(), SIGSTOP); + ASSERT_EQ(read(pfd[0], buf, 1), 1); + close(pfd[0]); kill(getpid(), SIGSTOP); exit(EXIT_SUCCESS); } + close(pfd[0]); ASSERT_EQ(sys_waitid(P_PIDFD, pidfd, &info, WSTOPPED, NULL), 0); ASSERT_EQ(info.si_signo, SIGCHLD); ASSERT_EQ(info.si_code, CLD_STOPPED); @@ -117,6 +125,8 @@ static int sys_waitid(int which, pid_t pid, siginfo_t *info, int options, ASSERT_EQ(sys_pidfd_send_signal(pidfd, SIGCONT, NULL, 0), 0); ASSERT_EQ(sys_waitid(P_PIDFD, pidfd, &info, WCONTINUED, NULL), 0); + ASSERT_EQ(write(pfd[1], "C", 1), 1); + close(pfd[1]); ASSERT_EQ(info.si_signo, SIGCHLD); ASSERT_EQ(info.si_code, CLD_CONTINUED); ASSERT_EQ(info.si_pid, parent_tid); -- 1.8.3.1