This is the mail archive of the gdb-prs@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug gdb/19828] 7.11 regression: non-stop gdb -p <process from a container>: internal error


https://sourceware.org/bugzilla/show_bug.cgi?id=19828

--- Comment #1 from cvs-commit at gcc dot gnu.org <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Pedro Alves <palves@sourceware.org>:

https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=651ce16aa7c2bd5e9f634e91e73790dc3e01a5c0

commit 651ce16aa7c2bd5e9f634e91e73790dc3e01a5c0
Author: Pedro Alves <palves@redhat.com>
Date:   Tue Apr 12 16:49:32 2016 +0100

    Do target_terminal_ours in query & friends instead of in all callers

    Any time a caller calls query & friends / prompt_for_continue without
    ensuring that gdb owns the terminal for input is a bug.  So do that in
    defaulted_query / prompt_for_continue directly instead.

    An example of a case where we currently miss calling
    target_terminal_ours is internal_error.  Ever since defaulted_query
    was made to use gdb_readline_callback, there's no way to answer the
    internal error query if the internal error happens while the target is
    has the terminal:

      (gdb) c
      Continuing.
      .../src/gdb/linux-nat.c:1676: internal-error: linux_nat_resume: Assertion
`dummy_counter < 10' failed.
      A problem internal to GDB has been detected,
      further debugging may prove unreliable.
      Quit this debugging session? (y or n) _

    Entering 'y' or 'n' does not work, GDB does not respond.

    gdb/ChangeLog:
    2016-04-12  Pedro Alves  <palves@redhat.com>

        PR gdb/19828
        * gnu-nat.c (inf_validate_task_sc): Don't call
        target_terminal_ours / target_terminal_inferior around query.
        * i386-tdep.c (i386_record_lea_modrm, i386_process_record): Don't
        call target_terminal_ours / target_terminal_inferior around
        yquery.
        * linux-record.c (record_linux_system_call): Don't call
        target_terminal_ours / target_terminal_inferior around yquery.
        * nto-procfs.c (interrupt_query): Don't call target_terminal_ours
        / target_terminal_inferior around query.
        * record-full.c (record_full_check_insn_num): Remove
        'set_terminal' parameter.  Don't call target_terminal_ours /
        target_terminal_inferior around query.
        (record_full_message, record_full_registers_change)
        (record_full_xfer_partial): Adjust.
        * remote.c (interrupt_query): Don't call target_terminal_ours /
        target_terminal_inferior around query.
        * utils.c (defaulted_query): Install cleanup to restore target
        terminal.  Put target_terminal_ours_for_output in effect while
        defaulted producing, and target_terminal_ours in in effect while
        handling input.
        (prompt_for_continue): Install cleanup to restore target terminal.
        Put target_terminal_ours in in effect while handling input.

-- 
You are receiving this mail because:
You are on the CC list for the bug.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]