e5f954b0fe
The flattened descendant list can contain a protected node (the harness, on a Windows PID-reuse false-descendant) together with that node's real children, collected by recursing through it. Skipping only the exact protected pid kept omp alive but still TerminateProcess'd its unrelated worker/tool subprocesses. signal_tree/terminate_tree now drop every node whose recorded parent chain within the enumerated set passes through a protected pid, so a false descendant of the harness can no longer drag the harness's real children into the kill set. Fixes #7452