Package: strace
Version: 4.5.20-2.3

On 32-bit systems, strace is not compiled with -D_FILE_OFFSET_BITS=64
(and the essential message of this bug-report is that ALL programs
that use stat() in any way whatsoever should always be compiled with
this define).

As a result, stat() can fail with EOVERFLOW for the absurd reason that
the inode number of the stat()ed file is greater than (1<<31)-1.

This occurs, in particular, on XFS filesystems of over 1TB in size
(when using 256-byte inodes), according to <URL:
http://xfs.org/docs/xfsdocs-xml-dev/XFS_User_Guide/tmp/en-US/html/ch06s06.html
 >.  Under these circumstances (when running a 32-bit userland on a
64-bit Linux kernel), strace will, for certain files, fail with the
error message "command not found" even though the file exists, simply
because the st_ino field of the stat result structure cannot be
represented in the 32-bit API.

This is not a purely theoretical fear: I just spent a considerable
time pulling my hair trying to understand why strace was telling me a
file did not exist when evidently it did.

Solution: compile strace with -D_FILE_OFFSET_BITS=64 so as to make
ino_t 64-bit wide.  The same argument applies to every program that
makes use of stat() at some point.  (I think this should be a Debian
policy of some kind, but I don't know where these should be submitted.
Please enlighten me.)

-- 
     David A. Madore
   ( http://www.madore.org/~david/ )


-- 
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org

Reply via email to