trouble with files bigger than 4GB
Raimo Niskanen
raimo.niskanen@REDACTED
Thu Apr 17 10:14:40 CEST 2003
Not really a known bug, but I am not surprised. Large file support is
fairly new, and not well (if at all :-) tested.
There is some way to compile a program for solaris so that fopen() means
fopen64(), off_t becomes 64 bit, and so on. If this is done, the code
should work. It is perhaps even so that for an Erlang/OTP system built
for Solaris8 it works, while not for a system built for Solaris2.5.1.
Since the size of off_t is configured when building open source Erlang,
on a system with 64 bits off_t - large file operations should work. Have
a look in $ERL_TOP/erts/$PLATFORM/config.h for SIZEOF_OFF_T and see if
it is 4 (bytes). $PLATFORM is the system name
$ERL_TOP/erts/autoconf/config.guess reports when executed. $ERL_TOP is
your open source build root.
Please try some more file operations on your large file. Try file:open,
file:position, file:read, and see if it seems to work on FreeBSD. I am
really curious.
I have browsed the source and think I see a bug in reading the size
field for file:read_file_info - the high word of the size field is
ignored, so if other file operations work, it is a small bug fix and can
be done for R9C. If no other file operations work, it is a bigger
problem and will have to wait. Please let me know.
/ Raimo Niskanen, Erlang/OTP, Ericsson AB
Daniel Solaz wrote:
> hi, anyone out there trying to deal with large files?
>
> when given a file that is 4294967297 bytes (4GB + 1 byte) long,
> file:read_file_info() incorrectly reports a file size of 1 byte
>
> file:position(F, {eof, 0}) returns {ok, 1}
>
> files bigger than 2GB but smaller than 4GB work fine
>
> I'm using R9B-1 on FreeBSD 4.6 for intel
>
> on Solaris 8 for intel, R9B-1 refuses to file:read_file_info() or
> file:open() the file, returning {error, unknown}, and I actually prefer
> this behavior
>
> this difference might (or might not) be due to Solaris requiring
> fopen64() for large file operations, whereas FreeBSD just uses fopen()
>
> is this a known bug?
>
> -Daniel
More information about the erlang-questions
mailing list