From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 24534 invoked by alias); 11 Mar 2004 01:51:28 -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 24325 invoked from network); 11 Mar 2004 01:51:27 -0000 Received: from unknown (HELO nevyn.them.org) (66.93.172.17) by sources.redhat.com with SMTP; 11 Mar 2004 01:51:27 -0000 Received: from drow by nevyn.them.org with local (Exim 4.30 #1 (Debian)) id 1B1FM6-0004eM-KM; Wed, 10 Mar 2004 20:51:26 -0500 Date: Thu, 11 Mar 2004 01:51:00 -0000 From: Daniel Jacobowitz To: Michael Snyder Cc: gdb-patches@sources.redhat.com Subject: Re: Daniel, thread vs. fork question. Message-ID: <20040311015126.GA17829@nevyn.them.org> Mail-Followup-To: Michael Snyder , gdb-patches@sources.redhat.com References: <404FBC18.4090909@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <404FBC18.4090909@redhat.com> User-Agent: Mutt/1.5.1i X-SW-Source: 2004-03.o/txt/msg00261.txt Message-ID: <20040311015100.ploLXmrr6NzppYoJYvOvUlYnHnwPedRszNimUKBEBo0@z> On Thu, Mar 11, 2004 at 01:08:40AM +0000, Michael Snyder wrote: > Hey Daniel, > > Got a question concerning the code in > linux-nat.c::linux_handle_extended_wait. > > You've got a PTRACE_EVENT_FORK event, and now you're going to call > waitpid. You pull a pid out of a list of stopped pids, and wait for > it using waitpid. In your comment, you explain that you don't have to > worry about the pid being a clone, because you didn't ask for pids in > the event mask. > > But how is this affected by threads, especially NPTL threads? > I've got a fairly simple test-case (modified from pthreads.c, > I'll attach it), in which a child thread calls fork -- but gdb > apparently tries to wait on the main thread (or perhaps the most > recent event thread). Since that's not the thread that called > fork, waitpid returns -1 with "no child". Gdb reports: > waiting for new child: No child processes. > > FWIW, I've tried this on both a single-processor and an SMP machine. No attachment? Also, what glibc/nptl version are you using. It's entirely possible that I didn't handle some threaded case. But we save the PID that we plan to wait on, which should be the child thread, so I don't see how what you're describing can happn. -- Daniel Jacobowitz MontaVista Software Debian GNU/Linux Developer