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

Home » Public Forums » archive » Re: One RETALL is not enough
Show: Today's Messages :: Show Polls :: Message Navigator
E-mail to friend 
Switch to threaded view of this topic Create a new topic Submit Reply
Re: One RETALL is not enough [message #81873] Wed, 31 October 2012 04:42
David Fanning is currently offline  David Fanning
Messages: 11724
Registered: August 2001
Senior Member
Gordon Farquharson writes:

> I find that I need two exits to exit IDL when I am using DLMs.

I got stuck in another funk doing some object programming
yesterday, and had a chance to try the four RETALL
trick. I believe it actually did help!

Cheers,

David

--
David Fanning, Ph.D.
Fanning Software Consulting, Inc.
Coyote's Guide to IDL Programming: http://www.dfanning.com/
Sepore ma de ni thue. ("Perhaps thos speakest truth.")
Re: One RETALL is not enough [message #81875 is a reply to message #81873] Tue, 30 October 2012 23:35 Go to previous message
Gordon Farquharson is currently offline  Gordon Farquharson
Messages: 48
Registered: December 2010
Member
On Saturday, October 27, 2012 2:02:24 PM UTC-7, Mike Galloy wrote:
> I regularly have cases where I need two EXITs to get out of IDL. I wonder
>
> if that is related.

I find that I need two exits to exit IDL when I am using DLMs.

Gordon
Re: One RETALL is not enough [message #81882 is a reply to message #81875] Mon, 29 October 2012 04:25 Go to previous message
Yngvar Larsen is currently offline  Yngvar Larsen
Messages: 134
Registered: January 2010
Senior Member
On Saturday, 27 October 2012 23:02:24 UTC+2, Mike Galloy wrote:
> wlandsman wrote:
>> While debugging a program, I've been getting error messages after a
>> RETALL like the following:
>>
>>> retall
>> % Invalid pointer: <POINTER (<PtrHeapVar2858>)>.
>> % Execution halted at: XYZ_DEFAULTS::CLEANUP 456
>>> retall
>> % Invalid pointer: <POINTER (<PtrHeapVar2578>)>.
>> % Execution halted at: XYZ_DEFAULTS::CLEANUP 456
>>> retall
>> % Temporary variables are still checked out - cleaning up...
>>> retall
>>
>> So one RETALL is not enough to get a normal return , but if I give four
>> RETALLs then there is enough of an extra "push" to give a normal return
>> ;-) I first thought this was just a timing problem, and that the
>> pointer cleanup wasn't complete at the time of the first RETALL, but it
>> was complete by the time of the fourth RETALL. But the errors
>> always appear in the same pattern as above, requiring 4 RETALLs no matter
>> how much time I give. Any suggestions as to what is happening?
>
>> P.S. Line 456 where the first errors occurs is the following.
>> IF OBJ_VALID(self.files.class.Revclasshash) THEN OBJ_DESTROY,
>> self.files.class.Revclasshash
>>
>> where 'files' and 'class' are structures, and Revclasshash is an object
>
> I regularly have cases where I need two EXITs to get out of IDL. I wonder
> if that is related.

I'm sure it is related. My guess is a bug in garbage collection of heap variables. To check if that is the case, test your program in IDL 7.x. (Won't work if you used any of the new IDL 8 features, of course.)

BTW it is a good thing if the garbage collector also runs on EXIT. If I remember correctly, I think I had some issues with this in some previous IDL version regarding objects where temporary files were supposed to be deleted in the "cleanup" method. The cleanup method was _not_ called on EXIT, so I ended up with a bunch of temp files taking up space on my hard drive.

--
Yngvar
Re: One RETALL is not enough [message #81885 is a reply to message #81882] Sat, 27 October 2012 15:45 Go to previous message
Russell Ryan is currently offline  Russell Ryan
Messages: 122
Registered: May 2012
Senior Member
Aagh.. reminds me of flpr flpr flpr in iraf. Now, that's a Halloween scare...

On Friday, October 26, 2012 4:26:22 PM UTC-4, wlandsman wrote:
> While debugging a program, I've been getting error messages after a RETALL like the following:
>
>
>
> IDL> retall
>
> % Invalid pointer: <POINTER (<PtrHeapVar2858>)>.
>
> % Execution halted at: XYZ_DEFAULTS::CLEANUP 456
>
> IDL> retall
>
> % Invalid pointer: <POINTER (<PtrHeapVar2578>)>.
>
> % Execution halted at: XYZ_DEFAULTS::CLEANUP 456
>
> IDL> retall
>
> % Temporary variables are still checked out - cleaning up...
>
> IDL> retall
>
>
>
> So one RETALL is not enough to get a normal return , but if I give four RETALLs then there is enough of an extra "push" to give a normal return ;-) I first thought this was just a timing problem, and that the pointer cleanup wasn't complete at the time of the first RETALL, but it was complete by the time of the fourth RETALL. But the errors always appear in the same pattern as above, requiring 4 RETALLs no matter how much time I give. Any suggestions as to what is happening? Thanks, --Wayne
>
>
>
> P.S. Line 456 where the first errors occurs is the following.
>
>
>
> IF OBJ_VALID(self.files.class.Revclasshash) THEN OBJ_DESTROY, self.files.class.Revclasshash
>
>
>
> where 'files' and 'class' are structures, and Revclasshash is an object
Re: One RETALL is not enough [message #81886 is a reply to message #81885] Sat, 27 October 2012 14:02 Go to previous message
Michael Galloy is currently offline  Michael Galloy
Messages: 1114
Registered: April 2006
Senior Member
wlandsman <wlandsman@gmail.com> wrote:
> While debugging a program, I've been getting error messages after a
> RETALL like the following:
>
>> retall
> % Invalid pointer: <POINTER (<PtrHeapVar2858>)>.
> % Execution halted at: XYZ_DEFAULTS::CLEANUP 456
>> retall
> % Invalid pointer: <POINTER (<PtrHeapVar2578>)>.
> % Execution halted at: XYZ_DEFAULTS::CLEANUP 456
>> retall
> % Temporary variables are still checked out - cleaning up...
>> retall
>
> So one RETALL is not enough to get a normal return , but if I give four
> RETALLs then there is enough of an extra "push" to give a normal return
> ;-) I first thought this was just a timing problem, and that the
> pointer cleanup wasn't complete at the time of the first RETALL, but it
> was complete by the time of the fourth RETALL. But the errors
> always appear in the same pattern as above, requiring 4 RETALLs no matter
> how much time I give. Any suggestions as to what is happening? Thanks, --Wayne
>
> P.S. Line 456 where the first errors occurs is the following.
>
> IF OBJ_VALID(self.files.class.Revclasshash) THEN OBJ_DESTROY,
> self.files.class.Revclasshash
>
> where 'files' and 'class' are structures, and Revclasshash is an object

I regularly have cases where I need two EXITs to get out of IDL. I wonder
if that is related.

Mike
--
www.michaelgalloy.com
Research Mathematician
Tech-X Corporation
Re: One RETALL is not enough [message #81887 is a reply to message #81886] Fri, 26 October 2012 13:44 Go to previous message
DavidF[1] is currently offline  DavidF[1]
Messages: 94
Registered: April 2012
Member
Wayne Landsman writes:

> While debugging a program, I've been getting error messages after a RETALL like the following:
>
> IDL> retall
> % Invalid pointer: <POINTER (<PtrHeapVar2858>)>.
> % Execution halted at: XYZ_DEFAULTS::CLEANUP 456
> IDL> retall
> % Invalid pointer: <POINTER (<PtrHeapVar2578>)>.
> % Execution halted at: XYZ_DEFAULTS::CLEANUP 456
> IDL> retall
>
> % Temporary variables are still checked out - cleaning up...
>
> IDL> retall
>
> So one RETALL is not enough to get a normal return , but if I give four RETALLs then there is enough of an extra "push" to give a normal return ;-) I first thought this was just a timing problem, and that the pointer cleanup wasn't complete at the time of the first RETALL, but it was complete by the time of the fourth RETALL. But the errors always appear in the same pattern as above, requiring 4 RETALLs no matter how much time I give. Any suggestions as to what is happening?

No ideas on what is happening, but this could easily explain the
extremely strange results I've seen when doing object programming
in IDL classes. We seem to get stuck in some Alice in Wonderland world
where things appear to be working, but aren't. Part of the reason for
our problems could be that we aren't at the program level we think we are.

I'll try the four RETALL trick next time and see if it helps. ;-)

Cheers,

David
  Switch to threaded view of this topic Create a new topic Submit Reply
Previous Topic: Re: draw marks/ticks on a plot line
Next Topic: Including Images with IDLDoc

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

Current Time: Wed Oct 08 15:33:18 PDT 2025

Total time taken to generate the page: 0.00827 seconds