File disable-pidfd-test-old-glibc.patch of Package rust1.78.34328
diff --git a/library/std/src/sys/pal/unix/process/process_unix/tests.rs b/library/std/src/sys/pal/unix/process/process_unix/tests.rs
index 0a6c6ec19..e5e1f956b 100644
--- a/library/std/src/sys/pal/unix/process/process_unix/tests.rs
+++ b/library/std/src/sys/pal/unix/process/process_unix/tests.rs
@@ -60,57 +60,3 @@ fn test_command_fork_no_unwind() {
|| signal == libc::SIGSEGV
);
}
-
-#[test]
-#[cfg(target_os = "linux")] // pidfds are a linux-specific concept
-fn test_command_pidfd() {
- use crate::assert_matches::assert_matches;
- use crate::os::fd::{AsRawFd, RawFd};
- use crate::os::linux::process::{ChildExt, CommandExt};
- use crate::process::Command;
-
- // pidfds require the pidfd_open syscall
- let our_pid = crate::process::id();
- let pidfd = unsafe { libc::syscall(libc::SYS_pidfd_open, our_pid, 0) };
- let pidfd_open_available = if pidfd >= 0 {
- unsafe { libc::close(pidfd as RawFd) };
- true
- } else {
- false
- };
-
- // always exercise creation attempts
- let mut child = Command::new("false").create_pidfd(true).spawn().unwrap();
-
- // but only check if we know that the kernel supports pidfds.
- // We don't assert the precise value, since the standard library
- // might have opened other file descriptors before our code runs.
- if pidfd_open_available {
- assert!(child.pidfd().is_ok());
- }
- if let Ok(pidfd) = child.pidfd() {
- let flags = super::cvt(unsafe { libc::fcntl(pidfd.as_raw_fd(), libc::F_GETFD) }).unwrap();
- assert!(flags & libc::FD_CLOEXEC != 0);
- }
- let status = child.wait().expect("error waiting on pidfd");
- assert_eq!(status.code(), Some(1));
-
- let mut child = Command::new("sleep").arg("1000").create_pidfd(true).spawn().unwrap();
- assert_matches!(child.try_wait(), Ok(None));
- child.kill().expect("failed to kill child");
- let status = child.wait().expect("error waiting on pidfd");
- assert_eq!(status.signal(), Some(libc::SIGKILL));
-
- let _ = Command::new("echo")
- .create_pidfd(false)
- .spawn()
- .unwrap()
- .pidfd()
- .expect_err("pidfd should not have been created when create_pid(false) is set");
-
- let _ = Command::new("echo")
- .spawn()
- .unwrap()
- .pidfd()
- .expect_err("pidfd should not have been created");
-}