aboutsummaryrefslogtreecommitdiff
path: root/gdb/prologue-value.c
diff options
context:
space:
mode:
authorKevin Buettner <kevinb@redhat.com>2017-04-04 15:25:43 -0700
committerKevin Buettner <kevinb@redhat.com>2017-09-21 11:49:47 -0700
commit8629910955a751a93f2f12389ff1f497556cc260 (patch)
treede0207b9d412ddfe9bdabe6bcf17920fd1b57f1c /gdb/prologue-value.c
parentda2c323bff3405add97c37333668de3aad36ec70 (diff)
downloadgdb-8629910955a751a93f2f12389ff1f497556cc260.zip
gdb-8629910955a751a93f2f12389ff1f497556cc260.tar.gz
gdb-8629910955a751a93f2f12389ff1f497556cc260.tar.bz2
Add thread_db_notice_clone to gdbserver
While working on a patch for fetching a thread handle in gdbserver, I ran into a circumstance in which tests in gdb.mi/mi-nsmoribund.exp would occasionally fail. Over a large enough number of runs, it would fail roughly 2% of the time. That thread handle patch caused find_one_thread() to be called on every stop. find_one_thread() calls td_ta_map_lwp2thr() which, in turn, can cause ps_get_thread_area() to be called. ps_get_thread_area() makes a call to ptrace() for getting the thread area address. If this should happen when the thread is not stopped, the call to ptrace will return error which in turn propogates back to find_one_thread(). find_one_thread() calls error() in this instance which causes the program to die. This patch causes find_one_thread() to be called upon reciept of a clone event. Since the clone is stopped, the circumstances described above cannot occur. gdb/gdbserver/ChangeLog: * linux-low.c (handle_extended_wait): Call thread_db_notice_clone(). * linux-low.h (thread_db_notice_clone): Declare. * thread-db.c (thread_db_notice_clone): New function.
Diffstat (limited to 'gdb/prologue-value.c')
0 files changed, 0 insertions, 0 deletions