summaryrefslogtreecommitdiff
path: root/nptl_db/td_thr_validate.c
diff options
context:
space:
mode:
Diffstat (limited to 'nptl_db/td_thr_validate.c')
-rw-r--r--nptl_db/td_thr_validate.c16
1 files changed, 11 insertions, 5 deletions
diff --git a/nptl_db/td_thr_validate.c b/nptl_db/td_thr_validate.c
index 9a77250d48..3d560a621b 100644
--- a/nptl_db/td_thr_validate.c
+++ b/nptl_db/td_thr_validate.c
@@ -1,5 +1,5 @@
/* Validate a thread handle.
- Copyright (C) 1999,2001,2002,2003,2004,2007 Free Software Foundation, Inc.
+ Copyright (C) 1999, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 1999.
@@ -75,10 +75,16 @@ td_thr_validate (const td_thrhandle_t *th)
if (err == TD_OK)
err = check_thread_list (th, list, &uninit);
- if (err == TD_NOTHR && uninit && th->th_unique == 0)
- /* __pthread_initialize_minimal has not run yet.
- There is only the special case thread handle. */
- err = TD_OK;
+ if (err == TD_NOTHR && uninit)
+ {
+ /* __pthread_initialize_minimal has not run yet.
+ But the main thread still has a valid ID. */
+ td_thrhandle_t main_th;
+ err = td_ta_map_lwp2thr (th->th_ta_p,
+ ps_getpid (th->th_ta_p->ph), &main_th);
+ if (err == TD_OK && th->th_unique != main_th.th_unique)
+ err = TD_NOTHR;
+ }
}
return err;