Using a CAPE-OPEN unit dll file

Discusses use of COCO, the process simulation and modelling software suite from AmsterCHEM, downloadable from http://www.cocosimulator.org

Moderator: jasper

Post Reply
HenkF
Posts: 87
Joined: 24 February 2013, 14:50
Location: Hengelo,NL

Using a CAPE-OPEN unit dll file

Post by HenkF »

Hi, I'm exploring the possibilities of using COFE/COCO (thumbs up!) and ran ino the following : I downloaded the Delphi CAPE-Open Wizard, and succeeded in compiling the examples to a dll, using Lazarus/FPC. Needed some minor adaptations, but all-and-all a smooth compile. But are the generated models being accepted and run within COCO? I registered the DLL with the Windows Registry, and all information (like with the Excel Unit) showed : the CAPE Description : Name (SimpleHX) , Vendor, etc. But now I'm stuck. Could you tell me how to add such a model to the COFE/COCO environment? Any additional registry settings needed, or an additional line somewhere else ?

regards, Henk
User avatar
jasper
Posts: 1129
Joined: 24 October 2012, 15:33
Location: Spain
Contact:

Re: Using a CAPE-OPEN unit dll file

Post by jasper »

Where did the information show up? Registration of CAPE-OPEN components require CAT-IDs that state that it is a CAPE-OPEN component, and what kind of component. You can see most relevant information by running CORK.
HenkF
Posts: 87
Joined: 24 February 2013, 14:50
Location: Hengelo,NL

Re: Using a CAPE-OPEN unit dll file

Post by HenkF »

Thanks Jasper : all information nicely shows in CORK, and the models are available in COFE. But, as you can guess, there are still some errors to solve.
To be continued..
HenkF
Posts: 87
Joined: 24 February 2013, 14:50
Location: Hengelo,NL

Re: Using a CAPE-OPEN unit dll file

Post by HenkF »

...cont'd CAPE-OPEN unit dll
I'm now able to build the dll, and load it with COCO...! But with some drawbacks, making it still useless. Refering to the SimpleHX UOP which comes as an example with the Borland Delphi Wizard package, I can create and define parameters, and 1 (one) stream port, which also are visable and editable within COFE. So far the good news. As soon as a second stream is being created the dll crashes with a SIGSEGV.
some code snippets :

the

Code: Select all

procedure TSimpleHX.PMCInitialize;
begin
  inherited;
  Description := COClassFactory.Description;
>>  InPort  := Ports.AddPort('Inlet', 'Inlet Port', CAPE_MATERIAL, CAPE_INLET);
>>  OutPort := Ports.AddPort('Outlet', 'Outlet Port', CAPE_MATERIAL, CAPE_OUTLET);
  OutletT := Params.AddRealParam('OutletT', 'Outlet temperature', CAPE_INPUT,
                                                    298.15, 5000, 1, DimTemperature);
  Duty := Params.AddRealParam('Duty', 'Duty required', CAPE_OUTPUT,
                                                0, MaxDouble, -MaxDouble, DimMolarEnthalpy);
  EditForm := TEditForm.Create(nil);
  EditForm.ParamLabel.Caption := 'Outlet temperature [K]';
end;


After initialization the InitNew method is called :

Code: Select all

function TBasePMC.InitNew: HResult;
begin
  // Aspen Plus 2006 first calls ICapeUtilities.Initialize then IPersistStreamInit.InitNew
  // Use FInitialized to prevent double initialization
  if not FInitialized then
  begin
    PMCInitialize;
    FInitialized := true;
  end;
  result := S_OK;
