As it turns out, running garbage collection once doesn't collect all of the
objects because some of them hold references to others, but running it
iteratively (consistently it collects all objects after 2 calls
to gc.collect() in my experience), all objects can be collected...

I believe this truly defeats the PyQt SEGFAULT-on-exit once and for all...
(knock on wood)