66 lines
2.4 KiB
Diff
66 lines
2.4 KiB
Diff
|
From ebceffa1196651683a7a6d31abb4b3b5adc6c168 Mon Sep 17 00:00:00 2001
|
||
|
From: Simon Marchi <simon.marchi@efficios.com>
|
||
|
Date: Thu, 7 Sep 2023 21:53:55 -0400
|
||
|
Subject: [PATCH 12/12] gdb/testsuite: add xfail for gdb/29965 in
|
||
|
gdb.threads/process-exit-status-is-leader-exit-status.exp
|
||
|
|
||
|
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
|
||
|
Approved-By: Tom de Vries <tdevries@suse.de>
|
||
|
---
|
||
|
...cess-exit-status-is-leader-exit-status.exp | 19 ++++++++++++++++++-
|
||
|
1 file changed, 18 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 f64d6a73dea..e470fe29110 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,23 @@ 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 } {
|
||
|
+ if { [version_compare {6 1 0} <= $lkv] } {
|
||
|
+ xfail "$gdb_test_name (PR 29965)"
|
||
|
+ return
|
||
|
+ }
|
||
|
+ }
|
||
|
+
|
||
|
+ fail $gdb_test_name
|
||
|
+ }
|
||
|
+ }
|
||
|
}
|
||
|
}
|
||
|
--
|
||
|
2.35.3
|
||
|
|