|
From: Jeremy F. <je...@go...> - 2003-10-22 21:45:43
|
On Wed, 2003-10-22 at 09:01, Jeremy Fitzhardinge wrote: > It is, and I've made that change to fix problems with SuSE's kernel - it > doesn't kill the other threads on exec, so you end up with proxy LWPs > hanging around marooned in old address spaces. The patch is to replace > the "tid" with "VG_INVALID_THREADID" in the > VG_(nuke_all_threads_except)() line. Hm, this isn't actually safe, but neither was the old code. It makes a real mess of the process/valgrind state, which is OK if the execve works. But if it fails, we basically cannot continue, since we've effectively killed all the threads anyway. As a workaround, I've changed PRE(execve) to do some preflight tests to see if the execve can possibly work, and fail out early if not. The execve may still fail, but the only thing we can do is panic. J |