d4569d7bc5
On a target that is both always in non-stop mode and can do displaced stepping (such as native x86_64 GNU/Linux, with "maint set target-non-stop on"), the step-over-trips-on-watchpoint.exp test sometimes fails like this: (gdb) PASS: gdb.threads/step-over-trips-on-watchpoint.exp: no thread-specific bp: step: thread 1 set scheduler-locking off (gdb) PASS: gdb.threads/step-over-trips-on-watchpoint.exp: no thread-specific bp: step: set scheduler-locking off step -[Switching to Thread 0x7ffff7fc0700 (LWP 11782)] -Hardware watchpoint 4: watch_me - -Old value = 0 -New value = 1 -child_function (arg=0x0) at /home/pedro/gdb/mygit/src/gdb/testsuite/gdb.threads/step-over-trips-on-watchpoint.c:39 -39 other = 1; /* set thread-specific breakpoint here */ -(gdb) PASS: gdb.threads/step-over-trips-on-watchpoint.exp: no thread-specific bp: step: step +wait_threads () at /home/pedro/gdb/mygit/src/gdb/testsuite/gdb.threads/step-over-trips-on-watchpoint.c:49 +49 return 1; /* in wait_threads */ +(gdb) FAIL: gdb.threads/step-over-trips-on-watchpoint.exp: no thread-specific bp: step: step Note "scheduler-locking" was set off. The problem is that on such targets, the step-over of thread 2 and the "step" of thread 1 can be set to run simultaneously (since with displaced stepping the breakpoint isn't ever removed from the target), and sometimes, the "step" of thread 1 finishes first, so it'd take another resume to see the watchpoint trigger. Fix this by replacing the wait_threads function with a one-line infinite loop that doesn't call any function, so that the "step" of thread 1 never finishes. gdb/testsuite/ChangeLog: 2015-08-07 Pedro Alves <palves@redhat.com> * gdb.threads/step-over-lands-on-breakpoint.c (wait_threads): Delete function. (main): Add alarm. Run an infinite loop instead of calling wait_threads. * gdb.threads/step-over-lands-on-breakpoint.exp (do_test): Change comment. * gdb.threads/step-over-trips-on-watchpoint.c (wait_threads): Delete function. (main): Add alarm. Run an infinite loop instead of calling wait_threads. * gdb.threads/step-over-trips-on-watchpoint.exp (do_test): Change comment. |
||
---|---|---|
.. | ||
attach-into-signal.c | ||
attach-into-signal.exp | ||
attach-many-short-lived-threads.c | ||
attach-many-short-lived-threads.exp | ||
attach-stopped.c | ||
attach-stopped.exp | ||
bp_in_thread.c | ||
bp_in_thread.exp | ||
break-while-running.c | ||
break-while-running.exp | ||
clone-new-thread-event.c | ||
clone-new-thread-event.exp | ||
clone-thread_db.c | ||
clone-thread_db.exp | ||
continue-pending-after-query.c | ||
continue-pending-after-query.exp | ||
continue-pending-status.c | ||
continue-pending-status.exp | ||
corethreads.c | ||
corethreads.exp | ||
create-fail.c | ||
create-fail.exp | ||
current-lwp-dead.c | ||
current-lwp-dead.exp | ||
dlopen-libpthread-lib.c | ||
dlopen-libpthread.c | ||
dlopen-libpthread.exp | ||
execl.c | ||
execl.exp | ||
execl1.c | ||
fork-child-threads.c | ||
fork-child-threads.exp | ||
fork-plus-threads.c | ||
fork-plus-threads.exp | ||
fork-thread-pending.c | ||
fork-thread-pending.exp | ||
forking-threads-plus-breakpoint.c | ||
forking-threads-plus-breakpoint.exp | ||
gcore-stale-thread.c | ||
gcore-stale-thread.exp | ||
gcore-thread.exp | ||
hand-call-in-threads.c | ||
hand-call-in-threads.exp | ||
hand-call-new-thread.c | ||
hand-call-new-thread.exp | ||
ia64-sigill.c | ||
ia64-sigill.exp | ||
info-threads-cur-sal-2.c | ||
info-threads-cur-sal.c | ||
info-threads-cur-sal.exp | ||
interrupted-hand-call.c | ||
interrupted-hand-call.exp | ||
kill.c | ||
kill.exp | ||
killed.c | ||
killed.exp | ||
leader-exit.c | ||
leader-exit.exp | ||
linux-dp.c | ||
linux-dp.exp | ||
local-watch-wrong-thread.c | ||
local-watch-wrong-thread.exp | ||
Makefile.in | ||
manythreads.c | ||
manythreads.exp | ||
multi-create-ns-info-thr.exp | ||
multi-create.c | ||
multi-create.exp | ||
multiple-step-overs.c | ||
multiple-step-overs.exp | ||
next-bp-other-thread.c | ||
next-bp-other-thread.exp | ||
next-while-other-thread-longjmps.c | ||
next-while-other-thread-longjmps.exp | ||
no-unwaited-for-left.c | ||
no-unwaited-for-left.exp | ||
non-ldr-exc-1.c | ||
non-ldr-exc-1.exp | ||
non-ldr-exc-2.c | ||
non-ldr-exc-2.exp | ||
non-ldr-exc-3.c | ||
non-ldr-exc-3.exp | ||
non-ldr-exc-4.c | ||
non-ldr-exc-4.exp | ||
non-ldr-exit.c | ||
non-ldr-exit.exp | ||
non-stop-fair-events.c | ||
non-stop-fair-events.exp | ||
pending-step.c | ||
pending-step.exp | ||
print-threads.c | ||
print-threads.exp | ||
process-dies-while-handling-bp.c | ||
process-dies-while-handling-bp.exp | ||
pthread_cond_wait.c | ||
pthread_cond_wait.exp | ||
pthreads.c | ||
pthreads.exp | ||
queue-signal.c | ||
queue-signal.exp | ||
reconnect-signal.c | ||
reconnect-signal.exp | ||
schedlock.c | ||
schedlock.exp | ||
siginfo-threads.c | ||
siginfo-threads.exp | ||
signal-command-handle-nopass.c | ||
signal-command-handle-nopass.exp | ||
signal-command-multiple-signals-pending.c | ||
signal-command-multiple-signals-pending.exp | ||
signal-delivered-right-thread.c | ||
signal-delivered-right-thread.exp | ||
signal-sigtrap.c | ||
signal-sigtrap.exp | ||
signal-while-stepping-over-bp-other-thread.c | ||
signal-while-stepping-over-bp-other-thread.exp | ||
sigstep-threads.c | ||
sigstep-threads.exp | ||
sigthread.c | ||
sigthread.exp | ||
staticthreads.c | ||
staticthreads.exp | ||
step-bg-decr-pc-switch-thread.c | ||
step-bg-decr-pc-switch-thread.exp | ||
step-over-lands-on-breakpoint.c | ||
step-over-lands-on-breakpoint.exp | ||
step-over-trips-on-watchpoint.c | ||
step-over-trips-on-watchpoint.exp | ||
stepi-random-signal.c | ||
stepi-random-signal.exp | ||
switch-threads.c | ||
switch-threads.exp | ||
thread-execl.c | ||
thread-execl.exp | ||
thread-find.exp | ||
thread-specific-bp.c | ||
thread-specific-bp.exp | ||
thread-specific.c | ||
thread-specific.exp | ||
thread-unwindonsignal.exp | ||
thread_check.c | ||
thread_check.exp | ||
thread_events.c | ||
thread_events.exp | ||
threadapply.c | ||
threadapply.exp | ||
threxit-hop-specific.c | ||
threxit-hop-specific.exp | ||
tid-reuse.c | ||
tid-reuse.exp | ||
tls-main.c | ||
tls-nodebug.c | ||
tls-nodebug.exp | ||
tls-shared.c | ||
tls-shared.exp | ||
tls-var-main.c | ||
tls-var.c | ||
tls-var.exp | ||
tls.c | ||
tls.exp | ||
tls2.c | ||
watchpoint-fork-child.c | ||
watchpoint-fork-mt.c | ||
watchpoint-fork-parent.c | ||
watchpoint-fork-st.c | ||
watchpoint-fork.exp | ||
watchpoint-fork.h | ||
watchthreads-reorder.c | ||
watchthreads-reorder.exp | ||
watchthreads.c | ||
watchthreads.exp | ||
watchthreads2.c | ||
watchthreads2.exp | ||
wp-replication.c | ||
wp-replication.exp |