[fpc-pascal] crash in lazbuild only on powerpc 64bit

Mattias Gaertner nc-gaertnma at netcologne.de
Mon Sep 24 09:11:58 CEST 2012


On Sun, 23 Sep 2012 17:29:23 +0200
Mattias Gaertner <nc-gaertnma at netcologne.de> wrote:

> Hi,
> 
> I was not able to reproduce the crash in a simple program. So I'm
> asking for help to create a good bug report.
> 
> The crash happens in lazbuild only on powerpc 64bit Linux with fpc
> 2.6.0 and fpc 2.7.1. It works on Linux 32+64bit intel+amd and powerpc
> 32bit OS X with any fpc.
> 
> The crashing line looks pretty common:
> 
> IncludePath:=OnGetIncludePath(FullDir,false);
> 
> OnGetIncludePath is a property:
> 
> TOnGetIncludePath = function(const Directory: string; UseCache: boolean): string of object;
> property OnGetIncludePath: TOnGetIncludePath read fOnGetIncludePath write fOnGetIncludePath;
> 
> Calling the method directly does not crash.
> Comparing the property and the address gives true:
> 
> writeln('This gives true=',OnGetIncludePath = @CodeToolBoss.GetIncludePathForDirectory);
> 
> Here is the assembler of the line
> 
> # [1514] IncludePath:=OnGetIncludePath(FullDir,false);
>         ld      r3,152(r1)
>         ld      r3,184(r3)
>         ld      r5,184(r1)
>         addi    r4,r1,200
>         li      r6,0
>         ld      r7,152(r1)
>         ld      r30,176(r7)
>         ld      r31,0(r30)
>         std     r2,40(r1)
>         mtctr   r31
>         ld      r2,8(r30)
>         ld      r11,16(r30)
>         bctrl
>         ld      r2,40(r1)
> 
> And here is the assembler of the working call:
> 
> # [1512] IncludePath:=CodeToolBoss.GetIncludePathForDirectory(FullDir);
>         ld      r5,184(r1)
>         addi    r4,r1,200
>         lis     r3,(U_CODETOOLMANAGER_CODETOOLBOSS)@highesta
>         ori     r3,r3,(U_CODETOOLMANAGER_CODETOOLBOSS)@highera
>         sldi    r3,r3,32
>         oris    r3,r3,(U_CODETOOLMANAGER_CODETOOLBOSS)@ha
>         ld      r3,(U_CODETOOLMANAGER_CODETOOLBOSS)@l(r3)
>         li      r6,1
>         bl      CODETOOLMANAGER_TCODETOOLMANAGER_$__GETINCLUDEPATHFORDIRECTORY$ANSISTRING$BOOLEAN$$ANSISTRING
>         nop

I created a bug report.

http://bugs.freepascal.org/view.php?id=22958

Mattias



More information about the fpc-pascal mailing list