mbuf revision, testers/comments wanted.

Fabian Keil freebsd-listen at fabiankeil.de
Sun Feb 8 11:27:31 PST 2009


Jeff Roberson <jroberson at jroberson.net> wrote:

> On Sun, 8 Feb 2009, Fabian Keil wrote:
> 
> > Jeff Roberson <jroberson at jroberson.net> wrote:

> >> I have updated the patch here:
> >>
> >> http://people.freebsd.org/~jeff/mbuf_ref2.diff
> >>
> >> This resolves the !INVARIANTS bug and improves the style as you suggested.
> >
> > I run into several system hangs (or maybe panics) yesterday,
> > mostly with Xorg running so I didn't get any details.
> >
> > I got one on the console though. After running a regression
> > test that opens multiple HTTP connections to the loop back
> > device, I used rsync to restore some files that were damaged by
> > an earlier hang. That lead to a page fault in em_start_locked().
> >
> > While I dumped core from the debugger,
> > savecore didn't find the dump afterwards.
> >
> > Anyway, there's a screen shot available at:
> > http://www.fabiankeil.de/bilder/freebsd/mbuf-patch-page-fault-em_start_locked.jpg
> 
> Can you open gdb on kernel.debug and tell me what:
> 
> list *(em_start_locked+0x1e5)
> 
> outputs?

Unfortunately I didn't keep the kernel.debug for the
patched kernel around. For my current kernel I get:

fk at TP51 ~ $gdb /usr/obj/usr/src/sys/THINKPAD/kernel.debug 
GNU gdb 6.1.1 [FreeBSD]
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "i386-marcel-freebsd"...
(gdb) list *(em_start_locked+0x1e5)
0xc0529eb5 is in em_start_locked (/usr/src/sys/dev/e1000/if_em.c:1003).
998             if (!adapter->link_active)
999                     return;
1000    
1001            while (!IFQ_DRV_IS_EMPTY(&ifp->if_snd)) {
1002    
1003                    IFQ_DRV_DEQUEUE(&ifp->if_snd, m_head);
1004                    if (m_head == NULL)
1005                            break;
1006                    /*
1007                     *  Encapsulation can modify our pointer, and or make it

Not sure if it's any good ...

Fabian
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 195 bytes
Desc: not available
Url : http://lists.freebsd.org/pipermail/freebsd-net/attachments/20090208/0d216d5a/signature.pgp


More information about the freebsd-net mailing list