From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 6644 invoked by alias); 12 Apr 2011 10:59:11 -0000 Received: (qmail 6636 invoked by uid 22791); 12 Apr 2011 10:59:10 -0000 X-SWARE-Spam-Status: No, hits=-1.9 required=5.0 tests=AWL,BAYES_00,T_RP_MATCHES_RCVD X-Spam-Check-By: sourceware.org Received: from mail.codesourcery.com (HELO mail.codesourcery.com) (38.113.113.100) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Tue, 12 Apr 2011 10:59:06 +0000 Received: (qmail 30788 invoked from network); 12 Apr 2011 10:59:05 -0000 Received: from unknown (HELO scottsdale.localnet) (pedro@127.0.0.2) by mail.codesourcery.com with ESMTPA; 12 Apr 2011 10:59:05 -0000 From: Pedro Alves To: gdb-patches@sourceware.org Subject: Re: [PATCH] GDB checkpoint can't/shouldn't be possible with multiple threads on Linux Date: Tue, 12 Apr 2011 10:59:00 -0000 User-Agent: KMail/1.13.5 (Linux/2.6.35-28-generic; KDE/4.6.2; x86_64; ; ) Cc: Kevin Pouget References: In-Reply-To: MIME-Version: 1.0 Content-Type: Text/Plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Message-Id: <201104121159.06026.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: 2011-04/txt/msg00159.txt.bz2 On Tuesday 12 April 2011 08:44:14, Kevin Pouget wrote: > as I reported in http://sourceware.org/bugzilla/show_bug.cgi?id=12628 > and discussed in http://sourceware.org/ml/gdb/2011-04/msg00018.html, > (does such a patch require a test case?) Tests are always good, tough I'd approve this without one. > diff --git a/gdb/ChangeLog b/gdb/ChangeLog > index 880781a..611aa7e 100644 > --- a/gdb/ChangeLog > +++ b/gdb/ChangeLog > @@ -1,3 +1,9 @@ > +2011-04-12 Kevin Pouget > + > + PR threads/12628 > + * linux-fork.c (checkpoint_command): Disallow checkpointing of > + processes with multiple threads. > + Next time please post ChangeLog entries as plaintext, separate from the patch. > diff --git a/gdb/linux-fork.c b/gdb/linux-fork.c > index 7f654af..c137604 100644 > --- a/gdb/linux-fork.c > +++ b/gdb/linux-fork.c > @@ -628,6 +628,11 @@ checkpoint_command (char *args, int from_tty) > pid_t retpid; > struct cleanup *old_chain; > > + /* Ensure that the inferior is not multithreaded. */ Double space after periods. > + update_thread_list () ; > + if (thread_count () > 1) > + error (_("checkpoint: can't checkpoint multiple threads.")) ; You have spurious spaces before `;'. thread_count() returns the sum total number of threads of all inferiors/process. You want the number of threads of the current process only. AFAIR, there's no function handy that returns you that. (Since you're interested in checking for multiple threads, you could use iterate_over_threads with a callback that returns true if it sees a second thread for a given process, so you don't really need to count all the threads.) -- Pedro Alves