OpenCSW Bug Tracker


Viewing Issue Simple Details Jump to Notes ] View Advanced ] Issue History ] Print ]
ID Category Severity Reproducibility Date Submitted Last Update
0004097 [texlive_xetex] regular use block always 2009-12-24 02:53 2012-06-29 16:51
Reporter adb View Status public  
Assigned To pfelecan
Priority normal Resolution won't fix  
Status closed  
Summary 0004097: LaTeX "can't find file" when file is on a large filesystem because 32-bit stat() call is used
Description On our multi-TB filesystems, the CSW LaTeX gives the error "can't find file". When the same file is moved to a smaller filesystem, LaTeX can find it.

I ran latex under truss, and it appears that the xstat() call is returning EOVERFLOW when latex checks on the target file, presumably because the number of blocks on the filesystem does not fit in a 32-bit int.

I'm hoping this is just a matter of rebuilding TeTeX with 64-bit filesystem calls enabled.
Additional Information
Tags No tags attached.
Attached Files txt file icon failure.txt [^] (1,904 bytes) 2010-10-04 21:09
txt file icon success.txt [^] (2,358 bytes) 2010-10-04 21:09

- Relationships

-  Notes
(0008347)
pfelecan (manager)
2010-10-04 18:48

I'm using teTeX daily on a multi-TB ZFS file system and had never this issue. What are the full characteristics of your file system?
(0008348)
pfelecan (manager)
2010-10-04 18:49

the detailed characteristics of the file system where this issue occurs.
(0008351)
adb (reporter)
2010-10-04 21:10

[I sent this earlier via email, but apparently that doesn't update the issue notes]

I think I was mistaken about it being related to # of blocks; it may
actually be a issue with the size of inode numbers.

The filesystem is NFS-mounted from an Isilon cluster. It's currently
1TB; at the time I submitted the bug report, I think it was rather
larger. (It's carved out with a server-side quota from a 1PB
filesystem.) I still see the bug on all our Isilon filesystems, but
not on NetApp or local filesystems.

Files on the Isilon filesystems typically have inode numbers > 2^32,
while creating the test file on the NetApp and local filesystems
generally yields inode numbers in the millions. Attached are example
LaTeX runs with stat information about the file and filesystems.

Diffing the strace outputs (stripped of everything but stat calls,
with pointer values scrubbed to make the diff work), we see

 xstat(2, "/opt/csw/share/texmf-dist/aliases", POINTER) = 0
 fstat64(3, POINTER) = 0
 fstat64(3, POINTER) = 0
-xstat(2, ".", POINTER) = 0
-xstat(2, "./test.ltx", POINTER) = 0
+xstat(2, ".", POINTER) Err#79 EOVERFLOW
 fstat64(1, POINTER) = 0
 fstat64(1, POINTER) = 0

i.e., in the successful run, we stat the current directory, then stat
the file, but in the failed run we stat the current directory, get
EOVERFLOW, and bail.

The "stat" command uses lstat64() rather than xstat(). (I'm assuming
xstat() is actually getting called behind the scenes by a library
function, since it's undocumented...)
(0008352)
pfelecan (manager)
2010-10-05 09:59

Thank you for the information. I will look for a test case involving kpathsea. When I have something I'll come back.
(0009991)
pfelecan (manager)
2012-06-29 16:51

teTeX is old and I don't plan to release a new package but rather to deliver a texlive based set of packages; use smaller file systems...


Copyright © 2000 - 2008 Mantis Group
Powered by Mantis Bugtracker