public inbox for gdb-testers@sourceware.org
help / color / mirror / Atom feed
* [binutils-gdb] new-ui command: gdb internal errors if input is already pending
@ 2016-09-07  7:09 sergiodj+buildbot
  2016-09-07  7:12 ` Failures on Fedora-x86_64-native-gdbserver-m32, branch master sergiodj+buildbot
                   ` (15 more replies)
  0 siblings, 16 replies; 17+ messages in thread
From: sergiodj+buildbot @ 2016-09-07  7:09 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 4295e285efa8193504ee08b9f633d9f8680bf181 ***

Author: Pedro Alves <palves@redhat.com>
Branch: master
Commit: 4295e285efa8193504ee08b9f633d9f8680bf181

new-ui command: gdb internal errors if input is already pending

I noticed that if input is already pending on the new-ui TTY, gdb
internal-errors.

E.g., create /dev/pts/2, and type anything there (even just <return>
is sufficient).

Now start GDB creating a new UI on that TTY, while at the same time,
running a synchronous execution command.  Something like:

$ gdb program -ex "new-ui console /dev/pts/2" -ex "start"

Back on /dev/pts/2, we get:

  (gdb) .../src/gdb/event-top.c:360: internal-error: double prompt
  A problem internal to GDB has been detected,
  further debugging may prove unreliable.

While the main UI was waiting for "start" to finish, gdb kepts pumping
events, including the input fd of the extra console.  The problem is
that stdin_event_handler doesn't restore the current UI back to what
it was, assuming that it's only ever called from the top level event
loop.  However, in this case, it's being called from the nested event
loop from within maybe_wait_sync_command_done.

When finally the "start" command is done, we reach the code that
prints the prompt in the main UI, just before starting the main event
loop.  Since now the current UI is pointing at the extra console (by
mistake), we find ourselves printing a double prompt on the extra
console.  This is caught by the assertion that fails, as shown above.

Since other event handlers also don't restore the UI (e.g., signal
event handlers), I think it's better if whatever is pumping events to
take care to restore the UI, if it cares.  That's what this patch
does.  New test included.

gdb/ChangeLog:
2016-09-06  Pedro Alves  <palves@redhat.com>

	* top.c (wait_sync_command_done): Don't assume current_ui doesn't
	change across events.  Restore the current UI before returning.
	(gdb_readline_wrapper): Restore the current UI before returning.

gdb/testsuite/ChangeLog:
2016-09-06  Pedro Alves  <palves@redhat.com>

	* gdb.base/new-ui-pending-input.c: New file.
	* gdb.base/new-ui-pending-input.exp: New file.
	* gdb.exp (clear_gdb_spawn_id): New procedure.
	(with_spawn_id): Check whether gdb_spawn_id exists before
	referencing it.  If gdb_spawn_id didn't exist on entry, clear it
	on exit.


^ permalink raw reply	[flat|nested] 17+ messages in thread

end of thread, other threads:[~2016-09-08  2:33 UTC | newest]

Thread overview: 17+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-09-07  7:09 [binutils-gdb] new-ui command: gdb internal errors if input is already pending sergiodj+buildbot
2016-09-07  7:12 ` Failures on Fedora-x86_64-native-gdbserver-m32, branch master sergiodj+buildbot
2016-09-07  7:25 ` Failures on Fedora-x86_64-native-gdbserver-m64, " sergiodj+buildbot
2016-09-07  7:46 ` Failures on Fedora-x86_64-native-extended-gdbserver-m64, " sergiodj+buildbot
2016-09-07 12:34 ` Failures on Ubuntu-AArch64-native-gdbserver-m64, " sergiodj+buildbot
2016-09-07 16:19 ` Failures on Fedora-s390x-m64, " sergiodj+buildbot
2016-09-07 17:29 ` Failures on Debian-s390x-native-gdbserver-m64, " sergiodj+buildbot
2016-09-07 17:48 ` Failures on Debian-s390x-native-extended-gdbserver-m64, " sergiodj+buildbot
2016-09-07 18:13 ` Failures on Debian-i686, " sergiodj+buildbot
2016-09-07 19:16 ` Failures on Debian-i686-native-extended-gdbserver, " sergiodj+buildbot
2016-09-07 20:38 ` Failures on Debian-x86_64-native-extended-gdbserver-m64, " sergiodj+buildbot
2016-09-08 22:44 ` Failures on Fedora-ppc64be-m64, " sergiodj+buildbot
2016-09-08 22:59 ` Failures on Fedora-ppc64be-native-gdbserver-m64, " sergiodj+buildbot
2016-09-08 23:06 ` Failures on Fedora-ppc64be-native-extended-gdbserver-m64, " sergiodj+buildbot
2016-09-09 18:17 ` Failures on Fedora-ppc64be-cc-with-index, " sergiodj+buildbot
2016-09-09 19:27 ` Failures on Fedora-ppc64le-native-extended-gdbserver-m64, " sergiodj+buildbot
2016-09-09 19:47 ` Failures on Fedora-ppc64le-native-gdbserver-m64, " sergiodj+buildbot

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).