A veces, el proceso puede bloquearse en un recurso o subproceso o algo, y dejarlo o liberarlo libera el proceso y lo deja finalizar. Es algo similar a cómo cuando elimina (en la papelera de reciclaje) un archivo en el Explorador que está en uso, en realidad no desaparece y parece atascado (sin devolver inmediatamente un error en uso / bloqueado), pero si salga del programa que lo tiene bloqueado en cinco segundos, el archivo desaparece repentinamente.
He visto que esto sucede en ocasiones, especialmente con programas que tienen un cuadro de diálogo emergente o algo que de alguna manera se oculta; encontrar una manera de descartar el diálogo permite que el hilo finalice, permitiendo así que el proceso finalice.
Sospecho que con el aumento, aunque todavía relativamente nuevo, de la práctica de programación multiproceso, cosas como esta se volverán más comunes, al menos por un tiempo.