Page 1 of 1

Using a CAPE-OPEN unit dll file

Posted: 13 March 2013, 12:51
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

Re: Using a CAPE-OPEN unit dll file

Posted: 13 March 2013, 13:01
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.

Re: Using a CAPE-OPEN unit dll file

Posted: 13 March 2013, 13:09
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..

Re: Using a CAPE-OPEN unit dll file

Posted: 21 March 2013, 14:47
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

Re: Using a CAPE-OPEN unit dll file

Posted: 21 March 2013, 16:02
by jasper
Can you see what is on the call stack of the thread that causes the exception?

Re: Using a CAPE-OPEN unit dll file

Posted: 21 March 2013, 20:15
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) 

Re: Using a CAPE-OPEN unit dll file

Posted: 22 March 2013, 07:28
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?

Re: Using a CAPE-OPEN unit dll file

Posted: 22 March 2013, 07:44
by HenkF
I guess the problem indeed is with the port collection . I will dig in deeper.
to be continued...
Thnx. Henk