public inbox for gdb-prs@sourceware.org help / color / mirror / Atom feed
From: "cvs-commit at gcc dot gnu.org" <sourceware-bugzilla@sourceware.org> To: gdb-prs@sourceware.org Subject: [Bug python/17372] python hangs when displaying help() Date: Wed, 29 Oct 2014 18:15:00 -0000 [thread overview] Message-ID: <bug-17372-4717-oGM6A4TpK7@http.sourceware.org/bugzilla/> (raw) In-Reply-To: <bug-17372-4717@http.sourceware.org/bugzilla/> https://sourceware.org/bugzilla/show_bug.cgi?id=17372 --- Comment #5 from cvs-commit at gcc dot gnu.org <cvs-commit at gcc dot gnu.org> --- This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "gdb and binutils". The branch, gdb-7.8-branch has been updated via cbd6f6bf80881be4628622e369baafb337589578 (commit) from c9792faa1e25cb54edf55ffce93582370c99e4ac (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=cbd6f6bf80881be4628622e369baafb337589578 commit cbd6f6bf80881be4628622e369baafb337589578 Author: Pedro Alves <palves@redhat.com> Date: Thu Oct 23 17:13:35 2014 +0100 PR python/17372 - Python hangs when displaying help() This is more of a readline/terminal issue than a Python one. PR17372 is a regression in 7.8 caused by the fix for PR17072: commit 0017922d0292d8c374584f6100874580659c9973 Author: Pedro Alves <palves@redhat.com> Date: Mon Jul 14 19:55:32 2014 +0100 Background execution + pagination aborts readline/gdb gdb_readline_wrapper_line removes the handler after a line is processed. Usually, we'll end up re-displaying the prompt, and that reinstalls the handler. But if the output is coming out of handling a stop event, we don't re-display the prompt, and nothing restores the handler. So the next input wakes up the event loop and calls into readline, which aborts. ... gdb/ 2014-07-14 Pedro Alves <palves@redhat.com> PR gdb/17072 * top.c (gdb_readline_wrapper_line): Tweak comment. (gdb_readline_wrapper_cleanup): If readline is enabled, reinstall the input handler callback. The problem is that installing the input handler callback also preps the terminal, putting it in raw mode and with echo disabled, which is bad if we're going to call a command that assumes cooked/canonical mode, and echo enabled, like in the case of the PR, Python's interactive shell. Another example I came up with that doesn't depend on Python is starting a subshell with "(gdb) shell /bin/sh" from a multi-line command. Tests covering both these examples are added. The fix is to revert the original fix for PR gdb/17072, and instead restore the callback handler after processing an asynchronous target event. Furthermore, calling rl_callback_handler_install when we already have some input in readline's line buffer discards that input, which is obviously a bad thing to do while the user is typing. No specific test is added for that, because I first tried calling it even if the callback handler was still installed and that resulted in hundreds of failures in the testsuite. gdb/ 2014-10-29 Pedro Alves <palves@redhat.com> PR python/17372 * event-top.c (change_line_handler): Call gdb_rl_callback_handler_remove instead of rl_callback_handler_remove. (callback_handler_installed): New global. (gdb_rl_callback_handler_remove, gdb_rl_callback_handler_install) (gdb_rl_callback_handler_reinstall): New functions. (display_gdb_prompt): Call gdb_rl_callback_handler_remove and gdb_rl_callback_handler_install instead of rl_callback_handler_remove and rl_callback_handler_install. (gdb_disable_readline): Call gdb_rl_callback_handler_remove instead of rl_callback_handler_remove. * event-top.h (gdb_rl_callback_handler_remove) (gdb_rl_callback_handler_install) (gdb_rl_callback_handler_reinstall): New declarations. * infrun.c (reinstall_readline_callback_handler_cleanup): New cleanup function. (fetch_inferior_event): Install it. * top.c (gdb_readline_wrapper_line) Call gdb_rl_callback_handler_remove instead of rl_callback_handler_remove. (gdb_readline_wrapper_cleanup): Don't call rl_callback_handler_install. gdb/testsuite/ 2014-10-29 Pedro Alves <palves@redhat.com> PR python/17372 * gdb.python/python.exp: Test a multi-line command that spawns interactive Python. * gdb.base/multi-line-starts-subshell.exp: New file. ----------------------------------------------------------------------- Summary of changes: gdb/ChangeLog | 26 ++++++++ gdb/event-top.c | 61 ++++++++++++++++++-- gdb/event-top.h | 11 ++++ gdb/infrun.c | 20 +++++++ gdb/testsuite/ChangeLog | 7 ++ .../gdb.base/multi-line-starts-subshell.exp | 55 ++++++++++++++++++ gdb/testsuite/gdb.python/python.exp | 16 +++++ gdb/top.c | 19 ++++-- 8 files changed, 204 insertions(+), 11 deletions(-) create mode 100644 gdb/testsuite/gdb.base/multi-line-starts-subshell.exp -- You are receiving this mail because: You are on the CC list for the bug.
next prev parent reply other threads:[~2014-10-29 18:15 UTC|newest] Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top 2014-09-11 9:02 [Bug python/17372] New: " serge.chatroux at st dot com 2014-09-11 9:03 ` [Bug python/17372] " serge.chatroux at st dot com 2014-09-13 0:05 ` sergiodj at redhat dot com 2014-10-23 11:58 ` palves at redhat dot com 2014-10-24 12:06 ` palves at redhat dot com 2014-10-29 17:33 ` cvs-commit at gcc dot gnu.org 2014-10-29 18:15 ` cvs-commit at gcc dot gnu.org [this message] 2014-10-29 18:33 ` palves at redhat dot com 2014-10-29 19:48 ` cvs-commit at gcc dot gnu.org 2014-12-25 0:46 ` cvs-commit at gcc dot gnu.org 2015-01-14 12:38 ` cvs-commit at gcc dot gnu.org 2015-01-14 12:43 ` cvs-commit at gcc dot gnu.org 2015-01-14 13:18 ` cvs-commit at gcc dot gnu.org 2021-10-21 6:51 ` bap.fayol at gmail dot com 2021-11-09 8:33 ` johnsjvi95 at gmail dot com
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=bug-17372-4717-oGM6A4TpK7@http.sourceware.org/bugzilla/ \ --to=sourceware-bugzilla@sourceware.org \ --cc=gdb-prs@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: linkBe 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).