Commit Graph

134 Commits

Author SHA1 Message Date
Ed Hartnett
fe62f61509 fixed makefile typo 2018-11-18 14:59:05 -07:00
Ed Hartnett
6c9ccd97d8 move cleanup to makefile 2018-11-18 13:43:49 -07:00
Dennis Heimbigner
751300ec59 Fix more memory leaks in netcdf-c library
This is a follow up to PR https://github.com/Unidata/netcdf-c/pull/1173

Sorry that it is so big, but leak suppression can be complex.

This PR fixes all remaining memory leaks -- as determined by
-fsanitize=address, and with the exceptions noted below.

Unfortunately. there remains a significant leak that I cannot
solve. It involves vlens, and it is unclear if the leak is
occurring in the netcdf-c library or the HDF5 library.

I have added a check_PROGRAM to the ncdump directory to show the
problem.  The program is called tst_vlen_demo.c To exercise it,
build the netcdf library with -fsanitize=address enabled. Then
go into ncdump and do a "make clean check".  This should build
tst_vlen_demo without actually executing it.  Then do the
command "./tst_vlen_demo" to see the output of the memory
checker.  Note the the lost malloc is deep in the HDF5 library
(in H5Tvlen.c).

I am temporarily working around this error in the following way.
1. I modified several test scripts to not execute known vlen tests
   that fail as described above.
2. Added an environment variable called NC_VLEN_NOTEST.
   If set, then those specific tests are suppressed.

This should mean that the --disable-utilities option to
./configure should not need to be set to get a memory leak clean
build.  This should allow for detection of any new leaks.

Note: I used an environment variable rather than a ./configure
option to control the vlen tests. This is because it is
temporary (I hope) and because it is a bit tricky for shell
scripts to access ./configure options.

Finally, as before, this only been tested with netcdf-4 and hdf5 support.
2018-11-15 10:00:38 -07:00
Dennis Heimbigner
2ea1cf5f1b There was a request to extend the provenance information
stored in the _NCProperties attribute to allow two things:
1. capture of additional library dependencies (over and above
   hdf5)
2. Recognition of non-netcdf libraries that create netcdf-4 format
   files.

To this end, the _NCProperties format has been extended to be
and arbitrary set of key=value pairs separated by commas.
This new format has version = 2, and uses commas as the pair separator.
Thus the general form is:
    _NCProperties = "version=2,key1=value,key2=value2..." ;

This new version is accompanied by a new ./configure option of the form
    --with-ncproperties="key1=value1,key2=value2..."
that specifies pairs to add to the _NCProperties attribute for all
files created with that netcdf library.

At this point, what is missing is some programmatic way to
specify either all the pairs or additional pairs
to the _NCProperties attribute. Not sure of the best way
to do this.

Builders using non-netcdf libraries can specify
whatever they want in the key value pairs (as long
as the version=2 is specified first).

By convention, the primary library is expected to be the
the first pair after the leading version=2 pair, but this
is convention only and is neither required nor enforced.

Related changes:
1. Fixed the tests that check _NCProperties to properly operate with version=2.
2. When reading a version 1 _NCProperties attribute, convert it to look
   like a version 2 attribute.
2. Added some version 2 tests to ncdump/tst_fileinfo.c and
   ncdump/tst_fileinfo.sh

Misc Changes:
1. Fix minor problem in ncdap_test/testurl.sh where a parameter to
   buildurl needed to be quoted.
2. Minor fix to ncgen to swap switches -H and -h to be consistent
   with other utilities.
3. Document the -M flag in nccopy usage() and the nccopy man page.
4. Modify a test case to use the nccopy -M flag.
2018-08-25 21:44:41 -06:00
Ward Fisher
16bc7d63f6 Modified ocprint to not install. 2018-08-01 14:27:09 -06:00
Ward Fisher
ed1b7089db Modified ocprint to not be installed 2018-08-01 14:19:50 -06:00
Dennis Heimbigner
b02703aa24 This PR primarily addresses Issue https://github.com/Unidata/netcdf-c/issues/725.
After a long discussion, I implemented the rules at the end of that issue.
They are documented in nccopy.1.

Additionally, I added a new, per-variable, -c flag that allows
for the direct setting of the chunking parameters for a variable.
The form is
    -c var:c1,c2,...ck
