Здравейте,
От няколко месеца, профилактично, въпросното FreeBSD се рестартира, без видима причина, напълно рандом. Пуснато е на VMWare център. Ето какво има в лога (vmcore):
GeSHi (Bash):
Fatal trap 12: page fault while in kernel mode
cpuid = 1; apic id = 01
fault virtual address = 0x18
fault code = supervisor write, page not present
instruction pointer = 0x20:0xc0839301
stack pointer = 0x28:0xe6992be8
frame pointer = 0x28:0xe6992c58
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 = 32 (dummynet)
trap number = 12
panic: page fault
cpuid = 1
Uptime: 22d0h37m29s
Physical memory: 3059 MB
Dumping 260 MB: 245 229 213 197 181 165 149 133 117 101 85 69 53 37 21 5
#0 doadump () at pcpu.h:195
195 __asm __volatile("movl %%fs:0,%0" : "=r" (td));
Следвам
това ръководство и стигнах до:
GeSHi (Bash):
(kgdb) list *0xc0839301
0xc0839301 is in ready_event_wfq (../../../netinet/ip_dummynet.c:700).
695 if (p->if_name[0]==0 && p->numbytes < 0) { /* this implies bandwidth >0 */
696 dn_key t=0 ; /* number of ticks i have to wait */
697
698 if (p->bandwidth > 0)
699 t = ( p->bandwidth -1 - p->numbytes) / p->bandwidth ;
700 dn_tag_get(p->tail)->output_time += t ;
701 p->sched_time = curr_time ;
702 heap_insert(&wfq_ready_heap, curr_time + t, (void *)p);
703 /* XXX should check errors on heap_insert, and drain the whole
704 * queue on error hoping next time we are luckier.
(kgdb) backtrace
#0 doadump () at pcpu.h:195
#1 0xc0755537 in boot (howto=260) at ../../../kern/kern_shutdown.c:409
#2 0xc07557f9 in panic (fmt=Variable "fmt" is not available.
) at ../../../kern/kern_shutdown.c:563
#3 0xc0a63d6c in trap_fatal (frame=0xe6992ba8, eva=24) at ../../../i386/i386/trap.c:899
#4 0xc0a63ff0 in trap_pfault (frame=0xe6992ba8, usermode=0, eva=24) at ../../../i386/i386/trap.c:812
#5 0xc0a6499c in trap (frame=0xe6992ba8) at ../../../i386/i386/trap.c:490
#6 0xc0a4a91b in calltrap () at ../../../i386/i386/exception.s:139
#7 0xc0839301 in ready_event_wfq (p=0xc6443e00, head=0xe6992c8c, tail=0xe6992c88)
at ../../../netinet/ip_dummynet.c:700
#8 0xc083a965 in dummynet_task (context=0x0, pending=1) at ../../../netinet/ip_dummynet.c:799
#9 0xc0784fb5 in taskqueue_run (queue=0xc6591d80) at ../../../kern/subr_taskqueue.c:255
#10 0xc07851bb in taskqueue_thread_loop (arg=0xc0c02990) at ../../../kern/subr_taskqueue.c:374
#11 0xc0735559 in fork_exit (callout=0xc0785100 <taskqueue_thread_loop>, arg=0xc0c02990,
frame=0xe6992d38) at ../../../kern/kern_fork.c:781
#12 0xc0a4a990 in fork_trampoline () at ../../../i386/i386/exception.s:205
(kgdb)
Рових малко в google и стигнах до няколко подобни проблеми, като всичко там води към натрупване на грешки по интерфейса. Като проверя моите, излиза следното:
GeSHi (Bash):
netstat -i -b -n -I le3
Name Mtu Network Address Ipkts Ierrs Ibytes Opkts Oerrs Obytes Coll
le3 1500 <Link#4> 00:*:56:*:65:* 13041589 522 2744708145 8512484 0 845707843 0
le3 1500 95.*.128.* 95.*.128.* 1519887 - 884665643 8512371 - 726528457 -
GeSHi (Bash):
netstat -i -b -n -I le1
Name Mtu Network Address Ipkts Ierrs Ibytes Opkts Oerrs Obytes Coll
le1 1500 <Link#2> 00:*:26:*:35:* 12998056 650 1843494915 17158552 0 3861703475 0
le1 1500 192.168.1.0/ 192.168.1.1 795085 - 97119029 971136 - 716719789 -
Следва проверка с:
sysctl -a | grep dev.le , но тук ми излизат само:
GeSHi (Bash):
dev.le.1.%desc: AMD PCnet-PCI
dev.le.1.%driver: le
dev.le.1.%location: slot=18 function=0
dev.le.1.%pnpinfo: vendor=0x1022 device=0x2000 subvendor=0x1022 subdevice=0x2000 class=0x020000
dev.le.1.%parent: pci0
което явно е в следствие липсата на DEBUG режим зададен в кърнела?В примерите (
тук и
тук които гледам, има редовете със
stats.rxПример:
GeSHi (Bash):
dev.bge.0.stats.rx.FCSErrors: 0
dev.bge.0.stats.rx.AlignmentErrors: 0
dev.bge.0.stats.rx.xonPauseFramesReceived: 0
dev.bge.0.stats.rx.xoffPauseFramesReceived: 0
dev.bge.0.stats.rx.ControlFramesReceived: 0
dev.bge.0.stats.rx.xoffStateEntered: 0
dev.bge.0.stats.rx.FramesTooLong: 799
Интересното е, че имам друго FreeBSD, пуснато на същия този виртуален ценър, има доволно много грешки:
GeSHi (Bash):
netstat -i -b -n -I le0
Name Mtu Network Address Ipkts Ierrs Ibytes Opkts Oerrs Obytes Coll
le0 1500 <Link#1> 00:*:56:*:51:* 408290228 27731 2348559573 180869579 0 1882814631 0
le0 1500 192.168.1.0/ 192.168.1.102 148512144 - 3975305044 166778260 - 2743899286 -
. но няма никакви проблеми с него и има почти две години ъптайм.
Като цяло питането ми е, правилно ли съм се насочил (активиране на DEBUG и прекомпилиране) или да търся нещо друго?