Hi all:I found a memory leak, either in the netcdf-4 or HDF5 libs. To reproduce it, run the simple_xy_wr.c example program to create a file, then open and close it in a loop, monitoring the memory usage with top. If the file is created in netcdf-3 (or netcdf-4 classic) format, the memory usage remains constant. If the file is created in NETCDF4 format, the memory usage goes up and up. Here's the simple program to trigger the leak. I've attached simple_xy_4.nc and simple_xy_3.nc - the former will lead to a leak, the latter will not.
#include <stdlib.h> #include <stdio.h> #include <netcdf.h>/* This is the name of the data file we will read. * Change to simple_xy_3.nc and leak will disappear*/
#define FILE_NAME "simple_xy_4.nc" /* Handle errors by printing an error message and exiting with a * non-zero status. */ #define ERRCODE 2 #define ERR(e) {printf("Error: %s\n", nc_strerror(e)); exit(ERRCODE);} int main() {int ncid,retval,i;
for (i=0; i<1000000; i++) { /* Open the file. NC_NOWRITE tells netCDF we want read-only access * to the file.*/ if ((retval = nc_open(FILE_NAME, NC_NOWRITE, &ncid))) ERR(retval); /* Close the file, freeing all resources. ???? */ if ((retval = nc_close(ncid))) ERR(retval); } return 0; BTW: I'm using netcdf-4.0 and HDF5 1.8.1. -Jeff -- Jeffrey S. Whitaker Phone : (303)497-6313 NOAA/OAR/CDC R/PSD1 FAX : (303)497-6449 325 Broadway Boulder, CO, USA 80305-3328
Attachment:
simple_xy_4.nc
Description: Binary data
Attachment:
simple_xy_3.nc
Description: Binary data
netcdfgroup
archives: