NOTICE: This version of the NSF Unidata web site (archive.unidata.ucar.edu) is no longer being updated.
Current content can be found at unidata.ucar.edu.

To learn about what's going on, see About the Archive Site.

Re: [netcdfgroup] [PossibleSpam][3.6] Re: netcdf fortran error - HDF5: infinite loop closing library

  • To: rweed <rweed@xxxxxxxxxxxxxxxx>
  • Subject: Re: [netcdfgroup] [PossibleSpam][3.6] Re: netcdf fortran error - HDF5: infinite loop closing library
  • From: Ward Fisher <wfisher@xxxxxxxx>
  • Date: Wed, 9 Mar 2016 12:59:50 -0700
My initial response went to Alison only, by accident; my apologies. I’ve
been able to observe the issue in a C program provided by Alison, so that
rules out a Fortran-specific cause.

I’ve opened a ticket on GitHub for this issue, viewable at
https://github.com/Unidata/netcdf-c/issues/233 . Searching the web for HDF5:
infinite loop closing library turns up a number of other instances of this
happening. Interestingly enough, when building a version of hdf5 1.8.16 for
debugging, the issue itself disappeared. I’m going to try to narrow down
which of the configure options (--enable-codestack, --enable-debug=all,
--enable-using-memchecker) resulted in the issue resolving itself.

I’ll be posting my findings at the GitHub issue linked above as well as
following up here once there’s a resolution, but the short answer (as has
already been pointed out) is that Alison isn’t doing anything wrong in the
test (although using redef isn’t a bad idea).

-Ward

On Tue, Mar 8, 2016 at 9:57 PM, rweed <rweed@xxxxxxxxxxxxxxxx> wrote:

