From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 32560 invoked by alias); 30 Aug 2002 00:41:25 -0000 Mailing-List: contact gdb-patches-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sources.redhat.com Received: (qmail 32553 invoked from network); 30 Aug 2002 00:41:24 -0000 Received: from unknown (HELO crack.them.org) (65.125.64.184) by sources.redhat.com with SMTP; 30 Aug 2002 00:41:24 -0000 Received: from nevyn.them.org ([66.93.61.169] ident=mail) by crack.them.org with asmtp (Exim 3.12 #1 (Debian)) id 17kan2-0006wO-00; Thu, 29 Aug 2002 20:41:36 -0500 Received: from drow by nevyn.them.org with local (Exim 3.35 #1 (Debian)) id 17kZru-0000P9-00; Thu, 29 Aug 2002 20:42:34 -0400 Date: Thu, 29 Aug 2002 18:58:00 -0000 From: Daniel Jacobowitz To: Michael Snyder Cc: Jim Blandy , gdb-patches@sources.redhat.com Subject: Re: [Jim Blandy ] Re: RFA: test GDB's ability to kill threaded programs that die messily Message-ID: <20020830004234.GA1540@nevyn.them.org> Mail-Followup-To: Michael Snyder , Jim Blandy , gdb-patches@sources.redhat.com References: <3D6EBCB4.B97D8DA3@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <3D6EBCB4.B97D8DA3@redhat.com> User-Agent: Mutt/1.5.1i X-SW-Source: 2002-08/txt/msg01023.txt.bz2 On Thu, Aug 29, 2002 at 05:30:44PM -0700, Michael Snyder wrote: > Jim Blandy wrote: > > > > Okay --- I've committed the portable thread compilation support that > > this patch depends on. May I commit this test? > > The test is fine. But I missed the fix. Has a fix been committed? > If you wouldn't mind, could you give me a pointer? I don't think there is a fix; this test is related to the same PR as my ugly warning workaround. > > > > > ------------------------------------------------------------------------ > > > > Subject: Re: RFA: test GDB's ability to kill threaded programs that die messily > > Date: 13 Jun 2002 12:48:28 -0500 > > From: Jim Blandy > > To: Michael Snyder > > CC: gdb-patches@sources.redhat.com > > References: <20020612201556.978BE5EA11@zwingli.cygnus.com> > > <3D07CB54.8E7BA834@redhat.com> > > <3D07EE1A.FF4B4B83@redhat.com> > > > > Michael Snyder writes: > > > Jim Blandy wrote: > > > > Michael Snyder writes: > > > > > Jim Blandy wrote: > > > > > > > > > > > > This tests the bug reported in gdb/568. > > > > > > > > > > > > 2002-06-12 Jim Blandy > > > > > > > > > > > > * gdb.threads/killed.exp, gdb.threads/killed.c: New test. > > > > > > > > > > Why run it only on linux? It might pass perfectly well on other > > > > > systems -- and if not, it's a bug there too, which we might want > > > > > to know. > > > > > > > > Definitely. I thought the link process (-lpthread) was linux-only. > > > > Can we write portable code in the test suite that builds > > > > multi-threaded programs? > > > > > > We already have -- see pthread.exp > > > > Here's a revision of the patch, which uses the gdb_compile_pthreads > > function introduced by the last patch I posted ("RFA: abstract out > > thread compilation code"). It no longer refuses to run on anything > > but Linux. > > > > 2002-06-12 Jim Blandy > > > > * gdb.threads/killed.exp, gdb.threads/killed.c: New test. > > > > Index: gdb/testsuite/gdb.threads/killed.exp > > =================================================================== > > RCS file: gdb/testsuite/gdb.threads/killed.exp > > diff -N gdb/testsuite/gdb.threads/killed.exp > > *** gdb/testsuite/gdb.threads/killed.exp 1 Jan 1970 00:00:00 -0000 > > --- gdb/testsuite/gdb.threads/killed.exp 13 Jun 2002 17:46:54 -0000 > > *************** > > *** 0 **** > > --- 1,97 ---- > > + # Copyright 2002 Free Software Foundation, Inc. > > + > > + # This program is free software; you can redistribute it and/or modify > > + # it under the terms of the GNU General Public License as published by > > + # the Free Software Foundation; either version 2 of the License, or > > + # (at your option) any later version. > > + # > > + # This program is distributed in the hope that it will be useful, > > + # but WITHOUT ANY WARRANTY; without even the implied warranty of > > + # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the > > + # GNU General Public License for more details. > > + # > > + # You should have received a copy of the GNU General Public License > > + # along with this program; if not, write to the Free Software > > + # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. > > + > > + # Please email any bugs, comments, and/or additions to this file to: > > + # bug-gdb@gnu.org > > + > > + # This is a regression test for gdb/568 in the sources.redhat.com > > + # GNATS database. As of early June 2002, GDB could get sort of wedged > > + # debugging the program `killed.c': > > + # > > + # $ $D6/gdb/gdb -nw killed > > + # GNU gdb 2002-06-11-cvs > > + # Copyright 2002 Free Software Foundation, Inc. > > + # GDB is free software, covered by the GNU General Public License, and you are > > + # welcome to change it and/or distribute copies of it under certain conditions. > > + # Type "show copying" to see the conditions. > > + # There is absolutely no warranty for GDB. Type "show warranty" for details. > > + # This GDB was configured as "i686-pc-linux-gnu"... > > + # (gdb) run > > + # Starting program: /home/jimb/morganstanley/play/killed > > + # [New Thread 1024 (LWP 6487)] > > + # [New Thread 2049 (LWP 6488)] > > + # [New Thread 1026 (LWP 6489)] > > + # Cannot find user-level thread for LWP 6487: generic error > > + # (gdb) quit > > + # The program is running. Exit anyway? (y or n) y > > + # Cannot find thread 2049: generic error > > + # (gdb) kill > > + # Kill the program being debugged? (y or n) y > > + # Cannot find thread 2049: generic error > > + # (gdb) The program is running. Exit anyway? (y or n) y > > + # Cannot find thread 2049: generic error > > + # (gdb) > > + # [7]+ Stopped $D6/gdb/gdb -nw killed > > + # $ kill %7 > > + # > > + # [7]+ Stopped $D6/gdb/gdb -nw killed > > + # $ kill -9 %7 > > + # > > + # [7]+ Stopped $D6/gdb/gdb -nw killed > > + # $ > > + # [7]+ Killed $D6/gdb/gdb -nw killed > > + # $ > > + > > + if $tracelevel then { > > + strace $tracelevel > > + } > > + > > + set prms_id 0 > > + set bug_id 0 > > + > > + set testfile "killed" > > + set srcfile ${testfile}.c > > + set binfile ${objdir}/${subdir}/${testfile} > > + > > + if {[gdb_compile_pthreads "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable [list debug "incdir=${objdir}/${subdir}"]] != "" } { > > + gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail." > > + } > > + > > + > > + gdb_start > > + gdb_reinitialize_dir $srcdir/$subdir > > + gdb_load ${binfile} > > + > > + gdb_test "run" "" "run program to completion" > > + > > + # Try to quit. > > + send_gdb "quit\n" > > + gdb_expect { > > + -re "The program is running. Exit anyway\\? \\(y or n\\) $" { > > + send_gdb "y\n" > > + exp_continue > > + } > > + eof { > > + pass "GDB exits after multi-threaded program exits messily" > > + } > > + -re "Cannot find thread ${decimal}: generic error\[\r\n\]*$gdb_prompt $" { > > + # setup_kfail "gdb/568" > > + fail "GDB exits after multi-threaded program exits messily (gdb/568)" > > + } > > + timeout { > > + fail "GDB exits after multi-threaded program exits messily (timeout)" > > + } > > + } > > Index: gdb/testsuite/gdb.threads/killed.c > > =================================================================== > > RCS file: gdb/testsuite/gdb.threads/killed.c > > diff -N gdb/testsuite/gdb.threads/killed.c > > *** gdb/testsuite/gdb.threads/killed.c 1 Jan 1970 00:00:00 -0000 > > --- gdb/testsuite/gdb.threads/killed.c 13 Jun 2002 17:46:54 -0000 > > *************** > > *** 0 **** > > --- 1,24 ---- > > + #include > > + #include > > + #include > > + #include > > + > > + int pid; > > + > > + void * > > + child_func (void *dummy) > > + { > > + kill (pid, SIGKILL); > > + exit (1); > > + } > > + > > + int > > + main () > > + { > > + pthread_t child; > > + > > + pid = getpid (); > > + pthread_create (&child, 0, child_func, 0); > > + for (;;) > > + sleep (10000); > > + } > -- Daniel Jacobowitz MontaVista Software Debian GNU/Linux Developer