Latest Results
fix(du): use getdents64 on Linux to avoid EOVERFLOW on 32-bit architectures
On 32-bit Linux (i686), du fails with "Value too large for defined data
type" (EOVERFLOW) when reading directories. The root cause is nix::dir::Dir
calling libc::readdir(), which uses 32-bit d_ino on 32-bit glibc. Modern
filesystems (XFS, Btrfs, ext4+inode64) can return inode numbers exceeding
32 bits.
Replace nix::dir::Dir with rustix::fs::RawDir on Linux/Android, which
calls getdents64 syscall directly with 64-bit d_ino/d_off. This fixes du
and all other utilities using DirFd::read_dir() (rm, chmod, chown,
install).
On non-Linux Unix (macOS, BSDs), the existing nix implementation is
retained.
Closes #11848 Latest Branches
0%
0%
0%
© 2026 CodSpeed Technology