Patchwork gdb: Unset PROMPT_COMMAND before testing

login
register
mail settings
Submitter Andrew Burgess
Date June 16, 2017, 11:12 p.m.
Message ID <20170616231210.14867-1-andrew.burgess@embecosm.com>
Download mbox | patch
Permalink /patch/21059/
State New
Headers show

Comments

Andrew Burgess - June 16, 2017, 11:12 p.m.
One of the GDB tests starts up a sub-shell and runs a few commands in
it.  In some cases, a users PROMPT_COMMAND might not work in the
sub-shell GDB starts, which could cause the shell to emit unexpected
warnings or errors, this in turn could cause tests to fail.

The current example is gdb.base/batch-preserve-term-settings.exp, but
there could be others in the future.

I don't see any regressions with this patch, but I do now see 5
additional passes on gdb.base/batch-preserve-term-settings.exp.

OK to apply?

Thanks,
Andrew

---

gdb/testsuite/ChangeLog:

	* lib/gdb.exp (gdb_init): Unset PROMPT_COMMAND.
---
 gdb/testsuite/ChangeLog   | 4 ++++
 gdb/testsuite/lib/gdb.exp | 5 +++++
 2 files changed, 9 insertions(+)
Yao Qi - June 22, 2017, 10:12 a.m.
Andrew Burgess <andrew.burgess@embecosm.com> writes:

> One of the GDB tests starts up a sub-shell and runs a few commands in
> it.  In some cases, a users PROMPT_COMMAND might not work in the
> sub-shell GDB starts, which could cause the shell to emit unexpected
> warnings or errors, this in turn could cause tests to fail.

What is the concrete output in your case?

>
> The current example is gdb.base/batch-preserve-term-settings.exp, but
> there could be others in the future.
>
> I don't see any regressions with this patch, but I do now see 5
> additional passes on gdb.base/batch-preserve-term-settings.exp.

This patch sets the env for build rather than host, so it doesn't help
in remote host.  Note that I don't think DejaGNU can set env in remote.
Andrew Burgess - June 22, 2017, 7:14 p.m.
* Yao Qi <qiyaoltc@gmail.com> [2017-06-22 11:12:02 +0100]:

> Andrew Burgess <andrew.burgess@embecosm.com> writes:
> 
> > One of the GDB tests starts up a sub-shell and runs a few commands in
> > it.  In some cases, a users PROMPT_COMMAND might not work in the
> > sub-shell GDB starts, which could cause the shell to emit unexpected
> > warnings or errors, this in turn could cause tests to fail.
> 
> What is the concrete output in your case?
> 
> >
> > The current example is gdb.base/batch-preserve-term-settings.exp, but
> > there could be others in the future.
> >
> > I don't see any regressions with this patch, but I do now see 5
> > additional passes on gdb.base/batch-preserve-term-settings.exp.
> 
> This patch sets the env for build rather than host, so it doesn't help
> in remote host.  Note that I don't think DejaGNU can set env in remote.

Thank you for taking the time to look at this patch, but after reading
your feedback and further consideration I now realise that this issue
should really be fixed at my end.

Apologies for wasting your time, and the mailing list noise.

Thanks,
Andrew

Patch

diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp
index a74f97465e..053bc65e09 100644
--- a/gdb/testsuite/lib/gdb.exp
+++ b/gdb/testsuite/lib/gdb.exp
@@ -4626,6 +4626,11 @@  proc gdb_init { test_file_name } {
     # especially having color output turned on can cause tests to fail.
     setenv GREP_OPTIONS ""
 
+    # Some tests run a shell.  If a user has PROMPT_COMMAND set then
+    # there's no guarantee that what it's set to will work correctly
+    # within the sub-shells we run.  For safety clear it.
+    setenv PROMPT_COMMAND ""
+
     # Clear $gdbserver_reconnect_p.
     global gdbserver_reconnect_p
     set gdbserver_reconnect_p 1