From be8b1a9f7995fbd21d95156ba95d51efd1cea2b3 Mon Sep 17 00:00:00 2001 From: vasilito Date: Sat, 11 Jul 2026 06:18:41 +0300 Subject: [PATCH] add posix FD list to AwaitingFiletableChange and EBADF logs --- src/scheme/proc.rs | 11 +++++++++-- src/syscall/fs.rs | 8 ++++++-- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/src/scheme/proc.rs b/src/scheme/proc.rs index d3f5464781..4216c6782a 100644 --- a/src/scheme/proc.rs +++ b/src/scheme/proc.rs @@ -766,7 +766,7 @@ impl KernelScheme for ProcScheme { kind: ContextHandle::AwaitingFiletableChange { new_ft }, context, } => { - let (posix_count, upper_count, upper_list) = { + let (posix_count, upper_count, upper_list, posix_list) = { let ft = new_ft.read(token.token()); let pc = ft.posix_fdtbl.iter().filter(|f| f.is_some()).count(); let uc = ft.upper_fdtbl.iter().filter(|f| f.is_some()).count(); @@ -776,7 +776,13 @@ impl KernelScheme for ProcScheme { ul.push_str(&format!(" {:x}", i)); } } - (pc, uc, ul) + let mut pl = String::new(); + for (i, f) in ft.posix_fdtbl.iter().enumerate() { + if f.is_some() { + pl.push_str(&format!(" {}", i)); + } + } + (pc, uc, ul, pl) }; let ctx_name = context.read(token.token()).name; info!( @@ -784,6 +790,7 @@ impl KernelScheme for ProcScheme { ctx_name, posix_count, upper_count ); info!("upper FDs present:{}", upper_list); + info!("posix FDs present:{}", posix_list); context.write(token.token()).files = new_ft; } _ => (), diff --git a/src/syscall/fs.rs b/src/syscall/fs.rs index 0cfb9ddfab..61340a65a6 100644 --- a/src/syscall/fs.rs +++ b/src/syscall/fs.rs @@ -93,9 +93,13 @@ pub fn openat( .filter(|(_, f)| f.is_some()) .map(|(i, _)| i.to_string()) .collect::>().join(","); + let posix_present: String = ft.posix_fdtbl.iter().enumerate() + .filter(|(_, f)| f.is_some()) + .map(|(i, _)| i.to_string()) + .collect::>().join(","); info!( - "openat: EBADF fh={:#x} ctx='{}' is_upper={} idx={} upper_len={} upper_at_idx={} upper_present=[{}]", - raw, name, is_upper, stripped, upper_len, upper_at_idx, upper_present + "openat: EBADF fh={:#x} ctx='{}' is_upper={} idx={} upper_len={} upper_at_idx={} upper_present=[{}] posix_present=[{}]", + raw, name, is_upper, stripped, upper_len, upper_at_idx, upper_present, posix_present ); Error::new(EBADF) })?;