Ticket #164 (closed defect: fixed)

Opened 3 years ago

Last modified 2 years ago

IDL 8 : vso_get breaks

Reported by: joe Owned by: joe
Priority: high Milestone:
Component: IDLClient Version: 1.2
Severity: normal Keywords:
Cc:

Description

IDL> b = vso_get( a )
% XMLPARSER::FINDELEMENT: No DOM tree passed in
% Invalid object reference: <OBJREF   (<ObjHeapVar787>)>.
% Execution halted at: VSO::GETDATA     1587 /service/soho-archive/home/solarsoft/gen/idl/interfaces/vso/vso__define.pro
%                      VSO_GET           231 /service/soho-archive/home/solarsoft/gen/idl/interfaces/vso/vso_get.pro
%                      $MAIN$          

Change History

comment:1 Changed 3 years ago by joe

contact when this is fixed ... Peter Young (Joe H has e-mail from 31 August) and Dominic Zarro.

comment:2 Changed 3 years ago by joe

Relevant notes:

Date: Tue, 31 Aug 2010 16:50:25 -0400 (EDT)
From: Joe Hourcle <oneiros@...>
To: Peter Young <pyoung@...>
Cc: Dominic Zarro <zarro@...>
Subject: Re: vso_get & IDL 8.0 problem



On Tue, 31 Aug 2010, Peter Young wrote:

> 
> Hi Joe,
> 
> I attach the output from 'help' below, and the routine version is 2.4 from
> 13 August.
> 
> Let me know if you need anything else.

Hmm ... it's looking like I might need to sit down with Dominic to straighten this out -- the line numbers it's giving in the stack trace are the last lines in the file, not the line number they were called from, and it's two
functions *above* where 'xmlparser' gets called.

It seems that after it dumps, you're somewhere near vso__define.pro line 753:

            dom = self->send('GetData', { request:{ VSOiGetDataRequest, version:version, request:{ GetDataRequest, data:data, method:methodPtr, info:{info, email:email,site:site} } } }, _extra=extra )^M

(as METHODPTR and DATA are both pointers at that point, and they're freed just after that)

... but 'XMLPARSER::FINDELEMENT' would mean that the error should've dumper closer to:

        IDL> help
        % At SOAP::DESERIALIZE  182 /service/soho-archive/solarsoft/gen/idl/interfaces/vso/soap__define.pro
        %    SOAP::SEND        157 /service/soho-archive/solarsoft/gen/idl/interfaces/vso/soap__define.pro
        %    VSO::GETDATA     1505 /service/soho-archive/solarsoft/gen/idl/interfaces/vso/vso__define.pro
        %    VSO_GET           231 /service/soho-archive/solarsoft/gen/idl/interfaces/vso/vso_get.pro
        %    $MAIN$
        DOM             OBJREF    = <ObjHeapVar488(IDLFFXMLDOMDOCUMENT)>
        EXTRA           STRING    = Array[1]
        METHOD          STRING    = 'GetData'
        PARSER          OBJREF    = <ObjHeapVar252(XMLPARSER)>
        RESPONSE        UNDEFINED = <Undefined>
        SELF            OBJREF    = <ObjHeapVar249(VSO)>
        TEMP            UNDEFINED = <Undefined>
        XMLSTRING       STRING    = Array[1]

(using IDL 7, forcing it to dump w/ "vso_get( /debug )", and then using .step and .steopover to get to the right point;  the IDL 8 stack trace is as if it failed, then immediately returned twice.  The only thing I can think of
is that they've changed how errors are handled, and I don't know if 'ON_ERROR' might've changed.)


Joe Gurman thinks he might have a machine I can install IDL 8 on tomorrow, that won't break anything in production.

I'll give an update when I know more about what's happening, or, if one of you two are willing to be a guinea pig, do:

        IDL> a = vso_get( vso_search( inst='aia', /latest), /debug )

it'll spew some XML to the screen, then at the prompt, do:

        IDL> .trace

... and it'll report on every variable that gets updated, if I understand the command correctly.  And then send me the output from all of that.

-Joe

comment:3 Changed 3 years ago by joe

Oh ... and the '.trace' didn't do what I thought it does (note, this is *not* running under !QUIET=1 )

IDL> .trace
% XMLPARSER::FINDELEMENT: No DOM tree passed in
% Invalid object reference: <OBJREF   (<ObjHeapVar922>)>.
% Execution halted at: VSO::GETDATA     1587 /service/soho-archive/home/solarsoft/gen/idl/interfaces/vso/vso__define.pro
%                      VSO_GET           231 /service/soho-archive/home/solarsoft/gen/idl/interfaces/vso/vso_get.pro
%                      $MAIN$          

comment:4 Changed 2 years ago by joe

  • Status changed from new to closed
  • Resolution set to fixed
  • Component changed from (unfiled) to IDLClient

Opps ... forgot to close this.

It was a problem with the IDL7 automatic garbage collection. I've updated the code in solarsoft to prevent premature collection on the parsed DOM, and masked the command so it'll still work in pre-7 versions of IDL.

Note: See TracTickets for help on using tickets.