[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[netCDF #QCX-463169]: possible bug in 4.3.3.1 with unlimited dimensions in NetCDF-4 format?



Hi Ellen,

I just committed a fix for this problem on GitHub, so you could get the
latest sources there and build from them. Here's the diffs:

  
https://github.com/Unidata/netcdf-c/commit/67ad8d89a83d13a63a214157b94c2caae9edb7f4

and you'll see your fine test case added to the nc_test directory.

If you build with autoconf tools, you'll need to generate the configure
script from the GitHub snapshot by running "autoconf -if" first.

It turns out that we don't have very good test coverage for writing and reading
record variables that have the unlimited dimension in a position other than the
first, so you may encounter other similar bugs with mapped access or even
strided reads. If so, please let us know!

Thanks for reporting the bug!

--Russ

> address@hidden> wrote:
> 
> > New Client Reply: possible bug in 4.3.3.1 with unlimited dimensions in
> > NetCDF-4 format?
> >
> > Hi Ward,
> >   Thank you for letting me know the status.  I'm trying to figure out a
> > workaround, as I'm really hoping to upgrade to your latest NetCDF version
> > (the version we currently have is 4.1.3).
> >   If you know of a workaround, or if you think a patch might be issued,
> > please let me know.
> >   Thank you!
> >      ellen
> >
> > -----Original Message-----
> > From: Unidata netCDF Support [mailto:address@hidden]
> > Sent: Thursday, March 05, 2015 1:26 PM
> > To: Ellen Johnson
> > Cc: address@hidden
> > Subject: [netCDF #QCX-463169]: possible bug in 4.3.3.1 with unlimited
> > dimensions in NetCDF-4 format?
> >
> > Hello Ellen,
> >
> > Thank you very much for the test program! I've duplicated your error, and
> > am currently working on narrowing down when the bug was introduced.  I've
> > created a ticket in our JIRA system, which can be viewed at
> > https://bugtracking.unidata.ucar.edu/browse/NCF-326, if you are
> > interested.
> >
> > I will follow up with you once we know more, thanks again!
> >
> > -Ward
> >
> >
> > > Hello,
> > >
> > > I just upgraded from NetCDF 4.1.3 to NetCDF 4.3.3.1 and am seeing a
> > > problem in our regression test when writing unlimited dimensions to a
> > > NetCDF-4 format file.  Specifically, if the unlimited dimension is
> > > last instead of the first in the dimension list, or if I declare more
> > > than one unlimited dimension, the program errors with the NC_EEDGE error:
> > >
> > > Error: NetCDF: Start+count exceeds dimension bound
> > >
> > > This does not occur in our current NetCDF version 4.1.3.
> > >
> > > To isolate the issue, I built NetCDF 4.3.3.1 outside of our build
> > > infrastructure and wrote a standalone C program to write to a NetCDF-4
> > > file, so I am bypassing MATLAB completely.
> > >
> > > Can you please help me determine if this is a bug in the NetCDF code,
> > > specifically in dvarput.c?
> > >
> > > Below is the standalone C program that will throw the error above when
> > >
> > > Thank you!
> > >
> > > Ellen Johnson
> > > Software Engineer
> > > Image and Scientific File Formats
> > > MathWorks
> > >
> > >
> > >
> > > #include <stdio.h>
> > > #include <string.h>
> > > #include <netcdf.h>
> > >
> > > #define FILE_NAME "unlim.nc"
> > >
> > > /* 3D matrix, 6 x 4 x 3 */
> > >
> > > #define NDIMS 3
> > > #define X_LEN 6
> > > #define Y_LEN 4
> > > #define Z_LEN 3
> > >
> > > /* Handle errors by printing an error message */
> > >
> > > #define ERR(e) {printf("Error: %s\n", nc_strerror(e)); return 2;}
> > >
> > > int
> > > main()
> > >
> > > {
> > > size_t start[NDIMS] = {0, 0, 0};
> > > size_t count[NDIMS] = {X_LEN, Y_LEN, Z_LEN}; ptrdiff_t stride[NDIMS] =
> > > {1, 1, 1}; float mydata[X_LEN * Y_LEN * Z_LEN]; int i; int retval;
> > >
> > > int ncid, varid;
> > > int dimids[NDIMS];
> > >
> > > for (i = 0; i < (X_LEN * Y_LEN * Z_LEN); i++) mydata[i] = i;
> > >
> > >
> > > /* create the file in NetCDF-4 format */ if ((retval =
> > > nc_create(FILE_NAME, NC_NETCDF4, &ncid))) ERR(retval);
> > >
> > >
> > > /* define dimensions */
> > > if ((retval = nc_def_dim(ncid, "time", X_LEN, &dimids[0])))
> > > ERR(retval);
> > >
> > > if ((retval = nc_def_dim(ncid, "lat", Y_LEN, &dimids[1])))
> > > ERR(retval);
> > >
> > > if ((retval = nc_def_dim(ncid, "lon", NC_UNLIMITED, &dimids[2])))
> > > ERR(retval);
> > >
> > > /* define the variable */
> > > if ((retval = nc_def_var(ncid, "data", NC_FLOAT, NDIMS, dimids,
> > > &varid))) ERR(retval);
> > >
> > >
> > > /* end define mode */
> > > if ((retval = nc_enddef(ncid)))
> > > ERR(retval);
> > >
> > >
> > > /* write data */
> > > if ((retval = nc_put_vars_float(ncid, varid, start, count, stride,
> > > mydata)))
> > > ERR(retval);
> > >
> > >
> > > /* close the file */
> > > if ((retval = nc_close(ncid)))
> > > ERR(retval);
> > >
> > > printf("\n\n*** SUCCESS writing example file %s!\n", FILE_NAME);
> > >
> > > return 0;
> > >
> > > }
> > >
> >
> > Ticket Details
> > ===================
> > Ticket ID: QCX-463169
> > Department: Support netCDF
> > Priority: Normal
> > Status: Closed
> >
> >
> >
> > Ticket Details
> > ===================
> > Ticket ID: QCX-463169
> > Department: Support netCDF
> > Priority: Normal
> > Status: Open
> > Link:
> > https://www.unidata.ucar.edu/esupport/staff/index.php?_m=tickets&_a=viewticket&ticketid=25271
> >
> >
> 
> 
Russ Rew                                         UCAR Unidata Program
address@hidden                      http://www.unidata.ucar.edu



Ticket Details
===================
Ticket ID: QCX-463169
Department: Support netCDF
Priority: Normal
Status: Closed