Buen día compañeros.
Estaba apoyando a un compañero con estructucuras tipo "Record" y algunas de ellas contenias muchos anidamientos, inclusive algunas de ellas contenían arreglos y al momento de ejecutar el programa mostraba el error "Stack Overflow". El problema no era con ninguna llamada recursiva sino que era por el área inicialmente reservada para las estructuras tipo Record.
Algo parecido a esto (por razones de confidencialidad no puedo mostrar el caso real):
type TTipoA = record campo : String; end; TTipoB = record campo : String; tipoA : TTipoA; end; TTipoC = record campo : String; tipob : TTipoB; end; TTipoD = record campo : String; tipoC : TTipoC; end; TDLineas = record campo : String; lista : array[1.100] of TTipoD; end; TMaestro = record; campo : String; lineas : TLineas; end;
Después de buscar por un rato encontré que se solucionaba cambiando el tamaño que tiene por default asignado para el STACK que es de: 1048576
Después de algunos cálculos, sugerí que se cambiara el valor por algo así::
{$MAXSTACKSIZE 4194304}
La instrucción anterior se agregó en el código del archivo del proyecto (.DPR)
Espero les sea de utilidad y les ahorre algo de tiempo.
Saludos.