From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 24559 invoked by alias); 17 Oct 2004 00:09:03 -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 24549 invoked from network); 17 Oct 2004 00:09:02 -0000 Received: from unknown (HELO localhost.localdomain) (80.6.110.86) by sourceware.org with SMTP; 17 Oct 2004 00:09:02 -0000 Received: from [127.0.0.1] (localhost.localdomain [127.0.0.1]) by localhost.localdomain (8.12.11/8.12.11) with ESMTP id i9H0GNV4030553 for ; Sun, 17 Oct 2004 01:16:23 +0100 Subject: [PATCH] Seg fault whilst stepping when watch set From: David Lecomber To: patches Content-Type: multipart/mixed; boundary="=-ERrdNurFQkcXd3fINZP1" Message-Id: <1097972182.22738.7.camel@localhost.localdomain> Mime-Version: 1.0 Date: Sun, 17 Oct 2004 00:09:00 -0000 X-SW-Source: 2004-10/txt/msg00297.txt.bz2 --=-ERrdNurFQkcXd3fINZP1 Content-Type: text/plain Content-Transfer-Encoding: 7bit Content-length: 973 Unfortunately I can't reproduce this without the intel compiler/f90. However, the relevant GDB output was: (gdb) r Starting program: /home/david/f90demo [Thread debugging using libthread_db enabled] [New Thread -151084928 (LWP 24298)] [Switching to Thread -151084928 (LWP 24298)] Breakpoint 1, 0x08089e8a in main () (gdb) step Single stepping until exit from function main, which has no line number information. sample () at f90demo.f90:72 72 CALL MPI_INIT(ierr) Current language: auto; currently fortran (gdb) watch i Hardware watchpoint 2: i (gdb) step Error in re-setting breakpoint 2: No symbol "i" in current context. This being line when breakpoint.c:949 calls evaluate_expression where exp is 0. I propose the attached, which has fixed this seg fault on my system. Permission to commit? 2004-10-17 * breakpoint.c (insert_bp_location): Regenerate expression in breakpoint owner for watchpoints if null. --=-ERrdNurFQkcXd3fINZP1 Content-Disposition: attachment; filename=watch.patch Content-Type: text/x-patch; name=watch.patch; charset=UTF-8 Content-Transfer-Encoding: 7bit Content-length: 767 Index: gdb/breakpoint.c =================================================================== RCS file: /cvs/src/src/gdb/breakpoint.c,v retrieving revision 1.183 diff -c -p -r1.183 breakpoint.c *** gdb/breakpoint.c 8 Oct 2004 17:30:46 -0000 1.183 --- gdb/breakpoint.c 17 Oct 2004 00:01:44 -0000 *************** insert_bp_location (struct bp_location * *** 946,951 **** --- 946,953 ---- Make sure the value returned isn't lazy; we use laziness to determine what memory GDB actually needed in order to compute the value of the expression. */ + if (!bpt->owner->exp) + bpt->owner->exp = parse_expression (bpt->owner->exp_string); v = evaluate_expression (bpt->owner->exp); VALUE_CONTENTS (v); value_release_to_mark (mark); --=-ERrdNurFQkcXd3fINZP1--