add filetable state logging at EBADF point

This commit is contained in:
2026-07-11 05:30:31 +03:00
parent f6ef98755c
commit 63d7dc0470
+18 -1
View File
@@ -79,7 +79,24 @@ pub fn openat(
let (context, mut token) = current.token_split();
let name = context.name;
let pipe = context.get_file(fh, &mut token).ok_or_else(|| {
info!("openat: EBADF fh={:#x} ctx='{}'", fh.get(), name);
let ft = context.files.read(token.token());
let raw = fh.get();
let stripped = raw & !syscall::UPPER_FDTBL_TAG;
let is_upper = raw & syscall::UPPER_FDTBL_TAG != 0;
let upper_len = ft.upper_fdtbl.len();
let upper_at_idx = if is_upper && stripped < ft.upper_fdtbl.len() {
ft.upper_fdtbl[stripped].is_some()
} else {
false
};
let upper_present: String = ft.upper_fdtbl.iter().enumerate()
.filter(|(_, f)| f.is_some())
.map(|(i, _)| i.to_string())
.collect::<Vec<_>>().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
);
Error::new(EBADF)
})?;
let desc = pipe.description.read(token.token());