page fault on today's CURRENT (tcp_usr_accept)

Robert Watson rwatson at FreeBSD.org
Mon Apr 3 09:54:02 UTC 2006


On Mon, 3 Apr 2006, Ganbold wrote:

> I've got page fault on today's CURRENT.

After looking at tcp_usr_accept(), I certainly see *a* bug, which might be the 
one you've run into.  I've committed what I believe is the fix as 
tcp_usrreq.c:1.134.  Could you pull that down and see if life gets better?

Basically, there was erroneous handling of a connection that has been 
disconnected while sitting in the accept queue before the application manages 
to call accept() on it (indeed, a race).

Robert N M Watson

>
> Fatal trap 12: page fault while in kernel mode
> fault virtual address                  = 0xa0
> fault code                                    = supervisor write, page not 
> present
> instructon pointer                     = 0x20: 0xc062bbde
> stack pointer                              = 0x28: 0xcc8efc10
> frame pointer                              = 0x28: 0xcc8efc2c
> 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                        = 435 (smbd)
> [thread pid 435 tid 100039]
> stopped at tcp_usr_accept+0xd6:    cmpxchgl   %ecx, 0xa0(%ebx)
>
> I'm running samba (samba-3.0.21b,1) on this test machine and there is no 
> load.
>
> FreeBSD gw.micom.mng.net 7.0-CURRENT FreeBSD 7.0-CURRENT #16: Mon Apr  3 
> 14:15:48 ULAST 2006     tsgan at gw.micom.mng.net:/usr/obj/usr/src/sys/GW  i386
>
> Ganbold
>
>
>


More information about the freebsd-current mailing list