public inbox for gdb-testers@sourceware.org
help / color / mirror / Atom feed
From: sergiodj@redhat.com
To: gdb-testers@sourceware.org
Subject: Test results for commit d4a0a1ff2b7f3d50180229768a270750ef94bbdf on branch gdb-7.9-branch
Date: Tue, 17 Feb 2015 13:49:00 -0000	[thread overview]
Message-ID: <d4a0a1ff2b7f3d50180229768a270750ef94bbdf@kwanyin> (raw)

*** TEST RESULTS FOR COMMIT d4a0a1ff2b7f3d50180229768a270750ef94bbdf ***

Author: Pedro Alves <palves@redhat.com>
Branch: gdb-7.9-branch
Commit: d4a0a1ff2b7f3d50180229768a270750ef94bbdf

When disabling target async, remove all target event sources from the event loop
The sigall-reverse.exp test occasionally fails with something like this:

 (gdb) PASS: gdb.reverse/sigall-reverse.exp: send signal TERM
 continue
 Continuing.
 The next instruction is syscall exit_group.  It will make the program exit.  Do you want to stop the program?([y] or n) FAIL: gdb.reverse/sigall-reverse.exp: continue to signal exit (timeout)
 FAIL: gdb.reverse/sigall-reverse.exp: reverse to handler of TERM (timeout)
 FAIL: gdb.reverse/sigall-reverse.exp: reverse to gen_TERM (timeout)

This is another event-loop/async related problem exposed by the patch
that made 'query' use gdb_readline_wrapper (588dcc3edbde19f9).

The problem is that even though gdb_readline_wrapper disables
target-async while the secondary prompt is in progress, the record
target's async event source is left marked.  So when
gdb_readline_wrapper nests an event loop to process input, it may
happen that that event loop ends up processing a target event while
GDB is not really ready for it.  Here's the relevant part of the
backtrace showing the root issue in action:

...
 #14 0x000000000061cb48 in fetch_inferior_event (client_data=0x0) at src/gdb/infrun.c:4158
 #15 0x0000000000642917 in inferior_event_handler (event_type=INF_REG_EVENT, client_data=0x0) at src/gdb/inf-loop.c:57
 #16 0x000000000077ca5c in record_full_async_inferior_event_handler (data=0x0) at src/gdb/record-full.c:791
 #17 0x0000000000640fdf in invoke_async_event_handler (data=...) at src/gdb/event-loop.c:1067
 #18 0x000000000063fb01 in process_event () at src/gdb/event-loop.c:339
 #19 0x000000000063fb2a in gdb_do_one_event () at src/gdb/event-loop.c:360
 #20 0x000000000074d607 in gdb_readline_wrapper (prompt=0x3588f40 "The next instruction is syscall exit_group.  It will make the program exit.  Do you want to stop the program?([y] or n) ") at src/gdb/top.c:842
 #21 0x0000000000750bd9 in defaulted_query (ctlstr=0x8c6588 "The next instruction is syscall exit_group.  It will make the program exit.  Do you want to stop the program?", defchar=121 'y', args=0x7fff70524410) at src/gdb/utils.c:1279
 #22 0x0000000000750e4c in yquery (ctlstr=0x8c6588 "The next instruction is syscall exit_group.  It will make the program exit.  Do you want to stop the program?") at src/gdb/utils.c:1358
 #23 0x00000000004b020e in record_linux_system_call (syscall=gdb_sys_exit_group, regcache=0x3529450, tdep=0xd6c840 <amd64_linux_record_tdep>) at src/gdb/linux-record.c:1933

With my all-stop-on-top-of-non-stop series, I'm also seeing
gdb.server/ext-attach.exp fail occasionally due to the same issue.

The first part of the fix is for target_async implementations to make
sure to remove/unmark all target-related event sources from the event
loop.

Tested on x86_64 Fedora 20, native and gdbserver.

gdb/
2015-02-17  Pedro Alves  <palves@redhat.com>

	* event-loop.c (clear_async_event_handler): New function.
	* event-loop.h (clear_async_event_handler): New declaration.
	* record-btrace.c (record_btrace_async): New function.
	(init_record_btrace_ops): Install record_btrace_async.
	* record-full.c (record_full_async): New function.
	(record_full_resume): Don't mark the async event source here.
	(init_record_full_ops): Install record_full_async.
	(record_full_core_resume): Don't mark the async event source here.
	(init_record_full_core_ops): Install record_full_async.
	* remote.c (remote_async): Mark and clear the async stop reply
	queue event-loop token as appropriate.


             reply	other threads:[~2015-02-17 13:17 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-02-17 13:49 sergiodj [this message]
2015-02-17 13:58 ` Failures on Fedora-ppc64be-cc-with-index, " sergiodj
2015-02-17 14:21 ` Failures on Fedora-i686, " sergiodj
2015-02-17 14:26 ` Failures on Fedora-x86_64-native-extended-gdbserver-m32, " sergiodj
2015-02-17 14:42 ` Failures on Fedora-x86_64-native-extended-gdbserver-m64, " sergiodj
2015-02-17 14:57 ` Failures on Fedora-x86_64-native-gdbserver-m32, " sergiodj
2015-02-17 15:04 ` Failures on Fedora-x86_64-m64, " sergiodj
2015-02-17 15:16 ` Failures on Fedora-ppc64be-native-extended-gdbserver-m64, " sergiodj
2015-02-17 15:46 ` Failures on Fedora-ppc64le-native-extended-gdbserver-m64, " sergiodj
2015-02-17 16:21 ` Failures on Fedora-ppc64le-cc-with-index, " sergiodj
2015-02-17 16:28 ` Failures on Fedora-ppc64le-native-gdbserver-m64, " sergiodj
2015-02-17 17:00 ` Failures on Fedora-ppc64le-m64, " sergiodj
2015-02-17 17:07 ` Failures on Debian-i686-cc-with-index, " sergiodj
2015-02-17 17:52 ` Failures on Debian-x86_64-m64, " sergiodj
2015-02-17 18:27 ` Failures on Debian-i686-native-extended-gdbserver, " sergiodj
2015-02-17 18:43 ` Failures on Debian-x86_64-native-gdbserver-m64, " sergiodj

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=d4a0a1ff2b7f3d50180229768a270750ef94bbdf@kwanyin \
    --to=sergiodj@redhat.com \
    --cc=gdb-testers@sourceware.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).