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
Using a CAPE-OPEN unit dll file
Moderator: jasper
Re: Using a CAPE-OPEN unit dll file
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
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..
To be continued..
Re: Using a CAPE-OPEN unit dll file
...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
After initialization the InitNew method is called :
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
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;
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
Can you see what is on the call stack of the thread that causes the exception?
Re: Using a CAPE-OPEN unit dll file
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
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
From the stack dump it looks like something is wrong with the interface table of the port collection.
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?<-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="??"}]
Re: Using a CAPE-OPEN unit dll file
I guess the problem indeed is with the port collection . I will dig in deeper.
to be continued...
Thnx. Henk
to be continued...
Thnx. Henk