diff options
author | Pedro Alves <palves@redhat.com> | 2016-08-09 22:45:39 +0100 |
---|---|---|
committer | Pedro Alves <palves@redhat.com> | 2016-08-09 22:45:39 +0100 |
commit | 80614914274f7166baea2ec656aec6a949869324 (patch) | |
tree | 578ffc027971448ebfc26cff9cf0283f050fd744 /gdb/infrun.c | |
parent | f348d89aeccaf3eb613e2f31a823baa64300bf88 (diff) | |
download | gdb-80614914274f7166baea2ec656aec6a949869324.zip gdb-80614914274f7166baea2ec656aec6a949869324.tar.gz gdb-80614914274f7166baea2ec656aec6a949869324.tar.bz2 |
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.
Diffstat (limited to 'gdb/infrun.c')
0 files changed, 0 insertions, 0 deletions