[review,gdb/testsuite] Add note to 'Race detection' entry in README

Message ID gerrit.1580725026000.I12ef2f0ec35abc5a0221585bf30e5f4f0616aa7c@gnutoolchain-gerrit.osci.io
State New, archived
Headers

Commit Message

Simon Marchi (Code Review) Feb. 3, 2020, 10:17 a.m. UTC
  Change URL: https://gnutoolchain-gerrit.osci.io/r/c/binutils-gdb/+/762
......................................................................

[gdb/testsuite] Add note to 'Race detection' entry in README

Add note to 'Race detection' entry in README about the possibility that
check-read1 makes failing tests pass.

gdb/testsuite/ChangeLog:

2020-02-03  Tom de Vries  <tdevries@suse.de>

	* README (Race detection): Add note.

Change-Id: I12ef2f0ec35abc5a0221585bf30e5f4f0616aa7c
---
M gdb/testsuite/README
1 file changed, 7 insertions(+), 0 deletions(-)
  

Comments

Simon Marchi (Code Review) Feb. 4, 2020, 5:36 a.m. UTC | #1
Simon Marchi has posted comments on this change.

Change URL: https://gnutoolchain-gerrit.osci.io/r/c/binutils-gdb/+/762
......................................................................


Patch Set 1:

Out of curiosity, do you have an example of this?  Surely, you must have experienced a concrete case of this happening :)
  
Simon Marchi (Code Review) Feb. 4, 2020, 10:10 a.m. UTC | #2
Tom de Vries has posted comments on this change.

Change URL: https://gnutoolchain-gerrit.osci.io/r/c/binutils-gdb/+/762
......................................................................


Patch Set 1:

> Patch Set 1:
> 
> Out of curiosity, do you have an example of this?  Surely, you must have experienced a concrete case of this happening :)

I ran into this while working on https://gnutoolchain-gerrit.osci.io/r/c/binutils-gdb/+/133 , where I would try to match:
...
[Inferior 1 exited ... ]^M
(gdb) [Inferior 2 exited ... ]^M
...

An easier way to reproduce this is:
...
$ cat gdb/testsuite/gdb.base/check-read1.c
#include <stdio.h>

int
main (void)
{
  printf ("hello\n");
  return 0;
}
...
and:
...
$ cat gdb/testsuite/gdb.base/check-read1.exp
standard_testfile

if {[prepare_for_testing "failed to prepare" $testfile $srcfile debug]} {
    return -1
}

if ![runto_main] then {
    fail "can't run to main"
    return 0
}

gdb_test "continue &"
...

Where with make check we have:
...
Running src/gdb/testsuite/gdb.base/check-read1.exp ...
FAIL: gdb.base/check-read1.exp: continue & (timeout)

                === gdb Summary ===

# of unexpected failures        1
...
but with make check-read1 we have:
...
Running src/gdb/testsuite/gdb.base/check-read1.exp ...

                === gdb Summary ===

# of expected passes            1
...
  
Simon Marchi (Code Review) Feb. 4, 2020, 2:25 p.m. UTC | #3
Simon Marchi has posted comments on this change.

Change URL: https://gnutoolchain-gerrit.osci.io/r/c/binutils-gdb/+/762
......................................................................


Patch Set 1: Code-Review+2

Ok, thanks.  It's not the usual case that GDB prints things after the prompt, but I think it's good to mention it anyway.
  

Patch

diff --git a/gdb/testsuite/README b/gdb/testsuite/README
index 4795df1..3e42526 100644
--- a/gdb/testsuite/README
+++ b/gdb/testsuite/README
@@ -352,6 +352,13 @@ 
 	make -j10 check-read1 TESTS="*/paginate-*.exp"
 	make -j10 check READ1="1"
 
+Note: While the intention is to detect races and make otherwise passing tests
+fail, it can also have the effect of making otherwise failing tests pass.
+This happens f.i. if the test is trying to match a gdb prompt using an end of
+input marker "${gdb_prompt} $" and there is output after the gdb prompt.  This
+may either pass or fail in normal operation, but using check-read1 will ensure
+that it passes.
+
 Testsuite Configuration
 ***********************