From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 8202 invoked by alias); 30 Jun 2009 19:36:50 -0000 Received: (qmail 8188 invoked by uid 22791); 30 Jun 2009 19:36:49 -0000 X-SWARE-Spam-Status: No, hits=-2.4 required=5.0 tests=AWL,BAYES_00,SPF_PASS X-Spam-Check-By: sourceware.org Received: from mail.codesourcery.com (HELO mail.codesourcery.com) (65.74.133.4) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Tue, 30 Jun 2009 19:36:44 +0000 Received: (qmail 8612 invoked from network); 30 Jun 2009 19:36:41 -0000 Received: from unknown (HELO orlando.local) (pedro@127.0.0.2) by mail.codesourcery.com with ESMTPA; 30 Jun 2009 19:36:41 -0000 From: Pedro Alves To: gdb-patches@sourceware.org Subject: Re: [patch] testsuite: Fix racy gdb.mi/mi-nsthrexec.exp FAIL Date: Tue, 30 Jun 2009 19:36:00 -0000 User-Agent: KMail/1.9.10 Cc: Jan Kratochvil References: <20090630182334.GA30261@host0.dyn.jankratochvil.net> In-Reply-To: <20090630182334.GA30261@host0.dyn.jankratochvil.net> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200906302037.51187.pedro@codesourcery.com> X-IsSubscribed: yes Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2009-06/txt/msg00887.txt.bz2 On Tuesday 30 June 2009 19:23:34, Jan Kratochvil wrote: > @@ -59880,10 +59843,9 @@ Expecting: ^(-thread-info[ > ]+[(]gdb[)] > [ ]*) > -thread-info > -~"Current language: auto; currently asm\n" Usually, I'd like to understand what causes these racy issues, or where the output is being produced, since these issues can easily be caused by real bug. Non-stop is naturally harder to test. This must be from the language_info call in inf-loop.c, that is always called when something stops. In light of non-stop mode, this is a weird place to output this (and to change expected language) --- the thread that just stopped may not be the current thread. To be clear, I'm not expecting you to fix it, just pointing it out. :-) > -^done,threads=[{id="2",target-id="Thread 0x7f2462b8d910 (LWP 9535)",frame={level="0",addr="0x0000000000400668",func="thread_execler",args=[{name="arg",value="0x0"}],file="../.././gdb/testsuite/gdb.mi/nsthrexec.c",fullname="/home/jkratoch/redhat/gdb-master/gdb/testsuite/gdb.mi/nsthrexec.c",line="28"},state="stopped"},{id="1",target-id="Thread 0x7f24635a56f0 (LWP 9296)",frame={level="0",addr="0x00007f246318da7f",func="__lll_unlock_wake_private",args=[],file="../nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S",fullname="/usr/src/debug/glibc-20090510T1842/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S",line="336"},state="stopped"}],current-thread-id="1" > +^done,threads=[{id="2",target-id="Thread 0x7f327a926910 (LWP 14350)",frame={level="0",addr="0x0000000000400668",func="thread_execler",args=[{name="arg",value="0x0"}],file="../.././gdb/testsuite/gdb.mi/nsthrexec.c",fullname="/home/jkratoch/redhat/gdb-master/gdb/testsuite/gdb.mi/nsthrexec.c",line="28"},state="stopped"},{id="1",target-id="Thread 0x7f327b33e6f0 (LWP 14301)",frame={level="0",addr="0x00007f327af20b0d",func="pthread_join",args=[{name="threadid",value="139854781507856"},{name="thread_return",value="0x0"}],file="pthread_join.c",fullname="/usr/src/debug/glibc-20090510T1842/nptl/pthread_join.c",line="89"},state="stopped"}],current-thread-id="1" > (gdb) > -FAIL: gdb.mi/mi-nsthrexec.exp: thread state, all stopped > +PASS: gdb.mi/mi-nsthrexec.exp: thread state, all stopped > 102-break-delete > 102^done > (gdb) > the general .* match just aligns the function to existing get_mi_thread_list or > check_mi_and_console_threads expect strings. A parenthesis just to raise global awareness, not really applicable to your case: In general, this is not a good argument for non-stop mode testsuite patches. Other testsuite code may be using racy .*'s simply because it is not being exercised in non-stop mode (we had to remove a bunch of those before, tightening the expected strings up), which naturally is more susceptible to racy issues, but also due to the fact that in many cases there's no prompt to firmly pedal on. In this case, we do want to ignore any previous output though. So... > gdb/testsuite/ > 2009-06-30 Jan Kratochvil > > * lib/mi-support.exp (mi_check_thread_states): Permit any output before > the expected result record. ... Ok. -- Pedro Alves