comp.lang.idl-pvwave archive
Messages from Usenet group comp.lang.idl-pvwave, compiled by Paulo Penteado

Home » Public Forums » archive » Re: ncdf + x-connection + many files = crazy.
Show: Today's Messages :: Show Polls :: Message Navigator
E-mail to friend 
Return to the default flat view Create a new topic Submit Reply
Re: ncdf + x-connection + many files = crazy. [message #74931 is a reply to message #74929] Tue, 08 February 2011 13:31 Go to previous messageGo to previous message
Foldy Lajos is currently offline  Foldy Lajos
Messages: 268
Registered: October 2001
Senior Member
On Tue, 8 Feb 2011, Matt wrote:

> Hey all,
>
> I've got a great riddle for you today. (Long story short, can you run
> the test code included below to completion on your machine?) I've
> already filed a bug report, but I want to see if other people can
> reproduce these errors.
>
> I'm experiencing machine/version-dependent, non-deterministic behavior
> that seems to present itself orthogonal to the triggering mechanism.
> In other words, I've got a crazy-making problem.
>
> I experienced this in working code, but through patient debugging,
> I've pared this down my until I've got a relatively small program that
> demonstrates the problem behavior.
>
> The undesirable behavior is a NCDF_OPEN error (NC_ERROR=-31) after
> some *random* number of open/close iterations on a netcdf file that
> was created with IDL (or possibly a segfault core dump on other
> machines.). The second feature is that I don't see this behavior
> until I make an x-connection of some sort (window, /free, or even a
> "device, depth=depth" will cause errors)
>
> Machine 1: (only has idl 7.0.1 64bit installed)
> savoie@snow:~/tmp> uname -a
> Linux snow 2.6.27.54-0.2-default #1 SMP 2010-10-19 18:40:07 +0200
> x86_64 x86_64 x86_64 GNU/Linux
>
> Machine 2 (fails with 32 bit idl7.0.1 & idl6.4):
> savoie@snowblower:~/tmp> uname -a
> Linux snowblower 2.6.34.7-0.5-default #1 SMP 2010-10-25 08:40:12 +0200
> i686 i686 i386 GNux
>
>
> All the code does is open and close a netcdf file, many, many times.
> But after an x-connection (via "window, /free"), the code errors out
> at a different spot in the iteration.
>
>
> Below is the output I get on the problem machines and below that, the
> source code for you to try at home. For extra credit, modify the code
> to open a netcdf file created with a different program than IDL, NCO
> for example.
>
>
> --OUTPUT--------------------------------------
> savoie@snow:~/tmp> idl70
> IDL Version 7.0.1 (linux x86_64 m64). (c) 2008, ITT Visual Information
> Solutions
> Installation number: 100-431.
> Licensed for use by: University of Colorado
>
> IDL> .run ./crash_ncdf.pro
> % Compiled module: CREATE_HAND_SAMPLE.
> % Compiled module: CRASH_NCDF.
> IDL> crash_ncdf
> % Loaded DLM: NCDF.
> Successfully completed first iterations
> i = 143017
> ncdf_fid = 5
> % CRASH_NCDF: NCDF_OPEN: Unable to open the file "/projects/NRTSI-G/
> tmp_crashing_ncdf/sample_h
> and.nc".
> (NC_ERROR=-31)
> % Execution halted at: CRASH_NCDF 44 /homes/snowblower/savoie/
> tmp/crash_ncdf.pro
> % $MAIN$
>
> ----------------------------------------
> Sample Test Code:
> ----------------------------------------
> ;+============================================
> ; :Author: Matt Savoie <savoie@nsidc.org>
> ; :Copyright: (C) <2011> University of Colorado.
> ; :Version: $Id:$
> ;
> ; Created 02/03/2011
> ; National Snow & Ice Data Center, University of Colorado, Boulder
> ;-============================================*/
>
> ;+
> ; Generate a very simple netcdf file.
> ;-
> pro create_hand_sample, file
> compile_opt idl2, logical_predicate
>
> sample_var = dindgen( 4, 3 )
> ncid = ncdf_create( file, /CLOBBER )
> dimidx = ncdf_dimdef( ncid, 'x', 4 )
> dimidy = ncdf_dimdef( ncid, 'y', 3 )
> varid = ncdf_vardef( ncid, 'variable', /double )
> ncdf_control, ncid, /ENDEF
> ncdf_varput, ncid, varid, sample_var
> ncdf_close, ncid
>
> end
>
>
> ;+
> ; This is just a sample looping program that shows a problem
> ; Opening and Closing a single netcdf file many times.
> ;-
> pro crash_ncdf
> compile_opt idl2, logical_predicate
>
> catch, theError
> if theError ne 0 then begin
> Catch, /cancel
> print, "i = ", i
> print, "ncdf_fid = ", ncdf_fid
> message, !ERROR_STATE.msg
> endif
>
>
> file = './sample.nc'
> create_hand_sample, file
>
> long_iteration = 1900000L
>
> for i = 0l, long_iteration do begin
> ncdf_fid = ncdf_open( file, write = 0 )
> ncdf_close, ncdf_fid
> endfor
>
> print, 'Successfully completed first iterations'
> window, /free
> wdelete
>
> for i = 0l, long_iteration do begin
> ncdf_fid = ncdf_open( file, write = 0 )
> ncdf_close, ncdf_fid
> endfor
>
> print, 'Successfully completed second iterations'
>
> end
>

linux x86_64:

IDL 7.0 (64 bit) fails
IDL 6.4 (64 bit) succeeds

regards,
Lajos

ps: you are defining a scalar variable, not an array

> sample_var = dindgen( 4, 3 )
> ncid = ncdf_create( file, /CLOBBER )
> dimidx = ncdf_dimdef( ncid, 'x', 4 )
> dimidy = ncdf_dimdef( ncid, 'y', 3 )
> varid = ncdf_vardef( ncid, 'variable', /double )
> ncdf_control, ncid, /ENDEF
> ncdf_varput, ncid, varid, sample_var
> ncdf_close, ncid
[Message index]
 
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Previous Topic: Re: More cgplot, ps_start, ps_end problems
Next Topic: save axis

-=] Back to Top [=-
[ Syndicate this forum (XML) ] [ RSS ] [ PDF ]

Current Time: Fri Oct 10 11:57:57 PDT 2025

Total time taken to generate the page: 0.08255 seconds