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

Home » Public Forums » archive » 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
ncdf + x-connection + many files = crazy. [message #74933] Tue, 08 February 2011 12:37 Go to previous message
Matt[2] is currently offline  Matt[2]
Messages: 69
Registered: March 2007
Member
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
[Message index]
 
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Previous Topic: windows 64 bit test
Next Topic: ncdf + x-connection + many files = crazy

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

Current Time: Wed Oct 08 17:01:15 PDT 2025

Total time taken to generate the page: 0.00406 seconds