On Tuesday, February 01, 2011 1:30:20 pm Eugene Grosbein wrote: > On 31.01.2011 14:20, Julian Elischer wrote: > > > replace with: > > > > 3504 if ((hook == NULL) || > > 3505 NG_HOOK_NOT_VALID(hook) || > > ((peer = NG_HOOK_PEER(hook)) == NULL) || > > 3506 NG_HOOK_NOT_VALID(peer) || > > ((peernode = NG_PEER_NODE(hook)) == NULL) || > > 3507 NG_NODE_NOT_VALID(peernode)) { > > if (peer) > > kassert((peernode != NULL), ("peer node NULL > > wile peer hook exists")); > > 3508 NG_FREE_ITEM(item); > > This day I have updated panicing router to RELENG_8 and combined changes > supposed > by Julian and Gleb. After 8 hours it has just paniced again and could not > finish > to write crashdump again: > > Fatal trap 12: page fault while in kernel mode > cpuid = 3; apic id = 06 > fault virtual address = 0x63 > fault code = supervisor read data, page not present > instruction pointer = 0x20:0xffffffff803d4ccd > stack pointer = 0x28:0xffffff80ebffc600 > frame pointer = 0x28:0xffffff80ebffc680 > code segment = base 0x0, limit 0xfffff, type 0x1b > = DPL 0, pres 1, long 1, def32 0, gran 1 > processor eflags = interrupt enabled, resume, IOPL = 0 > current process = 2390 (mpd5) > trap number = 12 > panic: page fault > cpuid = 3 > Uptime: 8h3m51s > Dumping 4087 MB (3 chunks) > chunk 0: 1MB (150 pages) ... ok > chunk 1: 3575MB (915088 pages) 3559 3543panic: bufwrite: buffer is not > busy??? > cpuid = 3 > Uptime: 8h3m52s > Automatic reboot in 15 seconds - press a key on the console to abort > > # gdb kernel > 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 "amd64-marcel-freebsd"... > (gdb) l *0xffffffff803d4ccd > 0xffffffff803d4ccd is in ng_pppoe_disconnect (netgraph.h:191). > 186 int line); > 187 > 188 static __inline void > 189 _chkhook(hook_p hook, char *file, int line) > 190 { > 191 if (hook->hk_magic != HK_MAGIC) { > 192 printf("Accessing freed hook "); > 193 dumphook(hook, file, line); > 194 } > 195 hook->lastline = line; > (gdb) x/i 0xffffffff803d4ccd > 0xffffffff803d4ccd <ng_pppoe_disconnect+301>: cmpl $0x78573011,0x64(%rbx)
So %rbx (hook) was -1 here. Perhaps the locking is insufficient for whatever structure contains the hook pointer? -- John Baldwin _______________________________________________ freebsd-net@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-net To unsubscribe, send any mail to "freebsd-net-unsubscr...@freebsd.org"