8.2-PRERELEASE panic in NETGRAPH (ng_pppoe)

Artem Kim artem_kim at inbox.ru
Fri Dec 3 13:35:15 UTC 2010


Hello.

I have problem in one of my pppoe routers:

smp Xeon X5472, network adapter 82575EB 
mpd5,
FreeBSD nas4 8.2-PRERELEASE FreeBSD 8.2-PRERELEASE #0: Thu Dec  2 19:07:46 MSK 
2010     xxx at nas4:/usr/obj/usr/src/sys/router  i386

extra kernel config:

options         KVA_PAGES=512

sysctl:

kern.ipc.maxsockbuf=524288
kern.ipc.nmbclusters=65535

net.graph.recvspace=40960
net.graph.maxdgram=40960
net.graph.maxdata=1024

net.inet.tcp.blackhole=2
net.inet.udp.blackhole=1

vm.kmem_size=1512M
vm.kmem_size_max=1512M

This panic the second similar incident in the last 7 hours.
some debug info:

Fatal trap 12: page fault while in kernel mode
cpuid = 3; apic id = 03
fault virtual address   = 0x44
fault code              = supervisor read, page not present
instruction pointer     = 0x20:0x805dfb56
stack pointer           = 0x28:0xfbbab944
frame pointer           = 0x28:0xfbbab970
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         = 1944 (mpd5)
trap number             = 12
panic: page fault
cpuid = 2
KDB: stack backtrace:
#0 0x805fce6d at kdb_backtrace+0x48
#1 0x805cdb9c at panic+0x108
#2 0x8079bbd2 at trap_fatal+0x24c
#3 0x8079bf8e at trap_pfault+0x270
#4 0x8079c3db at trap+0x371
#5 0x807842dc at calltrap+0x6
#6 0x8068c2ae at ng_uncallout+0x1b
#7 0x8069c454 at ng_pppoe_disconnect+0xf8
#8 0x8068d5cc at ng_destroy_hook+0xe0
#9 0x8068e5e9 at ng_apply_item+0x903
#10 0x8068cea7 at ng_snd_item+0x2e9
#11 0x806a04f8 at ngc_send+0x1d3
#12 0x8062e01a at sosend_generic+0x2aa
#13 0x80631df0 at kern_sendit+0xfc
#14 0x8063203f at sendit+0xcd
#15 0x80632122 at sendto+0x48
#16 0x80608641 at syscallenter+0x28d
#17 0x8079bfef at syscall+0x2e
Uptime: 7h53m5s
Physical memory: 2038 MB
Dumping 253 MB: 238 222 206 190 174 158 142 126 110 94 78 62 46 30 14

