Subject: Re: i386-current page fault trap in profiled code
To: None <port-i386@netbsd.org>
From: Frank van der Linden <fvdl@wasabisystems.com>
List: port-i386
Date: 11/11/2002 23:43:16
On Mon, Nov 11, 2002 at 02:11:46PM -0800, john heasley wrote:
> login: kernel: page fault trap, code=0
> Stopped in pid 28182 (tac_plus) at 0xc010049b: repe movsb (%esi),%es:(%edi)
> db{1}> trace
> gdt_desc(e3f3c014,805fc84,1,1,0) at 0xc010049b
> gdt_desc(1f,1f,1f,1f,c) at 0xc01fd012
> db{1}> sync
> syncing disks... panic: TLB IPI rendezvous failed (mask 1)
> Stopped in pid 28182 (tac_plus) at 0xc01ecb34: movl %ebp,%esp
Ok.. I think I see. Try the following diff:
Index: trap.c
===================================================================
RCS file: /cvsroot/syssrc/sys/arch/i386/i386/trap.c,v
retrieving revision 1.174
diff -c -r1.174 trap.c
*** trap.c 2002/11/11 13:54:28 1.174
--- trap.c 2002/11/11 22:40:49
***************
*** 409,415 ****
--- 409,417 ----
uvmexp.softs++;
if (p->p_flag & P_OWEUPC) {
p->p_flag &= ~P_OWEUPC;
+ KERNEL_PROC_LOCK(p);
ADDUPROF(p);
+ KERNEL_PROC_UNLOCK(p);
}
/* Allow a forced task switch. */
if (curcpu()->ci_want_resched) /* XXX CSE me? */
--
Frank van der Linden fvdl@wasabisystems.com
==============================================================================
Quality NetBSD Development, Support & Service. http://www.wasabisystems.com/