Bug 12647 - racy: gdb.mi/ must not use gdb_test_multiple
Summary: racy: gdb.mi/ must not use gdb_test_multiple
Status: REOPENED
Alias: None
Product: gdb
Classification: Unclassified
Component: testsuite (show other bugs)
Version: HEAD
: P2 normal
Target Milestone: ---
Assignee: Not yet assigned to anyone
URL:
Keywords:
Depends on: 12649
Blocks:
  Show dependency treegraph
 
Reported: 2011-04-07 05:14 UTC by Jan Kratochvil
Modified: 2011-05-05 18:18 UTC (History)
2 users (show)

See Also:
Host:
Target:
Build:
Last reconfirmed:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Jan Kratochvil 2011-04-07 05:14:58 UTC
gdb_test_multiple contains
         -re "\r\n$gdb_prompt $" {
            if ![string match "" $message] then {
                fail "$message"

but this may falsely match an unfinished output expected to be matched by:
    gdb_test_multiple "-environment-path" "-environment-path" {
        -re "\\\^done,path=\"\(.*\)\"\r\n$mi_gdb_prompt" {

as mi_gdb_prompt is (without the angle brackets, ^M as \r\n delimiter):
<[(]gdb[)] ^M
>
while gdb_prompt is (without the angle brackets):
<\(gdb\)>

Unfortunately there ar 23 uses of gdb_test_multiple in gdb.mi/*.exp.

 PASS: gdb.mi/mi2-basics.exp: environment-pwd operation
 -environment-path^M
 ^done,path="/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin"^M
-(gdb) ^M
+(gdb) FAIL: gdb.mi/mi2-basics.exp: -environment-path
 Expecting: ^(207-environment-path[^M
 ]+)?(207\^done,path="/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin"[^M
 ]+[(]gdb[)] ^M
 [ ]*)
+^M
 207-environment-path^M
 207^done,path="/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin"^M
 (gdb) ^M
-PASS: gdb.mi/mi2-basics.exp: environment-path no-args operation
+FAIL: gdb.mi/mi2-basics.exp: environment-path no-args operation
Comment 1 Jan Kratochvil 2011-04-07 08:16:10 UTC
This is only a special case of the general PR testsuite/12649.

*** This bug has been marked as a duplicate of bug 12649 ***
Comment 2 Pedro Alves 2011-04-07 10:31:07 UTC
Plus, gdb_test_multiple is tied to CLI's output internally.
The fact that it works most of the time appears only to be a fortunate
accident.  Should we have an mi_gdb_test_multiple instead?  Either
that, or I think we should consider reverting all gdb_test_multiple
uses under gdb.mi/ back to send_gdb/gdb_test.  They were added not
that long ago.  The original patch:

<http://sourceware.org/ml/gdb-patches/2010-05/msg00586.html>
Comment 3 Pedro Alves 2011-04-07 10:32:03 UTC
I think using gdb_test_multiple in MI test hides more than testsuite/12649.