From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 25607 invoked by alias); 25 Feb 2012 18:25:16 -0000 Received: (qmail 25596 invoked by uid 22791); 25 Feb 2012 18:25:15 -0000 X-SWARE-Spam-Status: No, hits=-1.8 required=5.0 tests=AWL,BAYES_00 X-Spam-Check-By: sourceware.org Received: from relay1.mentorg.com (HELO relay1.mentorg.com) (192.94.38.131) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Sat, 25 Feb 2012 18:25:02 +0000 Received: from svr-orw-fem-01.mgc.mentorg.com ([147.34.98.93]) by relay1.mentorg.com with esmtp id 1S1MIn-0002DV-1Z from Luis_Gustavo@mentor.com ; Sat, 25 Feb 2012 10:25:01 -0800 Received: from NA1-MAIL.mgc.mentorg.com ([147.34.98.181]) by svr-orw-fem-01.mgc.mentorg.com with Microsoft SMTPSVC(6.0.3790.4675); Sat, 25 Feb 2012 10:25:00 -0800 Received: from [0.0.0.0] ([172.16.63.104]) by NA1-MAIL.mgc.mentorg.com with Microsoft SMTPSVC(6.0.3790.4675); Sat, 25 Feb 2012 10:24:59 -0800 Message-ID: <4F49277A.70400@mentor.com> Date: Sat, 25 Feb 2012 19:40:00 -0000 From: Luis Gustavo Reply-To: "Gustavo, Luis" User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.27) Gecko/20120216 Lightning/1.0b2 Thunderbird/3.1.19 MIME-Version: 1.0 To: Jan Kratochvil CC: gdb-patches@sourceware.org Subject: Re: General regressions in gdbserver mode [Re: [rfc target-side break conditions 0/5 v2] General info] References: <4F2309F1.1020703@mentor.com> <4F47ABCF.9020305@mentor.com> <20120225142037.GA26330@host2.jankratochvil.net> <4F4900CB.8010606@mentor.com> <20120225170610.GA31657@host2.jankratochvil.net> In-Reply-To: <20120225170610.GA31657@host2.jankratochvil.net> Content-Type: multipart/mixed; boundary="------------080407030706080508080104" 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: 2012-02/txt/msg00615.txt.bz2 This is a multi-part message in MIME format. --------------080407030706080508080104 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Content-length: 1549 On 02/25/2012 03:06 PM, Jan Kratochvil wrote: > On Sat, 25 Feb 2012 16:39:55 +0100, Luis Gustavo wrote: >> What kind of setup you're using? > > Fedora 17 x86_64. It does not crash for me without -lmcheck but it does crash > for gdbserver linked with -lmcheck, gdbserver dumps core then. > > With valgrind gdbserver prints: > > Invalid read of size 8 > at: clear_gdb_breakpoint_conditions (mem-break.c:741) > by: delete_gdb_breakpoint_at (mem-break.c:715) > by: x86_remove_point (linux-x86-low.c:593) > by: linux_remove_point (linux-low.c:4463) > by: process_serial_event (server.c:3207) > by: handle_serial_event (server.c:3340) > by: handle_file_event (event-loop.c:489) > by: process_event (event-loop.c:244) > by: start_event_loop (event-loop.c:607) > by: main (server.c:2773) > Address 0x56242c8 is 8 bytes inside a block of size 16 free'd > at: free (vg_replace_malloc.c:427) > by: clear_gdb_breakpoint_conditions (mem-break.c:740) > by: delete_gdb_breakpoint_at (mem-break.c:715) > by: x86_remove_point (linux-x86-low.c:593) > by: linux_remove_point (linux-low.c:4463) > by: process_serial_event (server.c:3207) > by: handle_serial_event (server.c:3340) > by: handle_file_event (event-loop.c:489) > by: process_event (event-loop.c:244) > by: start_event_loop (event-loop.c:607) > by: main (server.c:2773) > > > Thanks, > Jan Could please try the following on your side? I reproduced the crash with -lmcheck and this patch fixed it for me. Thanks, Luis --------------080407030706080508080104 Content-Type: text/x-patch; name="mem_fix.diff" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="mem_fix.diff" Content-length: 868 2012-02-25 Luis Machado * mem-break.c (clear_gdb_breakpoint_conditions): Fix de-allocation of conditions. diff --git a/gdb/gdbserver/mem-break.c b/gdb/gdbserver/mem-break.c index c9a6035..69265cb 100644 --- a/gdb/gdbserver/mem-break.c +++ b/gdb/gdbserver/mem-break.c @@ -726,20 +726,19 @@ void clear_gdb_breakpoint_conditions (CORE_ADDR addr) { struct breakpoint *bp = find_gdb_breakpoint_at (addr); - struct point_cond_list *cond, **cond_p; + struct point_cond_list *cond, *cond_next; if (bp == NULL || bp->cond_list == NULL) return; cond = bp->cond_list; - cond_p = &bp->cond_list->next; while (cond != NULL) { + cond_next = cond->next; free (cond->cond); free (cond); - cond = *cond_p; - cond_p = &cond->next; + cond = cond_next; } bp->cond_list = NULL; --------------080407030706080508080104--