[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[netCDF #ANI-357083]: Errors writing large files
- Subject: [netCDF #ANI-357083]: Errors writing large files
- Date: Wed, 19 Dec 2012 16:08:27 -0700
Good afternoon Mitch,
> I downloaded NetCDF-4.2.dev-NC3-32-shared.exe two days ago(2012-12-17)
> from http://www.unidata.ucar.edu/software/netcdf/win_netcdf/#binaries
>
> That version doesn't crash when I try to create a large file, but it
> doesn't work either.
>
> With the same source code as before, building the Release build...
>
> - with NC_64BIT_OFFSET but not NC_SHARE, nc_enddef fails with error 22
> (Invalid argument). The resultant file is 2G (2,147,475,456 bytes).
>
> - with NC_64BIT_OFFSET and NC_SHARE, it works OK up to 4G, but fails for
> larger files.
>
> I get the same results building with Visual Studio 2005 on XP, or VS2010
> on Windows 7.
>
> Any ideas when we might have a NetCDF for Windows that works correctly
> with large files (>4GB)
>
I've spent most of this afternoon investigating this issue, and it appears to
be related to how large file support is handled in 32-bit Windows. Fixing this
is going to take a little bit of planning, but in the meantime I can offer two
solutions that worked with your test program on my Windows 7 machine.
1. Use the 64-bit libraries: If you were to download and install
NetCDF-4.2.dev-NC3-64-shared.exe from the Windows NetCDF website, you should be
able to generate the larger file.
2. Use the netCDF4 file format: If you were to download and install one of the
netCDF-4 packages (NC4), you would be able to invoke nc_create with the
NC_NETCDF4 flag; this worked for me in both 32 and 64 bit Windows environments.
Thanks for your help bringing this to my attention; this is an issue which will
need to be addressed to offer full large file support on Windows in both 32 and
64 bit environments.
Have a great evening,
-Ward
> Thanks
>
> Mitch Ames
>
> From: Ames, Mitch
> Sent: 2012-11-30, Friday 17:07
> To: 'address@hidden'
> Subject: Errors writing large files
>
> Further to my original e-mail below ...
>
> If set NC_NOFILL after creating the file, eg:
>
> err = nc_create("big.nc", NC_CLOBBER | NC_64BIT_OFFSET /*|
> NC_SHARE*/, &ncid);
>
> CHECK("nc_create")
>
> err = nc_set_fill(ncid, NC_NOFILL, NULL);
>
> CHECK("nc_set_fill")
>
> ...
>
> nc_enddef() succeeds but the program crashes (with the same errors as
> before) when writing the data as the file gets up to 2GB or 4GB.
>
> From: Ames, Mitch
> Sent: 2012-11-30, Friday 16:01
> To: 'address@hidden'
> Subject:
>
> I'm running into problems creating large (> 4GB) NetCDF files.
>
> I've downloaded nc3_32_dll.zip
> <http://www.unidata.ucar.edu/software/netcdf/win_netcdf/nc3_32_dll.zip>
> from http://www.unidata.ucar.edu/software/netcdf/win_netcdf/#binaries,
> and I'm building and running a Debug build.
>
> Attached is the test code that I use to reproduce the problem.
>
> In all cases I'm creating the file with NC_64BIT_OFFSET and three
> fixed-size variables, the first two of which are relatively small
> (<1MB), the third large (>4 GB). From my reading of the documentation,
> this should be supported. (There are no record variables.)
>
> In all cases where it crashes, the program crashes in nc_enddef().
>
> To change the size of the file created, I just change the size of
> x_columns and y_rows.
>
> If I create the file without NC_SHARE, nc_enddef() crashes if the file
> exceeds 2GB, with these errors:
>
> Microsoft Visual C++ Runtime Library
>
> Assertion failed!
>
> Program: c:\mitch\netcdf\largenetcdf\debug\LargeNetCDF.exe
>
> File: ../../libsrc/posixio.c
>
> Line: 363
>
> pxp->bf_offset + (off_t) pxp->bf_extent
>
> (then if that is ignored ...)
>
> Microsoft Visual C++ Runtime Library
>
> Assertion failed!
>
> Program: c:\mitch\netcdf\largenetcdf\debug\LargeNetCDF.exe
>
> File: ../../libsrc/posixio.c
>
> Line: 365
>
> Expression: pIf(fIsSet(rflags, RGN_MODIFIED),
> fIsSet(pxp->bf_rflags, RGN_WRITE))
>
> (then if that is ignored an unhandled Win32 exception [3040]...)
>
> With NC_SHARE it works up to 4GB but fails above that with:
>
> Microsoft Visual C++ Runtime Library
>
> Assertion failed!
>
> Program: c:\mitch\netcdf\largenetcdf\debug\LargeNetCDF.exe
>
> File: ../../libsrc/posixio.c
>
> Line: 286
>
> Expression: *posp == OFF_NONE || *posp == lseek(nciop->fd,
> 0, SEEK_CUR)
>
> (then if that is ignored an unhandled Win32 exception [3120]...)
>
> Similar results occur with the same source code and netcdf libraries,
> using
>
> - Visual Studio 2005 SP2 on Windows XP SP3
>
> - Visual Studio 2010 SP1 on Windows 7 SP1
>
> I can't run the Release build at all - it simply crashes with an
> unhandled Win32 exception [2216].
>
> I can't build with nc3_32_static, as explained in my e-mail of
> 2012-11-27 (your Ticket ID: IHX-989868)
>
> Some help resolving this problem would be appreciated.
>
> Thank-you
>
> Mitch Ames
>
>
>
Ticket Details
===================
Ticket ID: ANI-357083
Department: Support netCDF
Priority: Normal
Status: Open