Alison
>
>   If you change
>
> write(unit=myattr,fmt='(a6,i4.4)') 'myattr',i
>
>   to
>
> write(unit=myattr,fmt='(a6,i4)') 'myattr',i
>
> the error disappears
>
> after the write with your format, myattr
> looks something like myattr0001 etc
> If you replace i4.4 with i4 myattr looks
> like myattr   1 (spaces instead of 0's
>
> I'm not sure why this would make a difference but it does.
>
> RW
>
>
> On 03/08/2016 02:19 PM, Alison Walker wrote:
>
>>
>> Roy, thanks for your response. I tried adding the call to nf90_redef
>> after the open, as you suggest, and then re-write the attributes, but I
>> still get the same error.
>> Alison
>>
>> On 3/7/2016 9:36 PM, Roy Mendelssohn - NOAA Federal wrote:
>>
>>> Hi Alison:
>>>
>>> I am not certain of this,  but nc_create and nc_open behave
>>> differently.  nc_create creates the file and puts you in define mode,
>>> nc_open does not put you in define mode.  I don’t know what is magic
>>> about 30 attributes, perhaps that is what it takes to exceed the
>>> global attributes space because the history changes, but I wonder what
>>> happens if after the nc_open you call NF90_REDEF and then rewrite the
>>> global attributes.
>>>
>>> As I said, I could be wrong, but it would be easy enough to test.
>>>
>>> -Roy
>>>
>>>
>>>
>>>
>>> On Mar 7, 2016, at 7:01 PM, Alison Walker
>>>> <postings@xxxxxxxxxxxxxxxxxxxxxx> wrote:
>>>>
>>>> Hi netcdf folks,
>>>> I'm getting this error when changing the values of global attributes
>>>> in a netcdf4 file using the fortran interface:
>>>>
>>>> HDF5: infinite loop closing library
>>>>
>>>> D,G,A,S,T,F,FD,P,FD,P,FD,P,E,E,SL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL
>>>>
>>>>
>>>> Here is a little test program that illustrates the problem. It first
>>>> creates a netcdf file and writes some global attributes, then tries
>>>> to write them again after closing and re-opening the file.
>>>> Interestingly, if the number of attributes is less than 30, there is
>>>> no error. If the number is 30, the error occurs. I'm using netcdf
>>>> 4.3.0, netcdf fortran 4.2 and hdf5 1.8.16 on Linux x86_64.
>>>>
>>>> program tester
>>>>
>>>>   use netcdf
>>>>   implicit none
>>>>
>>>>   integer, parameter :: n_attrs = 30
>>>>
>>>>   integer :: iok, ncid, varid, i
>>>>   character*10 :: myattr
>>>>
>>>>   ! Create the file and write global attrs
>>>>
>>>>   iok = nf90_create('tester.nc',NF90_HDF5,ncid)
>>>>   print *,'create iok=',iok
>>>>   do i=1,n_attrs
>>>>      write(unit=myattr,fmt='(a6,i4.4)') 'myattr',i
>>>>      iok = nf90_put_att(ncid,NF90_GLOBAL,myattr,i)
>>>>      print *,i,' put iok=',iok
>>>>   enddo
>>>>   iok = nf90_close(ncid)
>>>>   print *,'close iok=',iok
>>>>
>>>>   ! Open the file again and re-write global attrs
>>>>
>>>>   iok = nf90_open('tester.nc',NF90_WRITE,ncid)
>>>>   print *,'open iok=',iok
>>>>   do i=1,n_attrs
>>>>      write(unit=myattr,fmt='(a6,i4.4)') 'myattr',i
>>>>      iok = nf90_put_att(ncid,NF90_GLOBAL,myattr,i)
>>>>      print *,i,' put iok=',iok
>>>>   enddo
>>>>   iok = nf90_close(ncid)
>>>>   print *,'close iok=',iok
>>>>
>>>> end program tester
>>>>
>>>> When I run this test program with 30 attributes I get this error result:
>>>>
>>>> create iok=           0
>>>>            1  put iok=           0
>>>>            2  put iok=           0
>>>>            3  put iok=           0
>>>>            4  put iok=           0
>>>>            5  put iok=           0
>>>>            6  put iok=           0
>>>>            7  put iok=           0
>>>>            8  put iok=           0
>>>>            9  put iok=           0
>>>>           10  put iok=           0
>>>>           11  put iok=           0
>>>>           12  put iok=           0
>>>>           13  put iok=           0
>>>>           14  put iok=           0
>>>>           15  put iok=           0
>>>>           16  put iok=           0
>>>>           17  put iok=           0
>>>>           18  put iok=           0
>>>>           19  put iok=           0
>>>>           20  put iok=           0
>>>>           21  put iok=           0
>>>>           22  put iok=           0
>>>>           23  put iok=           0
>>>>           24  put iok=           0
>>>>           25  put iok=           0
>>>>           26  put iok=           0
>>>>           27  put iok=           0
>>>>           28  put iok=           0
>>>>           29  put iok=           0
>>>>           30  put iok=           0
>>>> close iok=           0
>>>> open iok=           0
>>>>            1  put iok=           0
>>>>            2  put iok=           0
>>>>            3  put iok=           0
>>>>            4  put iok=           0
>>>>            5  put iok=           0
>>>>            6  put iok=           0
>>>>            7  put iok=           0
>>>>            8  put iok=           0
>>>>            9  put iok=           0
>>>>           10  put iok=           0
>>>>           11  put iok=           0
>>>>           12  put iok=           0
>>>>           13  put iok=           0
>>>>           14  put iok=           0
>>>>           15  put iok=           0
>>>>           16  put iok=           0
>>>>           17  put iok=           0
>>>>           18  put iok=           0
>>>>           19  put iok=           0
>>>>           20  put iok=           0
>>>>           21  put iok=           0
>>>>           22  put iok=           0
>>>>           23  put iok=           0
>>>>           24  put iok=           0
>>>>           25  put iok=           0
>>>>           26  put iok=           0
>>>>           27  put iok=           0
>>>>           28  put iok=           0
>>>>           29  put iok=           0
>>>>           30  put iok=           0
>>>> close iok=           0
>>>> HDF5: infinite loop closing library
>>>>
>>>> D,G,A,S,T,F,FD,P,FD,P,FD,P,E,E,SL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL,FL
>>>>
>>>>
>>>> Can anyone help me to understand why this error is occurring when
>>>> re-writing the attributes?is it a bug with netcdf/hdf or am I doing
>>>> something wrong?
>>>> Thanks,
>>>> Alison
>>>>
>>>> _______________________________________________
>>>> netcdfgroup mailing list
>>>> netcdfgroup@xxxxxxxxxxxxxxxx
>>>> For list information or to unsubscribe,  visit:
>>>> http://www.unidata.ucar.edu/mailing_lists/
>>>>
>>> **********************
>>> "The contents of this message do not reflect any position of the U.S.
>>> Government or NOAA."
>>> **********************
>>> Roy Mendelssohn
>>> Supervisory Operations Research Analyst
>>> NOAA/NMFS
>>> Environmental Research Division
>>> Southwest Fisheries Science Center
>>> ***Note new address and phone***
>>> 110 Shaffer Road
>>> Santa Cruz, CA 95060
>>> Phone: (831)-420-3666
>>> Fax: (831) 420-3980
>>> e-mail: Roy.Mendelssohn@xxxxxxxx www: http://www.pfeg.noaa.gov/
>>>
>>> "Old age and treachery will overcome youth and skill."
>>> "From those who have been given much, much will be expected"
>>> "the arc of the moral universe is long, but it bends toward justice"
>>> -MLK Jr.
>>>
>>>
>>>
>> _______________________________________________
>> netcdfgroup mailing list
>> netcdfgroup@xxxxxxxxxxxxxxxx
>> For list information or to unsubscribe,  visit:
>> http://www.unidata.ucar.edu/mailing_lists/
>>
>
> --
> --
> ---
>
> Richard Weed, Ph.D.
> Associate Research Professor
> Center for Advanced Vehicular Systems (CAVS)
> Mississippi State University
>
> Email: rweed@xxxxxxxxxxxxxxxx
> Ph:    (662) 325-5450
>
>
> _______________________________________________
> netcdfgroup mailing list
> netcdfgroup@xxxxxxxxxxxxxxxx
> For list information or to unsubscribe,  visit:
> http://www.unidata.ucar.edu/mailing_lists/
>
​
  • 2016 messages navigation, sorted by:
    1. Thread
    2. Subject
    3. Author
    4. Date
    5. ↑ Table Of Contents
  • Search the netcdfgroup archives: