FPC, overrides random memory / Re: [fpc-devel] about bug 0016668 (-gt -O2)
Martin
fpc at mfriebe.de
Fri Jun 18 17:14:03 CEST 2010
Ok, unfortunately I haven't got instruction for reproductions.
The bug does no longer happen in todays lazarus svn code. => I'll try to
work out a revision where it happens. (likely laz svn 25937)
I found the fo9llowing assembler (disassembled by gdb) was generated for
mov $0x55,%al
movl $0x55555555,(%ecx)
movl $0x55555555,(%eax)
function TThemeServices.GetStockImage(StockID: LongInt; out Image, Mask:
HBitmap): Boolean;
var
img : TBitmap;
begin
if lazarus was compiled with
-gh -g -gl -gw -godwarfsets -CX -XX -Xs -gt -O2 -OpPENTIUMM
since "al" is trashed first, and then the content of the address pointed
to by eax => eax is no longer correct => some random memory is trashed.
al seems to be the result, eax must be one of the params
svn rev 15398
Martin
On 09/06/2010 18:44, Martin wrote:
> On 09/06/2010 18:42, Martin wrote:
>>
>> I am one tiny step forward..
>>
>> The SigSegV happens in fpc_ReRaise; => but the actual error must have
>> been introduced further up.
>>
>> Procedure fpc_ReRaise;[Public, Alias : 'FPC_RERAISE']; compilerproc;
>> var
>> _ExceptAddrStack : PExceptAddr;
>> begin
>> {$ifdef excdebug}
>> writeln ('In reraise');
>> {$endif}
>> _ExceptAddrStack:=ExceptAddrStack;
>> If _ExceptAddrStack=Nil then
>> DoUnHandledException;
>> ExceptObjectStack^.refcount := 0; // <<<<<<<<<<<<<<<<<
>> longjmp(_ExceptAddrStack^.Buf^,FPC_Exception);
>> end;
>>
>>
>> This is RTL (and compiled with -O1 => it doesn't use regvar), so I
>> should be able to trust variables here. (I also checked the assembler
>> view, and memory/registers...)
>>
>> - ExceptObjectStack is nil => So the line marked raises a SigSegV.
>> - ExceptAddrStack is not nil => so DoUnHandledException was not called
>>
>> The question is, any hints where to concentrate looking, in order to
>> find out, how this can end up with a nil pointer there?
>
> The content of ExceptAddrStack
>
> record TEXCEPTADDR {
> BUF = $a3ef728,
> NEXT = $a3ef768,
> FRAMETYPE = 1}
> _______________________________________________
> fpc-devel maillist - fpc-devel at lists.freepascal.org
> http://lists.freepascal.org/mailman/listinfo/fpc-devel
More information about the fpc-devel
mailing list