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 mi/20431] Missing MI prompts after sync execution MI command (-exec-continue, etc.) errors


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

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

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

commit 4d38db46f6f6480ee33844164383ce40e5fc2440
Author: Pedro Alves <palves@redhat.com>
Date:   Tue Aug 9 22:52:46 2016 +0100

    Fix PR mi/20431 - Missing MI prompts after sync execution MI command
(-exec-continue, etc.) errors

    gdb 7.11 introduced an MI regression: a failing MI sync execution
    command misses printing the MI prompt, and then all subsequent command
    miss it too:

     $ gdb-7.11.1 -i=mi
     [...]
     p 1
     &"p 1\n"
     ~"$1 = 1"
     ~"\n"
     ^done
     (gdb)                                        <<< prompted ok
     -exec-continue
     ^error,msg="The program is not being run."   <<< missing prompt after this
     print 1
     &"print 1\n"
     ~"$2 = 1"
     ~"\n"
     ^done                                        <<< missing prompt after this


    gdb 7.10.1 behaved correctly, even with "set mi-async on":

     -exec-continue
     ^error,msg="The program is not being run."
     (gdb)                                        <<< prompted ok

    etc.

    Bisecting points at:

      commit 0b333c5e7d6c
      Author: Pedro Alves <palves@redhat.com>
      Date:   Wed Sep 9 18:23:23 2015 +0100

          Merge async and sync code paths some more
      [...]

    The problem is that when an exception is thrown, we leave the prompt
    state set to PROMPT_BLOCKED, and then mi_execute_command_input_handler
    doesn't print the prompt.  It used to work because before that patch,
    we happened to skip disabling stdin if the current target didn't do
    async (which it never does before execution).

    I was surprised to find that this bug isn't caught by the testsuite,
    so I made a thorough test that tests all combinations of pairs of:

     - a failing synchronous execution command
     - a failing non-execution command
     - a non-failing command

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

        PR mi/20431
        * mi/mi-main.c (mi_execute_command): Enable input and set prompt
        state to PROMPT_NEEDED.

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

        PR mi/20431
        * gdb.mi/mi-cmd-error.exp: New file.

-- 
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]