Eine Vermutung von mir ist, dass er beim "free" versucht sämtliche aktiven (
Indy)Threads zu beenden und irgend einer blockiert.
Workaround wäre evtl. den Socket zu schließen, also Active=false, dann einen Thread zu starten der das .free übernimmt. Im Grunde arbeitest du einfach weiter und überlässt die alte Komponente ihrem Schicksal, musst halt nur darauf achten, dass der Thread diese auch wirklich irgendwann zerstört bekommt.
Allgemein frage ich mich aber wozu dieser Handstand überhaupt gut sein soll
Wer später bremst ist eher tot.