Bug 128390 (IT_36853) - stat() fails on files larger than 2G
Summary: stat() fails on files larger than 2G
Alias: IT_36853
Product: Red Hat Enterprise Linux 2.1
Classification: Red Hat
Component: sh-utils   
(Show other bugs)
Version: 2.1
Hardware: i686
OS: Linux
Target Milestone: ---
Assignee: Tim Waugh
QA Contact:
: 133386 (view as bug list)
Depends On:
Blocks: 123573
TreeView+ depends on / blocked
Reported: 2004-07-22 14:48 UTC by Steve Conklin
Modified: 2007-11-30 22:06 UTC (History)
2 users (show)

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
Last Closed: 2004-12-13 21:35:14 UTC
Type: ---
Regression: ---
Mount Type: ---
Documentation: ---
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---

Attachments (Terms of Use)

External Trackers
Tracker ID Priority Status Summary Last Updated
Red Hat Product Errata RHBA-2004:458 normal SHIPPED_LIVE Updated sh-utils package 2004-12-13 05:00:00 UTC

Description Steve Conklin 2004-07-22 14:48:14 UTC
From Bugzilla Helper:
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.4.2)

Description of problem:
stat() call fails on files over 2G. It failed on U4 and also with the
new glibc in the U5beta (glibc-2.2.4-32.16).

This was originally reported as "/usr/bin/test -f" fails with large
files. Issue tracker #36853

Here is a small program that demonstrates the problem.

[root@jarjar footest]# ls -l
total 2152536
-rw-r--r--    1 root     root          145 Jul 16 16:46 ls-out
-rwxr-xr-x    1 root     root        16417 Jul 22 09:25 stattest
-rw-r--r--    1 root     root          380 Jul 22 09:25 stattest.c
-rw-r--r--    1 root     root           49 Jul 22 09:16 stattest.c~
-rw-r--r--    1 root     root     2202009600 Jul 16 16:45 test-file
[root@jarjar footest]# cat stattest.c
#include <stdio.h>
#include <sys/stat.h>
#include <sys/errno.h>
  struct stat st;
  int retval;
  retval = stat ("./test-file", &st);
  printf("Big file result = %d\n", retval);
  if (retval < 0)
    printf("errno = %d\n", errno);
  retval = stat ("./ls-out", &st);
  printf("Small file result = %d\n", retval);
  if (retval < 0)
    printf("errno = %d\n", errno);
[root@jarjar footest]# ./stattest
Big file result = -1
errno = 75
Small file result = 0

Version-Release number of selected component (if applicable):

How reproducible:

Steps to Reproduce:
1. Create a large file
2. run the test program
3. observe the results

Actual Results:  stat call fails

Expected Results:  stat call doesn't fail

Additional info:

Comment 1 Stephen Tweedie 2004-07-22 15:31:22 UTC
error 75 is EOVERFLOW.  32-bit stat() is *required* to return
EOVERFLOW for files larger than 2G.  See


for the relevant standards.

If you want the stat to succeed, you must either use the stat64()
variant --- if necessary, enabling that via 


or compile with transparent 64-bit file size support by using that
#define plus 

#define _FILE_OFFSET_BITS 64

Only if you do the latter will stat() automatically use the 64-bit
extended struct stat.

If "/usr/bin/test -f" is failing, that implies the test binary is not
using the 64-bit stat variants as it should do.

Comment 2 Jakub Jelinek 2004-07-22 15:36:00 UTC
For transparent 64-bit file size support actually just
-D_FILE_OFFSET_BITS=64 is enough, _LARGEFILE64_SOURCE is not needed.

Comment 3 Tim Waugh 2004-07-22 15:57:24 UTC
Well /usr/bin/test belongs to sh-utils, doesn't it?

For some reason the spec file explicitly uses --disable-largefile when
running configure:

%configure %{?this_os_is_linux: --disable-largefile --enable-pam }

Comment 5 Steve Conklin 2004-07-26 13:28:12 UTC
I've rebuilt sh-utils without --disable-largefile, and it solved this
problem. Also, all the tests in the script tests/test/test-tests
passed (for what that's wort).

Comment 6 Tim Waugh 2004-09-24 07:39:05 UTC
*** Bug 133386 has been marked as a duplicate of this bug. ***

Comment 7 John Flanagan 2004-12-13 21:35:14 UTC
An errata has been issued which should help the problem 
described in this bug report. This report is therefore being 
closed with a resolution of ERRATA. For more information
on the solution and/or where to find the updated files, 
please follow the link below. You may reopen this bug report 
if the solution does not work for you.


Note You need to log in before you can comment on or make changes to this bug.