From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca (simark.ca [158.69.221.121]) by sourceware.org (Postfix) with ESMTPS id C2D003858D1E for ; Fri, 8 Sep 2023 01:53:57 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org C2D003858D1E Authentication-Results: sourceware.org; dmarc=fail (p=none dis=none) header.from=efficios.com Authentication-Results: sourceware.org; spf=fail smtp.mailfrom=efficios.com Received: from localhost.localdomain (modemcable238.237-201-24.mc.videotron.ca [24.201.237.238]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (prime256v1) server-digest SHA256) (No client certificate requested) by simark.ca (Postfix) with ESMTPSA id 1FACA1E028; Thu, 7 Sep 2023 21:53:56 -0400 (EDT) From: Simon Marchi To: gdb-patches@sourceware.org Cc: Simon Marchi Subject: [PATCH] gdb/testsuite: add xfail for gdb/29965 in gdb.threads/process-exit-status-is-leader-exit-status.exp Date: Thu, 7 Sep 2023 21:53:55 -0400 Message-ID: <20230908015356.406003-1-simon.marchi@efficios.com> X-Mailer: git-send-email 2.42.0 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-1173.6 required=5.0 tests=BAYES_00,GIT_PATCH_0,KAM_DMARC_NONE,KAM_DMARC_STATUS,SPF_HELO_PASS,SPF_SOFTFAIL,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: Bug 29965 shows on a Linux kernel >= 6.1, that test fails consistently with: FAIL: gdb.threads/process-exit-status-is-leader-exit-status.exp: iteration=0: continue (the program exited) ... FAIL: gdb.threads/process-exit-status-is-leader-exit-status.exp: iteration=9: continue (the program exited) This is due to a change in Linux kernel behavior [1] that affects exactly what this test tests. That is, if multiple threads (including the leader) call SYS_exit, the exit status of the process should be the exit status of the leader. After that change in the kernel, it is no longer the case. Add an xfail in the test, based on the Linux kernel version. The goal is that if a regression is introduced in GDB regarding this feature, it should be caught if running on an older kernel where the behavior was consistent. [1] https://bugzilla.suse.com/show_bug.cgi?id=1206926 Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=29965 Change-Id: If6ab7171c92bfc1a3b961c7179e26611773969eb --- ...cess-exit-status-is-leader-exit-status.exp | 21 ++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/gdb/testsuite/gdb.threads/process-exit-status-is-leader-exit-status.exp b/gdb/testsuite/gdb.threads/process-exit-status-is-leader-exit-status.exp index f64d6a73deaf..2bc73fdde07f 100644 --- a/gdb/testsuite/gdb.threads/process-exit-status-is-leader-exit-status.exp +++ b/gdb/testsuite/gdb.threads/process-exit-status-is-leader-exit-status.exp @@ -41,6 +41,25 @@ for {set iteration 0} {$iteration < 10} {incr iteration} { return } - gdb_test "continue" "\\\[Inferior 1 \\(.*\\) exited with code 01\\\]" + gdb_test_multiple "continue" "" { + -re -wrap "\\\[Inferior 1 \\(.*\\) exited with code 01\\\]" { + pass $gdb_test_name + } + + -re -wrap "\\\[Inferior 1 \\(.*\\) exited with code $::decimal\\\]" { + set lkv [linux_kernel_version] + + if { [llength $lkv] != 0 } { + lassign $lkv major minor patch + + if { ($major == 6 && $minor >= 1) || $major > 6 } { + xfail "$gdb_test_name (PR 29965)" + return + } + } + + fail $gdb_test_name + } + } } } base-commit: def2803789208a617c429b5dcf2026decb25ce0c -- 2.42.0