[Lazarus] Lazarus strange behaviour
Martin
lazarus at mfriebe.de
Tue Dec 20 16:33:15 CET 2011
On 20/12/2011 15:13, Antonio Fortuny wrote:
> Le 20/12/2011 14:27, Martin a écrit :
>> The first steep I suggest would be to check my suspicion, that the
>> address given in the error is indeed wrong
>> "Error accessing memory address 0x72aa47b8"
>>
>> When reaching the breakpoint, before doing the fatal single step,
>> please open the disassembler window.
>> Note the current address, as well as look for any jump. (or copy and
>> paste around 20 lines of assembler and mail them)
>>
> 00402EB6 895dd4 mov %ebx,-0x2c(%ebp)
> 00402EB9 e8e2a70000 call 0x40d6a0 <fpc_initializeunits>
> :-\ SyncFlat.lpr:36 SyncFlatDaemon :=
> TSyncFlatDaemon.Create(nil); <<< instruction pointer
> 00402EBE ba54065d00 mov $0x5d0654,%edx
> 00402EC3 b900000000 mov $0x0,%ecx
> 00402EC8 b800000000 mov $0x0,%eax
> 00402ECD bb54065d00 mov $0x5d0654,%ebx
> 00402ED2 ff93c4000000 call *0xc4(%ebx)
> 00402ED8 a300606400 mov %eax,0x646000
> SyncFlat.lpr:37 try
>
Is the constructor virtual? or do you use Interfaces ? "type
TSyncFlatDaemon = class(TBase, SomeInterface)"
> step into in assembler screen works: Create in line 36 is entered and
> step into continues until
> I hit step over. The error screen appears immediately. But if I
> display the assembler screen again and hit step into it continues to
> work.
That confirms my suspicion:
The address address 0x72aa47b8 is not at all in your exe.
- Either fpc wrote the wrong address
- the linker may have gotten it wrong
- gdb has a bug
If you step in the assembler window then it is single asm instr.
stepping. GDB probably does this without the debug info. So it isn't
affected
> Unfortunately I don't have time enough. I'll do the job with my
> Win2003 server x86_64 but I'll come back first week of next year.
> It has to work with W32 too.
> Thank you very much for your effort anyway
Well I will be gone for a few days myself
More information about the Lazarus
mailing list