This archive contains answers to questions sent to Unidata support through mid-2025. Note that the archive is no longer being updated. We provide the archive for reference; many of the answers presented here remain technically correct, even if somewhat outdated. For the most up-to-date information on the use of NSF Unidata software and data services, please consult the Software Documentation first.
>To: address@hidden >cc: Harsh Anand <address@hidden>, >cc: "R.K. Owen" <address@hidden> >From: Harsh Anand <address@hidden> >Subject: netcdf 3.5b3 parallel library T3E version patch >Organization: LBNL/NERSC >Keywords: 200101032237.f03MbPo14060 Hi Harsh, > We have a fix for a bug in the netcdf 3.5b3 parallel > library T3E version (support work done at NERSC). > It occurs when nc_enddef/nf_endef() or nc_open/nf_open() > is called. This bug resulted in corruption of some data values. > Patch for netcdf-3.5b3/src/libsrc is appended below. Could you please try the appended patch instead and let me know if it works OK? The original patch you provided would not compile on other systems. Thanks. --Russ Index: nc.c =================================================================== RCS file: /upc/share/CVS/netcdf-3/libsrc/nc.c,v retrieving revision 2.117 diff -c -r2.117 nc.c *** nc.c 1999/08/24 17:16:28 2.117 --- nc.c 2001/01/05 16:58:17 *************** *** 84,90 **** --- 84,94 ---- free_NC_dimarrayV(&ncp->dims); free_NC_attrarrayV(&ncp->attrs); free_NC_vararrayV(&ncp->vars); + #if _CRAYMPP && defined(LOCKNUMREC) + shfree(ncp); + #else free(ncp); + #endif /* _CRAYMPP && LOCKNUMREC */ } *************** *** 93,99 **** --- 97,107 ---- { NC *ncp; + #if _CRAYMPP && defined(LOCKNUMREC) + ncp = (NC *) shmalloc(sizeof(NC)); + #else ncp = (NC *) malloc(sizeof(NC)); + #endif /* _CRAYMPP && LOCKNUMREC */ if(ncp == NULL) return NULL; (void) memset(ncp, 0, sizeof(NC)); *************** *** 112,118 **** --- 120,130 ---- { NC *ncp; + #if _CRAYMPP && defined(LOCKNUMREC) + ncp = (NC *) shmalloc(sizeof(NC)); + #else ncp = (NC *) malloc(sizeof(NC)); + #endif /* _CRAYMPP && LOCKNUMREC */ if(ncp == NULL) return NULL; (void) memset(ncp, 0, sizeof(NC));