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. |
||
---|---|---|
.github | ||
cmake | ||
conda.recipe | ||
dap4_test | ||
debug | ||
docs | ||
examples | ||
h5_test | ||
hdf4_test | ||
include | ||
libdap2 | ||
libdap4 | ||
libdispatch | ||
libhdf4 | ||
libhdf5 | ||
liblib | ||
libsrc | ||
libsrc4 | ||
libsrcp | ||
nc_test | ||
nc_test4 | ||
ncdap_test | ||
ncdump | ||
ncgen | ||
ncgen3 | ||
nctest | ||
oc2 | ||
plugins | ||
.gitignore | ||
.travis.yml | ||
acinclude.m4 | ||
appveyor.yml | ||
cmake_uninstall.cmake.in | ||
CMakeInstallation.cmake | ||
CMakeLists.txt | ||
CODE_OF_CONDUCT.md | ||
COMPILE.cmake.txt | ||
config.h.cmake.in | ||
config.h.cmake.in.old-works | ||
configure.ac | ||
CONTRIBUTING.md | ||
COPYRIGHT | ||
CTestConfig.cmake.in | ||
CTestCustom.cmake | ||
dods.m4 | ||
FixBundle.cmake.in | ||
INSTALL.md | ||
lib_flags.am | ||
libnetcdf.settings.in | ||
Makefile.am | ||
mclean | ||
nc-config.cmake.in | ||
nc-config.in | ||
netcdf.pc.in | ||
netCDFConfig.cmake.in | ||
PostInstall.cmake | ||
postinstall.sh.in | ||
README.md | ||
RELEASE_NOTES.md | ||
test_common.in | ||
test_prog.c | ||
test-driver-verbose | ||
wjna |
Unidata NetCDF
About
The Unidata network Common Data Form (netCDF) is an interface for scientific data access and a freely-distributed software library that provides an implementation of the interface. The netCDF library also defines a machine-independent format for representing scientific data. Together, the interface, library, and format support the creation, access, and sharing of scientific data. The current netCDF software provides C interfaces for applications and data. Separate software distributions available from Unidata provide Java, Fortran, Python, and C++ interfaces. They have been tested on various common platforms.
Properties
NetCDF files are self-describing, network-transparent, directly
accessible, and extendible. Self-describing
means that a netCDF file
includes information about the data it contains. Network-transparent
means that a netCDF file is represented in a form that can be accessed
by computers with different ways of storing integers, characters, and
floating-point numbers. Direct-access
means that a small subset of a
large dataset may be accessed efficiently, without first reading through
all the preceding data. Extendible
means that data can be appended to
a netCDF dataset without copying it or redefining its structure.
Use
NetCDF is useful for supporting access to diverse kinds of scientific data in heterogeneous networking environments and for writing application software that does not depend on application-specific formats. For information about a variety of analysis and display packages that have been developed to analyze and display data in netCDF form, see
More information
For more information about netCDF, see
Latest releases
You can obtain a copy of the latest released version of netCDF software for various languages:
Copyright
Copyright and licensing information can be found here, as well as in the COPYRIGHT file accompanying the software
Installation
To install the netCDF-C software, please see the file INSTALL in the netCDF-C distribution, or the (usually more up-to-date) document:
Documentation
A language-independent User's Guide for netCDF, and some other language-specific user-level documents are available from:
- Language-independent User's Guide
- NetCDF-C Tutorial
- Fortran-90 User's Guide
- Fortran-77 User's Guide
- netCDF-Java/Common Data Model library
- netCDF4-python
A mailing list, netcdfgroup@unidata.ucar.edu, exists for discussion of the netCDF interface and announcements about netCDF bugs, fixes, and enhancements. For information about how to subscribe, see the URL
Feedback
We appreciate feedback from users of this package. Please send comments, suggestions, and bug reports to support-netcdf@unidata.ucar.edu.