sparc64/93226: DEBUG_LOCKS (really stack_save()) causes panics on sparc64

Antoine Brodin antoine.brodin at laposte.net
Mon Feb 13 03:50:11 PST 2006


The following reply was made to PR sparc64/93226; it has been noted by GNATS.

From: Antoine Brodin <antoine.brodin at laposte.net>
To: bug-followup at FreeBSD.org, kris at FreeBSD.org
Cc:  
Subject: Re: sparc64/93226: DEBUG_LOCKS (really stack_save()) causes panics
 on sparc64
Date: Mon, 13 Feb 2006 12:44:34 +0100

 This is a multi-part message in MIME format.
 
 --Multipart=_Mon__13_Feb_2006_12_44_34_+0100_lHFJ6LWhOkOa2zgV
 Content-Type: text/plain; charset=US-ASCII
 Content-Transfer-Encoding: 7bit
 
 Here is a proposed patch.
 
 It is untested (just compile tested) since I don't have this hardware.
 
 --Multipart=_Mon__13_Feb_2006_12_44_34_+0100_lHFJ6LWhOkOa2zgV
 Content-Type: text/plain;
  name="sparc64-stack_save.diff"
 Content-Disposition: attachment;
  filename="sparc64-stack_save.diff"
 Content-Transfer-Encoding: 7bit
 
 Index: sys/sparc64/sparc64/db_trace.c
 ===================================================================
 RCS file: /home/ncvs/src/sys/sparc64/sparc64/db_trace.c,v
 retrieving revision 1.24
 diff -u -p -r1.24 db_trace.c
 --- sys/sparc64/sparc64/db_trace.c	3 Aug 2005 04:27:39 -0000	1.24
 +++ sys/sparc64/sparc64/db_trace.c	13 Feb 2006 11:31:13 -0000
 @@ -307,6 +307,12 @@ stack_save(struct stack *st)
  		callpc = fp->fr_pc;
  		if (!INKERNEL(callpc))
  			break;
 +		/*
 +		 * Don't bother traversing trap-frames.
 +		 * tl0_* and tl1_* are just below fork_trampoline
 +		 */
 +		if (callpc < (vm_offset_t)fork_trampoline)
 +			break;
  		if (stack_put(st, callpc) == -1)
  			break;
  		fp = (struct frame *)(fp->fr_fp + SPOFF);
 
 --Multipart=_Mon__13_Feb_2006_12_44_34_+0100_lHFJ6LWhOkOa2zgV--


More information about the freebsd-sparc64 mailing list