Sorry, upon rereading I see I expressed myself poorly. I meant to say that I need to be able to kill one and only one lineage of processes. At any given time, I may be executing 20 different threaded tests within the main executable. Each test will create a child (the shell) and a grandchild (the badly-behaved executable). I was concerned that if I killed the process group (changing the main's pgid to avoid the axe), all currently running executables, not just the failing one, would be killed. Hence, killing the process group would mean one failing test may take 19 good ones out with it.
Please correct me if I am ill-informed.