where var is the name of the variable (possibly a fully qualified name)
and the ci are the chunksizes for that variable. It must be the case
that the rank of the variable is k. If the new form is used as well
as the old form, then the new form overrides the old form for the
specified variable. Note that multiple occurrences of the new form
-c flag may be specified.

Misc. Other fixes
1. Added -M <size> option to nccopy to specify the minimum
   allowable chunksize.
2. Removed the unused variables from bigmeta.c
   (Issue https://github.com/Unidata/netcdf-c/issues/1079)
3. Fixed failure of nc_test4/tst_filter.sh by using the new -M
   flag (#1) to allow filter test on a small chunk size.
2018-07-26 20:16:02 -06:00
Ed Hartnett
b8ad15b6ae tests for ncdump issue with irish rover 2018-05-15 08:09:52 -06:00
Dennis Heimbigner
3c7ffcc6d1 Fix https://github.com/Unidata/netcdf-c/issues/963
Fix https://github.com/Unidata/netcdf-c/issues/962

1. remove the --disable-diskless option since it is no
   longer needed. Similarly for CMakeLists.txt.
2. Fixed nc4files.c where BAIL and return were mixed
   leading to situation where cleanup code was not
   being invoked. This probably occurs elsewhere,
   but I did not find any specifically.
2018-05-11 15:30:19 -06:00
Dennis Heimbigner
dd4e71c150 1. Solve issue raised on netcdfgroup mailing list:
https://www.unidata.ucar.edu/mailing_lists/archives/netcdfgroup/2018/msg00020.html
See docs/filters.md for a detailed description of the solution.
Basically we add nccopy flags "-F none" and "-F <varname>:none"
to suppress output compression as desired.

2. Add tests to nc_test4/tst_filter.sh to test out the solution.
2018-03-02 16:55:58 -07:00
Ed Hartnett
f33897e248 fixed some warnings, added some files to makefile.am to be cleaned 2017-11-26 08:50:16 -07:00
Ed Hartnett
0157c5660c readded some cleanfiles to ncdump makefile 2017-11-26 07:15:17 -07:00
Ed Hartnett
6ebe58998f clean up 2017-11-26 07:13:10 -07:00
Ed Hartnett
bebe7e1e9d merged master 2017-11-26 07:06:02 -07:00
Ed Hartnett
f779345b23 eliminating test dependencies in ncdap_test 2017-11-26 07:00:17 -07:00
Ward Fisher
5163189f0c Merge branch 'cmake-parallel-testing' 2017-11-25 11:57:01 -07:00
Ed Hartnett
38b53c08ff cleaned up comments 2017-11-25 07:30:17 -07:00
Ed Hartnett
8d9e7b366d removed many dependencies in ncdump testing 2017-11-25 07:28:07 -07:00
Ed Hartnett
e064855a10 removed ncdump test dependencies for tst_netcdf4.sh 2017-11-25 04:31:58 -07:00
Ward Fisher
1ccdf0219f Work towards parallel testing via cmake. 2017-11-22 12:10:58 -07:00
Ed Hartnett
b04cf4f83b fixed dist list to include ref_null_byte_padding_test.nc 2017-11-21 17:19:42 -07:00
Ward Fisher
7d8f58a752
Merge branch 'master' into ejh_ncdump_3 2017-11-21 15:54:29 -07:00
Ward Fisher
cd3d5f8e0e Updated for expected failure. 2017-11-20 17:26:06 -07:00
Ward Fisher
a07eddd0e4 More wiring in of test. [ci skip] 2017-11-20 15:58:39 -07:00
Ward Fisher
01bfdbf767 Wired in test to autotools. 2017-11-20 15:06:10 -07:00
Ward Fisher
e8af76c2f4 Wiring in a quick test. 2017-11-20 13:52:06 -07:00
Ed Hartnett
87d59b80fb Makefile.am cleanup 2017-11-18 14:20:04 -07:00
Ed Hartnett
39916a105b added dependency 2017-11-18 09:28:25 -07:00
Ed Hartnett
9618937e69 cleanup of ncdump Makefile.am 2017-11-17 12:29:12 -07:00
Ed Hartnett
577ff47eff fixed dependency 2017-11-17 11:07:24 -07:00
Ed Hartnett
812c2fd4d1 got make -j check working in ncdump and examples directories 2017-11-17 10:16:17 -07:00
Ed Hartnett
4a4a4fb7a0 make -j working for classic only in ncdump 2017-11-17 08:22:49 -07:00
Ed Hartnett
693a47ad04 move C program invokations to scripts to clean up dependencies in build 2017-11-16 13:03:35 -07:00
Ed Hartnett
3b0c301d76 moved tst_bug324 in Cmake build from ncdump to nc_test4 2017-11-16 11:57:39 -07:00
Ed Hartnett
4f43b80320 moved test from ncdump to nc_test4 2017-11-16 11:30:35 -07:00
Ed Hartnett
8d583f94a0 removed last use of EXTRA_TESTS, also unneeded setting for tst_h_rdc0.c 2017-11-12 06:57:37 -07:00
Ed Hartnett
e9df3fad55 working on cmake build 2017-11-12 05:42:24 -07:00
Ed Hartnett
05d251bfb5 different attempt to deal with ncdump dependencies 2017-11-11 17:33:51 -07:00
Ed Hartnett
8df5c84f31 fixed makefile.am 2017-11-11 16:51:10 -07:00
Ed Hartnett
b17059e750 fixed makefile.am 2017-11-11 16:49:52 -07:00
Ed Hartnett
f709a7b107 another attempt at reducing ncdump dependencies 2017-11-11 16:45:03 -07:00
Dennis Heimbigner
9983b9d911 re e-support UBS-599337
re pull request https://github.com/Unidata/netcdf-c/pull/405
re pull request https://github.com/Unidata/netcdf-c/pull/446

Notes:
1. This branch is a cleanup of the magic.dmh branch.
2. magic.dmh was originally merged, but caused problems with parallel IO.
   It was re-issued as pull request https://github.com/Unidata/netcdf-c/pull/446.
3. This branch + pull request replace any previous pull requests and magic.dmh branch.

Given an otherwise valid netCDF file that has a corrupted header,
the netcdf library currently crashes. Instead, it should return
NC_ENOTNC.

Additionally, the NC_check_file_type code does not do the
forward search required by hdf5 files. It currently only looks
at file position 0 instead of 512, 1024, 2048,... Also, it turns
out that the HDF4 magic number is assumed to always be at the
beginning of the file (unlike HDF5).
The change is localized to libdispatch/dfile.c See
https://support.hdfgroup.org/release4/doc/DSpec_html/DS.pdf

Also, it turns out that the code in NC_check_file_type is duplicated
(mostly) in the function libsrc4/nc4file.c#nc_check_for_hdf.

This branch does the following.
1. Make NC_check_file_type return NC_ENOTNC instead of crashing.
2. Remove nc_check_for_hdf and centralize all file format checking
   NC_check_file_type.
3. Add proper forward search for HDF5 files (but not HDF4 files)
   to look for the magic number at offsets of 0, 512, 1024...
4. Add test tst_hdf5_offset.sh. This tests that hdf5 files with
   an offset are properly recognized. It does so by prefixing
   a legal file with some number of zero bytes: 512, 1024, etc.
5. Off-topic: Added -N flag to ncdump to force a specific output dataset name.
2017-10-24 16:25:09 -06:00
Ward Fisher
1ca5f8c993 Updated SO version, other little issue with ncdump Makefile.am. 2017-10-17 14:56:22 -06:00
Ward Fisher
e8cd6958a9 Merge branch 'v4.5.0-release-branch' into cal366.dmh 2017-10-09 14:08:21 -06:00
Ward Fisher
ef372357a0 Merge branch 'master' into cal366.dmh 2017-09-29 15:51:06 -06:00
Ward Fisher
37f89515b2 Updatec cleanfiles in makefile.am 2017-09-21 09:58:33 -06:00
Ward Fisher
11f235f86e Fixing more make distcheck errors. 2017-09-20 16:28:28 -06:00
Ward Fisher
10a9d6c4f8 Corrected another error. 2017-09-20 16:03:16 -06:00
Ward Fisher
05ddb3a953 Cleaning up 'make distcheck' 2017-09-20 15:59:24 -06:00
Ward Fisher
2151dbbd44 Giving test output netcdf files unique names. 2017-09-20 11:17:33 -06:00