end; 
After leaving the InitNew method a SIGSEGV ( access violation) is raised (assuming I'm refering to an invalid memory address) But if I ommit the creation of either of the ports (InPort or OutPort in the 1st code snippet) all runs 'OK' : just one port, so quit useless as an UOP, but an icon is created, an editform shows, and parameter data are editable. Maybe someone can give me a hint, did I forget to initialize something? any prerequisites?
I use the IPersistStreamInit interface. Any workaround using IPersistsStream? I assume the author of the wizard has tested the examples, but he has used Delphi, where I am using Lazarus/FPC . May also be an error source. Thanks for any help!
Henk
User avatar
jasper
Posts: 1129
Joined: 24 October 2012, 15:33
Location: Spain
Contact:

Re: Using a CAPE-OPEN unit dll file

Post by jasper »

Can you see what is on the call stack of the thread that causes the exception?
HenkF
Posts: 87
Joined: 24 February 2013, 14:50
Location: Hengelo,NL

Re: Using a CAPE-OPEN unit dll file

Post by HenkF »

hi Jasper,
I've inserted the call-stack dump. Hope this contains some useful information. I removed the output generated by the start-up of COFE.exe, the remainder holds the output generated after adding the SimpleHX unit, thus calling the CAPETestProject.dll.

Henk

Code: Select all

...
--- starting COFE code largely removed ---
...
=library-loaded,id="C:\\Program Files\\COCO\\COCOTEA.dll",target-name="C:\\Program Files\\COCO\\COCOTEA.dll",host-name="C:\\Program Files\\COCO\\COCOTEA.dll",symbols-loaded="0",thread-group="i1"

=library-loaded,id="E:\\lazarus\\CapeOpenWizard 1.0\\Examples\\CapeUnit\\CAPETestProject.dll",target-name="E:\\lazarus\\CapeOpenWizard 1.0\\Examples\\CapeUnit\\CAPETestProject.dll",host-name="E:\\lazarus\\CapeOpenWizard 1.0\\Examples\\CapeUnit\\CAPETestProject.dll",symbols-loaded="0",thread-group="i1"
*stopped,reason="signal-received",signal-name="SIGSEGV",signal-meaning="Segmentation fault",frame={addr="0x0236b5d7",func="SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY",args=[],from="E:\\lazarus\\CapeOpenWizard 1.0\\Examples\\CapeUnit\\CAPETestProject.dll"},thread-id="1",stopped-threads="all"
(gdb) 
<info program>
&"info program\n"
~"\tUsing the running image of child Thread 3076.0x22c.\n"
~"Program stopped at 0x236b5d7.\n"
~"It stopped with signal SIGSEGV, Segmentation fault.\n"
~"Type \"info stack\" or \"info registers\" for more information.\n"
^done
(gdb) 
<-data-disassemble -s 37139884 -e 37139885 -- 0>
^done,asm_insns=[{address="0x0236b5ac",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="156",inst="add    %al,(%eax)"}]
(gdb) 
<-data-disassemble -s 37139728 -e 37140143 -- 1>
^done,asm_insns=[{address="0x0236b510",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="0",inst="push   %ebp"},{address="0x0236b511",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="1",inst="mov    %esp,%ebp"},{address="0x0236b513",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="3",inst="sub    $0x14,%esp"},{address="0x0236b516",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="6",inst="mov    %ebx,-0x14(%ebp)"},{address="0x0236b519",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="9",inst="mov    %esi,-0x10(%ebp)"},{address="0x0236b51c",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="12",inst="mov    %edi,-0xc(%ebp)"},{address="0x0236b51f",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="15",inst="mov    %eax,%ebx"},{address="0x0236b521",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="17",inst="mov    %edx,%edi"},{address="0x0236b523",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="19",inst="mov    %ecx,-0x4(%ebp)"},{address="0x0236b526",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="22",inst="mov    %edi,%edx"},{address="0x0236b528",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="24",inst="mov    $0x24a5ae0,%eax"},{address="0x0236b52d",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="29",inst="call   0x236b360 <SYSTEM_ISGUIDEQUAL$TGUID$TGUID$$BOOLEAN>"},{address="0x0236b532",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="34",inst="test   %al,%al"},{address="0x0236b534",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="36",inst="je     0x236b541 <SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN+49>"},{address="0x0236b536",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="38",inst="mov    -0x4(%ebp),%eax"},{address="0x0236b539",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="41",inst="mov    %ebx,(%eax)"},{address="0x0236b53b",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="43",inst="movb   $0x1,-0x8(%ebp)"},{address="0x0236b53f",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="47",inst="jmp    0x236b593 <SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN+131>"},{address="0x0236b541",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="49",inst="mov    %ebx,%ebx"},{address="0x0236b543",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="51",inst="nop"},{address="0x0236b544",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="52",inst="mov    %edi,%edx"},{address="0x0236b546",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="54",inst="mov    (%ebx),%eax"},{address="0x0236b548",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="56",inst="call   0x236b5b0 <SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY>"},{address="0x0236b54d",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="61",inst="mov    %eax,%esi"},{address="0x0236b54f",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="63",inst="mov    -0x4(%ebp),%ecx"},{address="0x0236b552",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="66",inst="mov    %esi,%edx"},{address="0x0236b554",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="68",inst="mov    %ebx,%eax"},{address="0x0236b556",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="70",inst="call   0x236b3a0 <SYSTEM_GETINTERFACEBYENTRY$POINTER$PINTERFACEENTRY$formal$$BOOLEAN>"},{address="0x0236b55b",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="75",inst="mov    %al,-0x8(%ebp)"},{address="0x0236b55e",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="78",inst="test   %al,%al"},{address="0x0236b560",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="80",inst="je     0x236b571 <SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN+97>"},{address="0x0236b562",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="82",inst="mov    0x10(%esi),%eax"},{address="0x0236b565",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="85",inst="cmp    $0x4,%eax"},{address="0x0236b568",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="88",inst="jb     0x236b571 <SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN+97>"},{address="0x0236b56a",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="90",inst="mov    -0x4(%ebp),%eax"},{address="0x0236b56d",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="93",inst="mov    (%eax),%ebx"},{address="0x0236b56f",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="95",inst="jmp    0x236b544 <SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN+52>"},{address="0x0236b571",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="97",inst="mov    -0x8(%ebp),%al"},{address="0x0236b574",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="100",inst="test   %al,%al"},{address="0x0236b576",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="102",inst="je     0x236b593 <SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN+131>"},{address="0x0236b578",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="104",inst="mov    0x10(%esi),%eax"},{address="0x0236b57b",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="107",inst="test   %eax,%eax"},{address="0x0236b57d",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="109",inst="je     0x236b593 <SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN+131>"},{address="0x0236b57f",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="111",inst="cmp    $0x3,%eax"},{address="0x0236b582",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="114",inst="je     0x236b593 <SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN+131>"},{address="0x0236b584",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="116",inst="mov    -0x4(%ebp),%eax"},{address="0x0236b587",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="119",inst="pushl  (%eax)"},{address="0x0236b589",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="121",inst="mov    -0x4(%ebp),%eax"},{address="0x0236b58c",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="124",inst="mov    (%eax),%edx"},{address="0x0236b58e",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="126",inst="mov    (%edx),%eax"},{address="0x0236b590",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="128",inst="call   *0x8(%eax)"},{address="0x0236b593",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="131",inst="mov    -0x8(%ebp),%al"},{address="0x0236b596",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="134",inst="mov    -0x14(%ebp),%ebx"},{address="0x0236b599",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="137",inst="mov    -0x10(%ebp),%esi"},{address="0x0236b59c",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="140",inst="mov    -0xc(%ebp),%edi"},{address="0x0236b59f",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="143",inst="leave  "},{address="0x0236b5a0",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="144",inst="ret    "},{address="0x0236b5a1",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="145",inst="add    %al,(%eax)"},{address="0x0236b5a3",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="147",inst="add    %al,(%eax)"},{address="0x0236b5a5",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="149",inst="add    %al,(%eax)"},{address="0x0236b5a7",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="151",inst="add    %al,(%eax)"},{address="0x0236b5a9",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="153",inst="add    %al,(%eax)"},{address="0x0236b5ab",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="155",inst="add    %al,(%eax)"},{address="0x0236b5ad",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="157",inst="add    %al,(%eax)"},{address="0x0236b5af",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="159",inst="add    %al,0x5c8918ec(%ebx)"},{address="0x0236b5b5",func-name="SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY",offset="5",inst="and    $0xc,%al"},{address="0x0236b5b7",func-name="SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY",offset="7",inst="mov    %esi,0x10(%esp)"},{address="0x0236b5bb",func-name="SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY",offset="11",inst="mov    %edi,0x14(%esp)"},{address="0x0236b5bf",func-name="SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY",offset="15",inst="mov    %edx,0x8(%esp)"},{address="0x0236b5c3",func-name="SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY",offset="19",inst="mov    %eax,0x4(%esp)"},{address="0x0236b5c7",func-name="SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY",offset="23",inst="jmp    0x236b619 <SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY+105>"},{address="0x0236b5c9",func-name="SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY",offset="25",inst="lea    0x0(%esi),%esi"},{address="0x0236b5cc",func-name="SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY",offset="28",inst="mov    0x4(%esp),%eax"},{address="0x0236b5d0",func-name="SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY",offset="32",inst="mov    0x28(%eax),%esi"},{address="0x0236b5d3",func-name="SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY",offset="35",inst="test   %esi,%esi"},{address="0x0236b5d5",func-name="SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY",offset="37",inst="je     0x236b60e <SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY+94>"},{address="0x0236b5d7",func-name="SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY",offset="39",inst="mov    (%esi),%eax"},{address="0x0236b5d9",func-name="SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY",offset="41",inst="dec    %eax"},{address="0x0236b5da",func-name="SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY",offset="42",inst="mov    %eax,%ebx"},{address="0x0236b5dc",func-name="SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY",offset="44",inst="mov    $0x0,%edi"},{address="0x0236b5e1",func-name="SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY",offset="49",inst="cmp    %edi,%ebx"},{address="0x0236b5e3",func-name="SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY",offset="51",inst="jl     0x236b60e <SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY+94>"},{address="0x0236b5e5",func-name="SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY",offset="53",inst="dec    %edi"},{address="0x0236b5e6",func-name="SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY",offset="54",inst="mov    %esi,%esi"},{address="0x0236b5e8",func-name="SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY",offset="56",inst="inc    %edi"},{address="0x0236b5e9",func-name="SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY",offset="57",inst="imul   $0x14,%edi,%eax"},{address="0x0236b5ec",func-name="SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY",offset="60",inst="lea    0x4(%esi,%eax,1),%eax"},{address="0x0236b5f0",func-name="SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY",offset="64",inst="mov    %eax,(%esp)"},{address="0x0236b5f3",func-name="SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY",offset="67",inst="cmpl   $0x0,(%eax)"},{address="0x0236b5f6",func-name="SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY",offset="70",inst="je     0x236b60a <SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY+90>"},{address="0x0236b5f8",func-name="SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY",offset="72",inst="mov    (%esp),%edx"},{address="0x0236b5fb",func-name="SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY",offset="75",inst="mov    (%edx),%eax"},{address="0x0236b5fd",func-name="SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY",offset="77",inst="mov    0x8(%esp),%edx"},{address="0x0236b601",func-name="SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY",offset="81",inst="call   0x236b360 <SYSTEM_ISGUIDEQUAL$TGUID$TGUID$$BOOLEAN>"},{address="0x0236b606",func-name="SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY",offset="86",inst="test   %al,%al"},{address="0x0236b608",func-name="SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY",offset="88",inst="jne    0x236b636 <SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY+134>"},{address="0x0236b60a",func-name="SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY",offset="90",inst="cmp    %edi,%ebx"},{address="0x0236b60c",func-name="SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY",offset="92",inst="jg     0x236b5e8 <SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY+56>"},{address="0x0236b60e",func-name="SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY",offset="94",inst="mov    0x4(%esp),%eax"},{address="0x0236b612",func-name="SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY",offset="98",inst="mov    0x8(%eax),%eax"},{address="0x0236b615",func-name="SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY",offset="101",inst="mov    %eax,0x4(%esp)"},{address="0x0236b619",func-name="SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY",offset="105",inst="mov    0x4(%esp),%eax"},{address="0x0236b61d",func-name="SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY",offset="109",inst="test   %eax,%eax"},{address="0x0236b61f",func-name="SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY",offset="111",inst="je     0x236b62f <SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY+127>"},{address="0x0236b621",func-name="SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY",offset="113",inst="mov    $0x24f4e60,%edx"},{address="0x0236b626",func-name="SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY",offset="118",inst="mov    0x4(%esp),%eax"},{address="0x0236b62a",func-name="SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY",offset="122",inst="cmp    0x28(%eax),%edx"},{address="0x0236b62d",func-name="SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY",offset="125",inst="jne    0x236b5cc <SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY+28>"},{address="0x0236b62f",func-name="SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY",offset="127",inst="movl   $0x0,(%esp)"},{address="0x0236b636",func-name="SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY",offset="134",inst="mov    (%esp),%eax"},{address="0x0236b639",func-name="SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY",offset="137",inst="mov    0xc(%esp),%ebx"},{address="0x0236b63d",func-name="SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY",offset="141",inst="mov    0x10(%esp),%esi"},{address="0x0236b641",func-name="SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY",offset="145",inst="mov    0x14(%esp),%edi"},{address="0x0236b645",func-name="SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY",offset="149",inst="add    $0x18,%esp"},{address="0x0236b648",func-name="SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY",offset="152",inst="ret    "},{address="0x0236b649",func-name="SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY",offset="153",inst="add    %al,(%eax)"},{address="0x0236b64b",func-name="SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY",offset="155",inst="add    %al,(%eax)"},{address="0x0236b64d",func-name="SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY",offset="157",inst="add    %al,(%eax)"},{address="0x0236b64f",func-name="SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY",offset="159",inst="add    %bh,(%ecx)"},{address="0x0236b651",func-name="SYSTEM_TOBJECT_$__EQUALS$TOBJECT$$BOOLEAN",offset="1",inst="ret    $0x940f"},{address="0x0236b654",func-name="SYSTEM_TOBJECT_$__EQUALS$TOBJECT$$BOOLEAN",offset="4",inst="rol    $0x0,%bl"},{address="0x0236b657",func-name="SYSTEM_TOBJECT_$__EQUALS$TOBJECT$$BOOLEAN",offset="7",inst="add    %al,(%eax)"},{address="0x0236b659",func-name="SYSTEM_TOBJECT_$__EQUALS$TOBJECT$$BOOLEAN",offset="9",inst="add    %al,(%eax)"},{address="0x0236b65b",func-name="SYSTEM_TOBJECT_$__EQUALS$TOBJECT$$BOOLEAN",offset="11",inst="add    %al,(%eax)"},{address="0x0236b65d",func-name="SYSTEM_TOBJECT_$__EQUALS$TOBJECT$$BOOLEAN",offset="13",inst="add    %al,(%eax)"},{address="0x0236b65f",func-name="SYSTEM_TOBJECT_$__EQUALS$TOBJECT$$BOOLEAN",offset="15",inst="add    %al,%bl"},{address="0x0236b661",func-name="SYSTEM_TOBJECT_$__GETHASHCODE$$LONGINT",offset="1",inst="add    %al,(%eax)"},{address="0x0236b663",func-name="SYSTEM_TOBJECT_$__GETHASHCODE$$LONGINT",offset="3",inst="add    %al,(%eax)"},{address="0x0236b665",func-name="SYSTEM_TOBJECT_$__GETHASHCODE$$LONGINT",offset="5",inst="add    %al,(%eax)"},{address="0x0236b667",func-name="SYSTEM_TOBJECT_$__GETHASHCODE$$LONGINT",offset="7",inst="add    %al,(%eax)"},{address="0x0236b669",func-name="SYSTEM_TOBJECT_$__GETHASHCODE$$LONGINT",offset="9",inst="add    %al,(%eax)"},{address="0x0236b66b",func-name="SYSTEM_TOBJECT_$__GETHASHCODE$$LONGINT",offset="11",inst="add    %al,(%eax)"},{address="0x0236b66d",func-name="SYSTEM_TOBJECT_$__GETHASHCODE$$LONGINT",offset="13",inst="add    %al,(%eax)"},{address="0x0236b66f",func-name="SYSTEM_TOBJECT_$__GETHASHCODE$$LONGINT",offset="15",inst="add    %al,0x104ec(%ecx)"},{address="0x0236b675",func-name="SYSTEM_TOBJECT_$__TOSTRING$$ANSISTRING",offset="5",inst="add    %cl,0x548d2414(%ecx)"},{address="0x0236b67b",func-name="SYSTEM_TOBJECT_$__TOSTRING$$ANSISTRING",offset="11",inst="and    $0x4,%al"},{address="0x0236b67d",func-name="SYSTEM_TOBJECT_$__TOSTRING$$ANSISTRING",offset="13",inst="mov    (%eax),%eax"},{address="0x0236b67f",func-name="SYSTEM_TOBJECT_$__TOSTRING$$ANSISTRING",offset="15",inst="call   0x236b030 <SYSTEM_TOBJECT_$__CLASSNAME$$SHORTSTRING>"},{address="0x0236b684",func-name="SYSTEM_TOBJECT_$__TOSTRING$$ANSISTRING",offset="20",inst="lea    0x4(%esp),%eax"},{address="0x0236b688",func-name="SYSTEM_TOBJECT_$__TOSTRING$$ANSISTRING",offset="24",inst="mov    (%esp),%edx"},{address="0x0236b68b",func-name="SYSTEM_TOBJECT_$__TOSTRING$$ANSISTRING",offset="27",inst="call   0x23672d0 <fpc_shortstr_to_ansistr>"},{address="0x0236b690",func-name="SYSTEM_TOBJECT_$__TOSTRING$$ANSISTRING",offset="32",inst="add    $0x104,%esp"},{address="0x0236b696",func-name="SYSTEM_TOBJECT_$__TOSTRING$$ANSISTRING",offset="38",inst="ret    "},{address="0x0236b697",func-name="SYSTEM_TOBJECT_$__TOSTRING$$ANSISTRING",offset="39",inst="add    %al,(%eax)"},{address="0x0236b699",func-name="SYSTEM_TOBJECT_$__TOSTRING$$ANSISTRING",offset="41",inst="add    %al,(%eax)"},{address="0x0236b69b",func-name="SYSTEM_TOBJECT_$__TOSTRING$$ANSISTRING",offset="43",inst="add    %al,(%eax)"},{address="0x0236b69d",func-name="SYSTEM_TOBJECT_$__TOSTRING$$ANSISTRING",offset="45",inst="add    %al,(%eax)"},{address="0x0236b69f",func-name="SYSTEM_TOBJECT_$__TOSTRING$$ANSISTRING",offset="47",inst="add    %dl,-0x77(%ebp)"},{address="0x0236b6a2",func-name="SYSTEM_TINTERFACEDOBJECT_$__QUERYINTERFACE$TGUID$formal$$LONGINT",offset="2",inst="in     $0x8b,%eax"},{address="0x0236b6a4",func-name="SYSTEM_TINTERFACEDOBJECT_$__QUERYINTERFACE$TGUID$formal$$LONGINT",offset="4",inst="inc    %ebp"},{address="0x0236b6a5",func-name="SYSTEM_TINTERFACEDOBJECT_$__QUERYINTERFACE$TGUID$formal$$LONGINT",offset="5",inst="or     %cl,0x4d8b0c55(%ebx)"},{address="0x0236b6ab",func-name="SYSTEM_TINTERFACEDOBJECT_$__QUERYINTERFACE$TGUID$formal$$LONGINT",offset="11",inst="adc    %ch,%al"},{address="0x0236b6ad",func-name="SYSTEM_TINTERFACEDOBJECT_$__QUERYINTERFACE$TGUID$formal$$LONGINT",offset="13",inst="mov    $0x84fffffd,%edi"}]
(gdb) 
<-data-disassemble -s 37139728 -e 37139888 -- 1>
^done,asm_insns=[{address="0x0236b510",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="0",inst="push   %ebp"},{address="0x0236b511",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="1",inst="mov    %esp,%ebp"},{address="0x0236b513",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="3",inst="sub    $0x14,%esp"},{address="0x0236b516",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="6",inst="mov    %ebx,-0x14(%ebp)"},{address="0x0236b519",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="9",inst="mov    %esi,-0x10(%ebp)"},{address="0x0236b51c",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="12",inst="mov    %edi,-0xc(%ebp)"},{address="0x0236b51f",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="15",inst="mov    %eax,%ebx"},{address="0x0236b521",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="17",inst="mov    %edx,%edi"},{address="0x0236b523",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="19",inst="mov    %ecx,-0x4(%ebp)"},{address="0x0236b526",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="22",inst="mov    %edi,%edx"},{address="0x0236b528",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="24",inst="mov    $0x24a5ae0,%eax"},{address="0x0236b52d",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="29",inst="call   0x236b360 <SYSTEM_ISGUIDEQUAL$TGUID$TGUID$$BOOLEAN>"},{address="0x0236b532",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="34",inst="test   %al,%al"},{address="0x0236b534",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="36",inst="je     0x236b541 <SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN+49>"},{address="0x0236b536",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="38",inst="mov    -0x4(%ebp),%eax"},{address="0x0236b539",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="41",inst="mov    %ebx,(%eax)"},{address="0x0236b53b",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="43",inst="movb   $0x1,-0x8(%ebp)"},{address="0x0236b53f",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="47",inst="jmp    0x236b593 <SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN+131>"},{address="0x0236b541",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="49",inst="mov    %ebx,%ebx"},{address="0x0236b543",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="51",inst="nop"},{address="0x0236b544",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="52",inst="mov    %edi,%edx"},{address="0x0236b546",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="54",inst="mov    (%ebx),%eax"},{address="0x0236b548",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="56",inst="call   0x236b5b0 <SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY>"},{address="0x0236b54d",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="61",inst="mov    %eax,%esi"},{address="0x0236b54f",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="63",inst="mov    -0x4(%ebp),%ecx"},{address="0x0236b552",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="66",inst="mov    %esi,%edx"},{address="0x0236b554",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="68",inst="mov    %ebx,%eax"},{address="0x0236b556",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="70",inst="call   0x236b3a0 <SYSTEM_GETINTERFACEBYENTRY$POINTER$PINTERFACEENTRY$formal$$BOOLEAN>"},{address="0x0236b55b",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="75",inst="mov    %al,-0x8(%ebp)"},{address="0x0236b55e",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="78",inst="test   %al,%al"},{address="0x0236b560",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="80",inst="je     0x236b571 <SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN+97>"},{address="0x0236b562",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="82",inst="mov    0x10(%esi),%eax"},{address="0x0236b565",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="85",inst="cmp    $0x4,%eax"},{address="0x0236b568",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="88",inst="jb     0x236b571 <SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN+97>"},{address="0x0236b56a",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="90",inst="mov    -0x4(%ebp),%eax"},{address="0x0236b56d",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="93",inst="mov    (%eax),%ebx"},{address="0x0236b56f",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="95",inst="jmp    0x236b544 <SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN+52>"},{address="0x0236b571",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="97",inst="mov    -0x8(%ebp),%al"},{address="0x0236b574",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="100",inst="test   %al,%al"},{address="0x0236b576",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="102",inst="je     0x236b593 <SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN+131>"},{address="0x0236b578",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="104",inst="mov    0x10(%esi),%eax"},{address="0x0236b57b",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="107",inst="test   %eax,%eax"},{address="0x0236b57d",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="109",inst="je     0x236b593 <SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN+131>"},{address="0x0236b57f",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="111",inst="cmp    $0x3,%eax"},{address="0x0236b582",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="114",inst="je     0x236b593 <SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN+131>"},{address="0x0236b584",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="116",inst="mov    -0x4(%ebp),%eax"},{address="0x0236b587",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="119",inst="pushl  (%eax)"},{address="0x0236b589",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="121",inst="mov    -0x4(%ebp),%eax"},{address="0x0236b58c",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="124",inst="mov    (%eax),%edx"},{address="0x0236b58e",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="126",inst="mov    (%edx),%eax"},{address="0x0236b590",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="128",inst="call   *0x8(%eax)"},{address="0x0236b593",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="131",inst="mov    -0x8(%ebp),%al"},{address="0x0236b596",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="134",inst="mov    -0x14(%ebp),%ebx"},{address="0x0236b599",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="137",inst="mov    -0x10(%ebp),%esi"},{address="0x0236b59c",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="140",inst="mov    -0xc(%ebp),%edi"},{address="0x0236b59f",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="143",inst="leave  "},{address="0x0236b5a0",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="144",inst="ret    "},{address="0x0236b5a1",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="145",inst="add    %al,(%eax)"},{address="0x0236b5a3",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="147",inst="add    %al,(%eax)"},{address="0x0236b5a5",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="149",inst="add    %al,(%eax)"},{address="0x0236b5a7",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="151",inst="add    %al,(%eax)"},{address="0x0236b5a9",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="153",inst="add    %al,(%eax)"},{address="0x0236b5ab",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="155",inst="add    %al,(%eax)"},{address="0x0236b5ad",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="157",inst="add    %al,(%eax)"},{address="0x0236b5af",func-name="SYSTEM_TOBJECT_$__GETINTERFACEWEAK$TGUID$formal$$BOOLEAN",offset="159",inst="add    %al,0x5c8918ec(%ebx)"}]
(gdb) 
<-data-disassemble -s 37139888 -e 37140048 -- 1>
^done,asm_insns=[{address="0x0236b5b0",func-name="SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY",offset="0",inst="sub    $0x18,%esp"},{address="0x0236b5b3",func-name="SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY",offset="3",inst="mov    %ebx,0xc(%esp)"},{address="0x0236b5b7",func-name="SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY",offset="7",inst="mov    %esi,0x10(%esp)"},{address="0x0236b5bb",func-name="SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY",offset="11",inst="mov    %edi,0x14(%esp)"},{address="0x0236b5bf",func-name="SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY",offset="15",inst="mov    %edx,0x8(%esp)"},{address="0x0236b5c3",func-name="SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY",offset="19",inst="mov    %eax,0x4(%esp)"},{address="0x0236b5c7",func-name="SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY",offset="23",inst="jmp    0x236b619 <SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY+105>"},{address="0x0236b5c9",func-name="SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY",offset="25",inst="lea    0x0(%esi),%esi"},{address="0x0236b5cc",func-name="SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY",offset="28",inst="mov    0x4(%esp),%eax"},{address="0x0236b5d0",func-name="SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY",offset="32",inst="mov    0x28(%eax),%esi"},{address="0x0236b5d3",func-name="SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY",offset="35",inst="test   %esi,%esi"},{address="0x0236b5d5",func-name="SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY",offset="37",inst="je     0x236b60e <SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY+94>"},{address="0x0236b5d7",func-name="SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY",offset="39",inst="mov    (%esi),%eax"},{address="0x0236b5d9",func-name="SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY",offset="41",inst="dec    %eax"},{address="0x0236b5da",func-name="SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY",offset="42",inst="mov    %eax,%ebx"},{address="0x0236b5dc",func-name="SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY",offset="44",inst="mov    $0x0,%edi"},{address="0x0236b5e1",func-name="SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY",offset="49",inst="cmp    %edi,%ebx"},{address="0x0236b5e3",func-name="SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY",offset="51",inst="jl     0x236b60e <SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY+94>"},{address="0x0236b5e5",func-name="SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY",offset="53",inst="dec    %edi"},{address="0x0236b5e6",func-name="SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY",offset="54",inst="mov    %esi,%esi"},{address="0x0236b5e8",func-name="SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY",offset="56",inst="inc    %edi"},{address="0x0236b5e9",func-name="SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY",offset="57",inst="imul   $0x14,%edi,%eax"},{address="0x0236b5ec",func-name="SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY",offset="60",inst="lea    0x4(%esi,%eax,1),%eax"},{address="0x0236b5f0",func-name="SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY",offset="64",inst="mov    %eax,(%esp)"},{address="0x0236b5f3",func-name="SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY",offset="67",inst="cmpl   $0x0,(%eax)"},{address="0x0236b5f6",func-name="SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY",offset="70",inst="je     0x236b60a <SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY+90>"},{address="0x0236b5f8",func-name="SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY",offset="72",inst="mov    (%esp),%edx"},{address="0x0236b5fb",func-name="SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY",offset="75",inst="mov    (%edx),%eax"},{address="0x0236b5fd",func-name="SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY",offset="77",inst="mov    0x8(%esp),%edx"},{address="0x0236b601",func-name="SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY",offset="81",inst="call   0x236b360 <SYSTEM_ISGUIDEQUAL$TGUID$TGUID$$BOOLEAN>"},{address="0x0236b606",func-name="SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY",offset="86",inst="test   %al,%al"},{address="0x0236b608",func-name="SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY",offset="88",inst="jne    0x236b636 <SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY+134>"},{address="0x0236b60a",func-name="SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY",offset="90",inst="cmp    %edi,%ebx"},{address="0x0236b60c",func-name="SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY",offset="92",inst="jg     0x236b5e8 <SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY+56>"},{address="0x0236b60e",func-name="SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY",offset="94",inst="mov    0x4(%esp),%eax"},{address="0x0236b612",func-name="SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY",offset="98",inst="mov    0x8(%eax),%eax"},{address="0x0236b615",func-name="SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY",offset="101",inst="mov    %eax,0x4(%esp)"},{address="0x0236b619",func-name="SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY",offset="105",inst="mov    0x4(%esp),%eax"},{address="0x0236b61d",func-name="SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY",offset="109",inst="test   %eax,%eax"},{address="0x0236b61f",func-name="SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY",offset="111",inst="je     0x236b62f <SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY+127>"},{address="0x0236b621",func-name="SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY",offset="113",inst="mov    $0x24f4e60,%edx"},{address="0x0236b626",func-name="SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY",offset="118",inst="mov    0x4(%esp),%eax"},{address="0x0236b62a",func-name="SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY",offset="122",inst="cmp    0x28(%eax),%edx"},{address="0x0236b62d",func-name="SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY",offset="125",inst="jne    0x236b5cc <SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY+28>"},{address="0x0236b62f",func-name="SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY",offset="127",inst="movl   $0x0,(%esp)"},{address="0x0236b636",func-name="SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY",offset="134",inst="mov    (%esp),%eax"},{address="0x0236b639",func-name="SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY",offset="137",inst="mov    0xc(%esp),%ebx"},{address="0x0236b63d",func-name="SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY",offset="141",inst="mov    0x10(%esp),%esi"},{address="0x0236b641",func-name="SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY",offset="145",inst="mov    0x14(%esp),%edi"},{address="0x0236b645",func-name="SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY",offset="149",inst="add    $0x18,%esp"},{address="0x0236b648",func-name="SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY",offset="152",inst="ret    "},{address="0x0236b649",func-name="SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY",offset="153",inst="add    %al,(%eax)"},{address="0x0236b64b",func-name="SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY",offset="155",inst="add    %al,(%eax)"},{address="0x0236b64d",func-name="SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY",offset="157",inst="add    %al,(%eax)"},{address="0x0236b64f",func-name="SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY",offset="159",inst="add    %bh,(%ecx)"}]
(gdb) 
<-data-read-memory 37139728 x 1 1 337>
^done,addr="0x0236b510",nr-bytes="337",total-bytes="337",next-row="0x0236b661",prev-row="0x0236b3bf",next-page="0x0236b661",prev-page="0x0236b3bf",memory=[{addr="0x0236b510",data=["0x55","0x89","0xe5","0x83","0xec","0x14","0x89","0x5d","0xec","0x89","0x75","0xf0","0x89","0x7d","0xf4","0x89","0xc3","0x89","0xd7","0x89","0x4d","0xfc","0x89","0xfa","0xb8","0xe0","0x5a","0x4a","0x02","0xe8","0x2e","0xfe","0xff","0xff","0x84","0xc0","0x74","0x0b","0x8b","0x45","0xfc","0x89","0x18","0xc6","0x45","0xf8","0x01","0xeb","0x52","0x89","0xdb","0x90","0x89","0xfa","0x8b","0x03","0xe8","0x63","0x00","0x00","0x00","0x89","0xc6","0x8b","0x4d","0xfc","0x89","0xf2","0x89","0xd8","0xe8","0x45","0xfe","0xff","0xff","0x88","0x45","0xf8","0x84","0xc0","0x74","0x0f","0x8b","0x46","0x10","0x83","0xf8","0x04","0x72","0x07","0x8b","0x45","0xfc","0x8b","0x18","0xeb","0xd3","0x8a","0x45","0xf8","0x84","0xc0","0x74","0x1b","0x8b","0x46","0x10","0x85","0xc0","0x74","0x14","0x83","0xf8","0x03","0x74","0x0f","0x8b","0x45","0xfc","0xff","0x30","0x8b","0x45","0xfc","0x8b","0x10","0x8b","0x02","0xff","0x50","0x08","0x8a","0x45","0xf8","0x8b","0x5d","0xec","0x8b","0x75","0xf0","0x8b","0x7d","0xf4","0xc9","0xc3","0x00","0x00","0x00","0x00","0x00","0x00","0x00","0x00","0x00","0x00","0x00","0x00","0x00","0x00","0x00","0x83","0xec","0x18","0x89","0x5c","0x24","0x0c","0x89","0x74","0x24","0x10","0x89","0x7c","0x24","0x14","0x89","0x54","0x24","0x08","0x89","0x44","0x24","0x04","0xeb","0x50","0x8d","0x76","0x00","0x8b","0x44","0x24","0x04","0x8b","0x70","0x28","0x85","0xf6","0x74","0x37","0x8b","0x06","0x48","0x89","0xc3","0xbf","0x00","0x00","0x00","0x00","0x39","0xfb","0x7c","0x29","0x4f","0x89","0xf6","0x47","0x6b","0xc7","0x14","0x8d","0x44","0x06","0x04","0x89","0x04","0x24","0x83","0x38","0x00","0x74","0x12","0x8b","0x14","0x24","0x8b","0x02","0x8b","0x54","0x24","0x08","0xe8","0x5a","0xfd","0xff","0xff","0x84","0xc0","0x75","0x2c","0x39","0xfb","0x7f","0xda","0x8b","0x44","0x24","0x04","0x8b","0x40","0x08","0x89","0x44","0x24","0x04","0x8b","0x44","0x24","0x04","0x85","0xc0","0x74","0x0e","0xba","0x60","0x4e","0x4f","0x02","0x8b","0x44","0x24","0x04","0x3b","0x50","0x28","0x75","0x9d","0xc7","0x04","0x24","0x00","0x00","0x00","0x00","0x8b","0x04","0x24","0x8b","0x5c","0x24","0x0c","0x8b","0x74","0x24","0x10","0x8b","0x7c","0x24","0x14","0x83","0xc4","0x18","0xc3","0x00","0x00","0x00","0x00","0x00","0x00","0x00","0x39","0xc2","0x0f","0x94","0xc0","0xc3","0x00","0x00","0x00","0x00","0x00","0x00","0x00","0x00","0x00","0x00","0xc3"]}]
(gdb) 
<-stack-info-depth>
^done,depth="32"
(gdb) 
<-thread-info>
^done,threads=[{id="4",target-id="Thread 3076.0xb3c",frame={level="0",addr="0x7c90e526",func="ntdll!LdrAddRefDll",args=[],from="C:\\WINDOWS\\system32\\ntdll.dll"},state="stopped"},{id="3",target-id="Thread 3076.0xaf8",frame={level="0",addr="0x7c90e526",func="ntdll!LdrAddRefDll",args=[],from="C:\\WINDOWS\\system32\\ntdll.dll"},state="stopped"},{id="2",target-id="Thread 3076.0xfd0",frame={level="0",addr="0x7c90e526",func="ntdll!LdrAddRefDll",args=[],from="C:\\WINDOWS\\system32\\ntdll.dll"},state="stopped"},{id="1",target-id="Thread 3076.0x22c",frame={level="0",addr="0x0236b5d7",func="SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY",args=[],from="E:\\lazarus\\CapeOpenWizard 1.0\\Examples\\CapeUnit\\CAPETestProject.dll"},state="stopped"}],current-thread-id="1"
(gdb) 
<-stack-list-arguments 1 0 4>
^done,stack-args=[frame={level="0",args=[]},frame={level="1",args=[]},frame={level="2",args=[]},frame={level="3",args=[{name="this",value="<error reading variable>"},{name="result",value="{<IUNKNOWN> = {}, }"}]},frame={level="4",args=[]}]
(gdb) 
<-stack-list-frames 0 4>
^done,stack=[frame={level="0",addr="0x0236b5d7",func="SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY",from="E:\\lazarus\\CapeOpenWizard 1.0\\Examples\\CapeUnit\\CAPETestProject.dll"},frame={level="1",addr="0x001abaa8",func="??"},frame={level="2",addr="0x0236abb4",func="fpc_class_as_intf",from="E:\\lazarus\\CapeOpenWizard 1.0\\Examples\\CapeUnit\\CAPETestProject.dll"},frame={level="3",addr="0x0249e9d6",func="TCAPEUNITDEF__GET_PORTS",file="E:/lazarus/CapeOpenWizard 1.0/CapeOpen100SharedFiles/CapeUnitDef100.pas",fullname="E:/lazarus/CapeOpenWizard 1.0/CapeOpen100SharedFiles/CapeUnitDef100.pas",line="71"},frame={level="4",addr="0x0057caa1",func="??"}]
(gdb) 
<-stack-list-arguments 1 0 0>
^done,stack-args=[frame={level="0",args=[]}]
(gdb) 
<-stack-list-locals 1>
^done,locals=[]
(gdb) 
User avatar
jasper
Posts: 1129
Joined: 24 October 2012, 15:33
Location: Spain
Contact:

Re: Using a CAPE-OPEN unit dll file

Post by jasper »

From the stack dump it looks like something is wrong with the interface table of the port collection.
<-stack-list-frames 0 4>
^done,stack=[frame={level="0",addr="0x0236b5d7",func="SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY",from="E:\\lazarus\\CapeOpenWizard 1.0\\Examples\\CapeUnit\\CAPETestProject.dll"},frame={level="1",addr="0x001abaa8",func="??"},frame={level="2",addr="0x0236abb4",func="fpc_class_as_intf",from="E:\\lazarus\\CapeOpenWizard 1.0\\Examples\\CapeUnit\\CAPETestProject.dll"},frame={level="3",addr="0x0249e9d6",func="TCAPEUNITDEF__GET_PORTS",file="E:/lazarus/CapeOpenWizard 1.0/CapeOpen100SharedFiles/CapeUnitDef100.pas",fullname="E:/lazarus/CapeOpenWizard 1.0/CapeOpen100SharedFiles/CapeUnitDef100.pas",line="71"},frame={level="4",addr="0x0057caa1",func="??"}]
I have no clue what SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY does, but this seems to go wrong. There is no info on where this is called from (frame 1, are you using a non-optimized dll with debug information?) but that in turn is called from fpc_class_as_intf (not sure what this is?) which is called from TCAPEUNITDEF__GET_PORTS. I imagine in the get_Ports function you are returning a port collection, and the SYSTEM_TOBJECT_$__GETINTERFACEENTRY$TGUID$$PINTERFACEENTRY is trying to obtain the IDispatch pointer from it?
HenkF
Posts: 87
Joined: 24 February 2013, 14:50
Location: Hengelo,NL

Re: Using a CAPE-OPEN unit dll file

Post by HenkF »

I guess the problem indeed is with the port collection . I will dig in deeper.
to be continued...
Thnx. Henk
Post Reply

Return to “COCO (AmsterCHEM)”