From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1LKFi4-0004Bn-20 for qemu-devel@nongnu.org; Tue, 06 Jan 2009 12:27:20 -0500 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1LKFi3-0004BL-G5 for qemu-devel@nongnu.org; Tue, 06 Jan 2009 12:27:19 -0500 Received: from [199.232.76.173] (port=41186 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1LKFi3-0004B2-4x for qemu-devel@nongnu.org; Tue, 06 Jan 2009 12:27:19 -0500 Received: from fg-out-1718.google.com ([72.14.220.154]:16434) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1LKFi2-0007q6-L4 for qemu-devel@nongnu.org; Tue, 06 Jan 2009 12:27:18 -0500 Received: by fg-out-1718.google.com with SMTP id 19so626551fgg.8 for ; Tue, 06 Jan 2009 09:27:16 -0800 (PST) Message-ID: <761ea48b0901060927p334c908bt1248d8f15a580700@mail.gmail.com> Date: Tue, 6 Jan 2009 18:27:16 +0100 From: "Laurent Desnogues" Subject: Re: [Qemu-devel] [6095] User-mode GDB stub improvements - handle fork In-Reply-To: <49638483.4050701@opensuse.org> MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline References: <49638483.4050701@opensuse.org> Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org On Tue, Jan 6, 2009 at 5:19 PM, Martin Mohring wrote: [...] > Aurelien Jarno wrote: >> Revision: 6095 >> http://svn.sv.gnu.org/viewvc/?view=rev&root=qemu&revision=6095 >> Author: aurel32 >> Date: 2008-12-18 22:44:04 +0000 (Thu, 18 Dec 2008) >> >> Log Message: >> ----------- >> User-mode GDB stub improvements - handle fork >> >> Close gdbserver in child processes, so that only one stub tries to talk >> to GDB at a time. Updated from an earlier patch by Paul Brook. >> >> Signed-off-by: Daniel Jacobowitz >> Signed-off-by: Aurelien Jarno >> >> Modified Paths: >> -------------- >> trunk/gdbstub.c >> trunk/gdbstub.h >> trunk/linux-user/main.c >> trunk/linux-user/syscall.c >> >> Modified: trunk/gdbstub.c >> =================================================================== >> --- trunk/gdbstub.c 2008-12-18 22:43:56 UTC (rev 6094) >> +++ trunk/gdbstub.c 2008-12-18 22:44:04 UTC (rev 6095) >> @@ -1996,6 +1996,18 @@ >> gdb_accept(); >> return 0; >> } >> + >> +/* Disable gdb stub for child processes. */ >> +void gdbserver_fork(CPUState *env) >> +{ >> + GDBState *s = gdbserver_state; >> + if (s->fd < 0) Other qemu gdb functions do this: if (gdbserver_fd < 0 || s->fd < 0) >> + return; >> + close(s->fd); >> + s->fd = -1; >> + cpu_breakpoint_remove_all(env, BP_GDB); >> + cpu_watchpoint_remove_all(env, BP_GDB); >> +} >> > In case of USE_NPTL is defined, it seems that either s or env can be > NULL, so I get a exception (yes, nptl works on arm in user mode). > My understanding is that this might be a race condition of the first > fork() call coming even before env or gdbserver_state is initialised > towards !NULL. Could you check if my proposed change above fixes your issue? Laurent