[fpc-pascal] Error: Local variables size exceeds supported limit

Jonas Maebe jonas at freepascal.org
Sat Mar 9 13:33:54 CET 2019


On 09/03/2019 13:06, Fabio Luis Girardi wrote:
> Thanks by your feedback. Do you think that should I fill a bug report?

That's up to you.

> I think that 2GB on 64 bits a very conservative limit.

2GB stack space on is very large on any platform. Normally the heap is 
used for large allocations.

This probably mostly stems from 32 (and 16) bit platforms, where the 
issue was that it was hard to have large contiguous address ranges in 
the virtual memory space. OTOH,
* several systems still support limiting the stack size separately from 
the rest of the program's memory to more quickly catch infinite 
recursion errors. Thread stacks are also often limited in size.
* The offsets you can encode in a single instruction are always limited. 
E.g. on x86-64, offsets relative to the stack/frame pointer are limited 
to 2GB. So if you allocate more stack space than that, accessing local 
variables that are outside this addressable range will become slower 
because you'll need extra instructions (while local variables are often 
accessed a lot)

> Jonas, do you remember the revision number where this was changed?

r39916


Jonas




More information about the fpc-pascal mailing list