Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 29 Aug 1997 13:51:31 -0400 (EDT)
From:      Gary Kendall <gdk@ccomp.inode.COM>
To:        gordon@drogon.NET
Cc:        hackers@freebsd.ORG
Subject:   Re: Fatal trap 12: page fault while in kernel mode
Message-ID:  <199708291751.NAA06741@ccomp.inode.com>
In-Reply-To: <Pine.LNX.3.95.970829170904.10277N-100000@unicorn> from Gordon Henderson at "Aug 29, 97 05:11:45 pm"

next in thread | previous in thread | raw e-mail | index | archive | help
It wasn't too long ago that Gordon Henderson said:
> 
> I got this last night:
> 
> Fatal trap 12: page fault while in kernel mode
> fault virtual address   = 0x800010
> fault code              = supervisor read, page not present
> instruction pointer     = 0x8:0xe0121320
> stack pointer           = 0x10:0xdfbfff18
> frame pointer           = 0x10:0xdfbfff28
> code segment            = base 0x0, limit 0xfffff, type 0x1b
>                         = DPL 0, pres 1, def32 1, gran 1
> processor eflags        = interrupt enabled, resume, IOPL = 0
> current process         = 7539 (named-xfer)
> interrupt mask          = net tty 
> panic: page fault
> 
> Can anyone tell me what it means?
> 
[snip]

This looks familiar.  Were you running pppd at the time, by any chance?
I found a bug in the 2.0 pppd that might have escaped others' attention,
and I just joined this list. ;-)  The problem was an splx(s) was missing
before an error return, and left interrupts masked off.  What follows is
a patch to a 2.0 /sys/net/if_ppp.c file, so I'd apply it manually (eg,
don't use patch to apply it).  Hope this helps.

-------------------------------- cut here ------------------------------------
*** if_ppp.c	Wed Jul  9 16:17:41 1997
--- if_ppp.c~	Sat Jul  5 09:58:47 1997
***************
*** 380,389 ****
  	    return (EWOULDBLOCK);
  	}
  	error = ttysleep(tp, (caddr_t)&tp->t_rawq, TTIPRI|PCATCH, ttyin, 0);
! 	if (error) {
! 	    splx(s);
! 	    return (error);
! 	}
      }
      if (tp->t_line != PPPDISC) {
  	splx(s);
--- 380,387 ----
  	    return (EWOULDBLOCK);
  	}
  	error = ttysleep(tp, (caddr_t)&tp->t_rawq, TTIPRI|PCATCH, ttyin, 0);
! 	if (error)
! 	    return error;
      }
      if (tp->t_line != PPPDISC) {
  	splx(s);
-------------------------------- cut here ------------------------------------

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%  The difficult is done immediately, the impossible takes a little longer.  %
%----------------------------------------------------------------------------%
%              gdk@ccomp.inode.com  or  gkendall@eddie.mit.edu               %
%----------------------------------------------------------------------------%
%  Creative Computing * 96 Forest Street * Danvers, MA 01923 * 508-777-3784  %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199708291751.NAA06741>