Delphi タイマーが実行されるとき、それはメイン スレッド内にありませんか?
procedure TMainForm.MyTimerTimer(Sender: TObject);
begin
MyModalDialog.StatusText.BeginUpdate;
MyModalDialog.StatusText.Text := 'timer fired...';
MyModalDialog.StatusText.EndUpdate;
end;
ここでのクラッシュは、メイン スレッドの外部で GUI 要素を更新したことが原因ではないかと考えています。