1. A method in a computing system for supporting the testing of a multithreaded program, comprising: during execution of the multithreaded program, detecting a crash of one of multiple threads of the multithreaded program; in response to detecting the crash, identifying a set of program execution points by identifying, for each of a plurality of threads other than the thread whose crash was detected, as a stopping point, a point in an execution of the thread during execution of the multithreaded program that is a candidate point for having caused the detected crash; determining a final set of program execution points by: for at least one selected thread of the plurality of threads other than the thread whose crash was detected: updating, to an earlier stopping point, the identified stopping point for the selected thread, such that a unique combination of stopping points across the threads is defined, wherein the updating is based on an identification of a communication performed by the selected thread that was earlier in the execution of the multithreaded program than the identified stopping point for the selected thread; in response to the updating, reexecuting the multithreaded program, stopping each of the plurality of threads other than the thread whose crash was detected at its determined stopping point in the unique combination of stopping points; determining whether the crash recurs in the reexecution; and when the crash recurs, modifying the set of program execution points such that the identified stopping point for the selected thread in the final set of program execution points is replaced with the earlier stopping point, wherein it is determined that the crash recurs for one or more of the at least one selected thread of the plurality of threads; and when the crash does not recur, selecting the set of program execution points without the updated earlier stopping point as the final set of program execution points; and making available to a user aspects of a thread state for one or more of the plurality of threads other than the thread whose crash was detected, wherein the aspects of the thread state made available to a user are based on the final set of program execution points.