--- gdb-7.2/gdb/gnu-nat.c.orig 2010-05-14 22:17:37.000000000 +0200 +++ gdb-7.2/gdb/gnu-nat.c 2011-03-28 09:07:49.000000000 +0200 @@ -1578,8 +1578,8 @@ if (--inf->pending_execs == 0) /* We're done! */ { + prune_threads (); /* Get rid of the old shell threads */ #if 0 /* do we need this? */ - prune_threads (1); /* Get rid of the old shell threads */ renumber_threads (0); /* Give our threads reasonable names. */ #endif } --- gdb-7.2/gdb/thread.c.orig 2010-08-06 21:51:49.000000000 +0200 +++ gdb-7.2/gdb/thread.c 2011-03-28 09:04:52.000000000 +0200 @@ -61,7 +61,6 @@ static void info_threads_command (char *, int); static void thread_apply_command (char *, int); static void restore_current_thread (ptid_t); -static void prune_threads (void); /* Frontend view of the thread state. Possible extensions: stepping, finishing, until(ling),... */ @@ -518,7 +517,7 @@ return 1; } -static void +void prune_threads (void) { struct thread_info *tp, *next; --- gdb-7.2/gdb/gdbthread.h.orig 2010-01-12 22:40:24.000000000 +0100 +++ gdb-7.2/gdb/gdbthread.h 2011-03-28 09:03:55.000000000 +0200 @@ -213,6 +213,9 @@ /* Delete an existing thread list entry. */ extern void delete_thread (ptid_t); +/* Prune inactive threads */ +extern void prune_threads (void); + /* Delete an existing thread list entry, and be quiet about it. Used after the process this thread having belonged to having already exited, for example. */