>Who is destroying first: parent or child? I think you need to do something else, storing a reference to the parent in the child object referenced in the parent will put you in trouble (already did).
OK, I think I've found it - I was creating a reference to the child control in _screen.oCtl, which I cleared only when the object destroyed. It obviously doesn't run its .destroy(), for whichever reason, but now I've discovered I can remove this reference much earlier, so now it seems to work.