Код:
procedure TfrmGL.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Close;
end;
Так делать нельзя. Close вызывает событие FormClose, которое, в свою очередь, вызывает Close. Получается бесконечная рекурсия.
Также в предыдущем куске лишним является Application.Terminate . Программа итак закрывается, зачем несколько раз ей говорить закрыться?