This is the mail archive of the gdb-patches@sources.redhat.com mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] Seg fault whilst stepping when watch set [ping!]


One week ping..


Ping!!

d.

On Sun, 2004-10-17 at 01:16, David Lecomber wrote:
> 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.
> <bang, seg fault>
> 
> 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    <dsl@sources.redhat.com>
> 
> 	* breakpoint.c (insert_bp_location): Regenerate expression in
> 	breakpoint owner for watchpoints if null.
> 
> 
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);

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]