#0  doadump () at pcpu.h:231
231             __asm("movl %%fs:0,%0" : "=r" (td));
(kgdb) f 6
#6  0x807842dc in calltrap () at /usr/src/sys/i386/i386/exception.s:166
166             call    trap
Current language:  auto; currently asm
(kgdb) l
161             SET_KERNEL_SREGS
162             cld
163             FAKE_MCOUNT(TF_EIP(%esp))
164     calltrap:
165             pushl   %esp
166             call    trap
167             add     $4, %esp
168
169             /*
170              * Return via doreti to handle ASTs.
(kgdb) up
#7  0x805dfb56 in _callout_stop_safe (c=0x8c29f008, safe=0) at 
/usr/src/sys/kern/kern_timeout.c:683
683                     if (c->c_lock == &Giant.lock_object)
Current language:  auto; currently c
(kgdb) l
678             /*
679              * Some old subsystems don't hold Giant while running a 
callout_stop(),
680              * so just discard this check for the moment.
681              */
682             if (!safe && c->c_lock != NULL) {
683                     if (c->c_lock == &Giant.lock_object)
684                             use_lock = mtx_owned(&Giant);
685                     else {
686                             use_lock = 1;
687                             class = LOCK_CLASS(c->c_lock);
(kgdb) p *c
$1 = {c_links = {sle = {sle_next = 0x9}, tqe = {tqe_next = 0x9, tqe_prev = 
0x40}}, c_time = 10, c_arg = 0x40, c_func = 0xc, c_lock = 0x40, c_flags = 13, 
c_cpu = 64}
(kgdb) up
#8  0x8068c2ae in ng_uncallout (c=0x8c29f008, node=0x874abb00) at 
/usr/src/sys/netgraph/ng_base.c:3732
3732            rval = callout_stop(c);
(kgdb) l
3727            int rval;
3728
3729            KASSERT(c != NULL, ("ng_uncallout: NULL callout"));
3730            KASSERT(node != NULL, ("ng_uncallout: NULL node"));
3731
3732            rval = callout_stop(c);
3733            item = c->c_arg;
3734            /* Do an extra check */
3735            if ((rval > 0) && (c->c_func == &ng_callout_trampoline) &&
3736                (NGI_NODE(item) == node)) {
(kgdb) up  
#9  0x8069c454 in ng_pppoe_disconnect (hook=0x88bcb880) at 
/usr/src/sys/netgraph/ng_pppoe.c:1791
1791                            ng_uncallout(&sp->neg->handle, node);
(kgdb) l
1786                    /*
1787                     * As long as we have somewhere to store the timeout 
handle,
1788                     * we may have a timeout pending.. get rid of it.
1789                     */
1790                    if (sp->neg) {
1791                            ng_uncallout(&sp->neg->handle, node);
1792                            if (sp->neg->m)
1793                                    m_freem(sp->neg->m);
1794                            free(sp->neg, M_NETGRAPH_PPPOE);
1795                    }
(kgdb) p sp
$2 = 0x89391180
(kgdb) p *sp
$3 = {hook = 0x88bcb880, Session_ID = 0, state = PPPOE_SOFFER, creator = 47, 
pkt_hdr = {eh = {ether_dhost = "\000\000\000\000\000", ether_shost = 
"\000\000\000\000\000", 
      ether_type = 0}, ph = {ver = 0 '\0', type = 0 '\0', code = 0 '\0', sid = 
0, length = 0}}, neg = 0x8c29f000, sessions = {le_next = 0x0, le_prev = 0x0}}
(kgdb) p *sp->neg 
$4 = {m = 0x7, pkt = 0x40, handle = {c_links = {sle = {sle_next = 0x9}, tqe = 
{tqe_next = 0x9, tqe_prev = 0x40}}, c_time = 10, c_arg = 0x40, c_func = 0xc, 
c_lock = 0x40, 
    c_flags = 13, c_cpu = 64}, timeout = 39, numtags = 64, tags = {0x28, 0x40, 
0x29, 0x40, 0x2a, 0x40, 0x2b, 0x40, 0x2c, 0x40, 0x24, 0x40, 0x23, 0x40, 0x18, 
0x40, 0x1c, 0x40, 
    0x1b, 0x40}, service_len = 23, ac_name_len = 64, service = {hdr = 
{tag_type = 26, tag_len = 0}, 
    data = 
"@\000\000\000\031\000\000\000@\000\000\000\"\000\000\000@\000\000\000\036\000\000\000@\000\000\000!
\000\000\000@\000\000\000\026\000\000\000@\000\000\000\023\000\000\000@\000\000\000\035\000\000\000@\000\000\000%\000\000"}, 
ac_name = {hdr = {tag_type = 64, tag_len = 0}, 
    data = " 
\000\000\000@\000\000\000\037\000\000\000@\000\000\000&\000\000\000@\000\000\000\024\000\000\000@\000\000\000\021\000\000\000@\000\000\000\025\000\000\000@\000\000\000\006\000\000\000@\000\000\000\000\000\000\000\000\000\000"}}


More information about the freebsd-stable mailing list