A QObject automatically deletes all its children when itself is deleted.

So, I assume that after you deleted that widget, and it deleted it's children, there remained some references throughout the app to the invalid children.
Therefore it does not matter that the app is multithreaded or not.

Why not "deleteLater" the parent widget?

Regards