[fpc-pascal] Array [THandle] of pointer

Marc Weustink marc at dommelstein.net
Wed Dec 24 00:23:31 CET 2008


Andrew Brunner wrote:
> Following Setup:
>   Ubuntu 8.10 x64
>   FPC 2.2.3 (latest and greatest)
>   Lazarus (Latest and greatest)
> 
> I'm seeing an anomaly with reading/writing to an Array[THandle] of Pointers.
> 
> TMyStruct=record
>   Index:integer;
> end;
> PMyStruct=^TMyStruct;
> TMyList = Array[THandle] of PMyStruct;
> 
> 
> If I declare a localized variable
> procedure Test();
> var
>   MyTest:TMyList;
>   hThread:THandle;
> begin
>   hThread:=getCurrentThreadID;
>   if (MyTest[hThread])=nil then begin // <---- CRASH HERE EXTERNAL SIGBUS
>   end;
> end;
> 
> 
> This should not crash here.  It should have been nil.
> 
> Any work being done in this area or should I report another bug?

I'm surprised it crashes there. A THandle is IIRC a Cardinal on unix, so 
by defining a variable MyTest:TMyList, you allocate 4GB * 
SizeOf(TMyStruct) = 16GB on your stack. Usually a process doens't have 
that much space and I wonder if you wanted this.

(You may want to look at the lcl Maps unit)

Marc




More information about the fpc-pascal mailing list