Автор Тема: Рестарт на FreeBSD 7.0 с грешка "Fatal trap 12: page fault while in kernel mode"  (Прочетена 3416 пъти)

mrowcp

  • Участник
  • *****
  • Публикации: 450
    • Профил
Здравейте,
От няколко месеца, профилактично, въпросното FreeBSD се рестартира, без видима причина, напълно рандом. Пуснато е на VMWare център. Ето какво има в лога (vmcore):

Код
GeSHi (Bash):
  1. Fatal trap 12: page fault while in kernel mode
  2. cpuid = 1; apic id = 01
  3. fault virtual address   = 0x18
  4. fault code              = supervisor write, page not present
  5. instruction pointer     = 0x20:0xc0839301
  6. stack pointer           = 0x28:0xe6992be8
  7. frame pointer           = 0x28:0xe6992c58
  8. code segment            = base 0x0, limit 0xfffff, type 0x1b
  9.                        = DPL 0, pres 1, def32 1, gran 1
  10. processor eflags        = interrupt enabled, resume, IOPL = 0
  11. current process         = 32 (dummynet)
  12. trap number             = 12
  13. panic: page fault
  14. cpuid = 1
  15. Uptime: 22d0h37m29s
  16. Physical memory: 3059 MB
  17. Dumping 260 MB: 245 229 213 197 181 165 149 133 117 101 85 69 53 37 21 5
  18.  
  19. #0  doadump () at pcpu.h:195
  20. 195             __asm __volatile("movl %%fs:0,%0" : "=r" (td));

Следвам това ръководство и стигнах до:

Код
GeSHi (Bash):
  1. (kgdb) list *0xc0839301
  2. 0xc0839301 is in ready_event_wfq (../../../netinet/ip_dummynet.c:700).
  3. 695         if (p->if_name[0]==0 && p->numbytes < 0) { /* this implies bandwidth >0 */
  4. 696             dn_key t=0 ; /* number of ticks i have to wait */
  5. 697
  6. 698             if (p->bandwidth > 0)
  7. 699                 t = ( p->bandwidth -1 - p->numbytes) / p->bandwidth ;
  8. 700             dn_tag_get(p->tail)->output_time += t ;
  9. 701             p->sched_time = curr_time ;
  10. 702             heap_insert(&wfq_ready_heap, curr_time + t, (void *)p);
  11. 703             /* XXX should check errors on heap_insert, and drain the whole
  12. 704              * queue on error hoping next time we are luckier.
  13. (kgdb) backtrace
  14. #0  doadump () at pcpu.h:195
  15. #1  0xc0755537 in boot (howto=260) at ../../../kern/kern_shutdown.c:409
  16. #2  0xc07557f9 in panic (fmt=Variable "fmt" is not available.
  17. ) at ../../../kern/kern_shutdown.c:563
  18. #3  0xc0a63d6c in trap_fatal (frame=0xe6992ba8, eva=24) at ../../../i386/i386/trap.c:899
  19. #4  0xc0a63ff0 in trap_pfault (frame=0xe6992ba8, usermode=0, eva=24) at ../../../i386/i386/trap.c:812
  20. #5  0xc0a6499c in trap (frame=0xe6992ba8) at ../../../i386/i386/trap.c:490
  21. #6  0xc0a4a91b in calltrap () at ../../../i386/i386/exception.s:139
  22. #7  0xc0839301 in ready_event_wfq (p=0xc6443e00, head=0xe6992c8c, tail=0xe6992c88)
  23.    at ../../../netinet/ip_dummynet.c:700
  24. #8  0xc083a965 in dummynet_task (context=0x0, pending=1) at ../../../netinet/ip_dummynet.c:799
  25. #9  0xc0784fb5 in taskqueue_run (queue=0xc6591d80) at ../../../kern/subr_taskqueue.c:255
  26. #10 0xc07851bb in taskqueue_thread_loop (arg=0xc0c02990) at ../../../kern/subr_taskqueue.c:374
  27. #11 0xc0735559 in fork_exit (callout=0xc0785100 <taskqueue_thread_loop>, arg=0xc0c02990,
  28.    frame=0xe6992d38) at ../../../kern/kern_fork.c:781
  29. #12 0xc0a4a990 in fork_trampoline () at ../../../i386/i386/exception.s:205
  30. (kgdb)

Рових малко в google и стигнах до няколко подобни проблеми, като всичко там води към натрупване на грешки по интерфейса. Като проверя моите, излиза следното:

Код
GeSHi (Bash):
  1. netstat -i -b -n -I le3
  2. Name    Mtu Network       Address              Ipkts Ierrs     Ibytes    Opkts Oerrs     Obytes  Coll
  3. le3    1500 <Link#4>      00:*:56:*:65:* 13041589   522 2744708145  8512484     0  845707843     0
  4. le3    1500 95.*.128.* 95.*.128.*     1519887     -  884665643  8512371     -  726528457     -

Код
GeSHi (Bash):
  1. netstat -i -b -n -I le1
  2. Name    Mtu Network       Address              Ipkts Ierrs     Ibytes    Opkts Oerrs     Obytes  Coll
  3. le1    1500 <Link#2>      00:*:26:*:35:* 12998056   650 1843494915 17158552     0 3861703475     0
  4. le1    1500 192.168.1.0/ 192.168.1.1        795085     -   97119029   971136     -  716719789     -

Следва проверка с: sysctl -a | grep dev.le , но тук ми излизат само:
Код
GeSHi (Bash):
  1. dev.le.1.%desc: AMD PCnet-PCI
  2. dev.le.1.%driver: le
  3. dev.le.1.%location: slot=18 function=0
  4. dev.le.1.%pnpinfo: vendor=0x1022 device=0x2000 subvendor=0x1022 subdevice=0x2000 class=0x020000
  5. dev.le.1.%parent: pci0

което явно е в следствие липсата на DEBUG режим зададен в кърнела?В примерите (тук и тук които гледам, има редовете със stats.rx
Пример:

Код
GeSHi (Bash):
  1. dev.bge.0.stats.rx.FCSErrors: 0
  2. dev.bge.0.stats.rx.AlignmentErrors: 0
  3. dev.bge.0.stats.rx.xonPauseFramesReceived: 0
  4. dev.bge.0.stats.rx.xoffPauseFramesReceived: 0
  5. dev.bge.0.stats.rx.ControlFramesReceived: 0
  6. dev.bge.0.stats.rx.xoffStateEntered: 0
  7. dev.bge.0.stats.rx.FramesTooLong: 799

Интересното е, че имам друго FreeBSD, пуснато на същия този виртуален ценър, има доволно много грешки:

Код
GeSHi (Bash):
  1. netstat -i -b -n -I le0
  2. Name    Mtu Network       Address              Ipkts Ierrs     Ibytes    Opkts Oerrs     Obytes  Coll
  3. le0    1500 <Link#1>      00:*:56:*:51:* 408290228 27731 2348559573 180869579     0 1882814631     0
  4. le0    1500 192.168.1.0/ 192.168.1.102    148512144     - 3975305044 166778260     - 2743899286     -

. но няма никакви проблеми с него и има почти две години ъптайм.

Като цяло питането ми е, правилно ли съм се насочил (активиране на DEBUG и прекомпилиране) или да търся нещо друго?

« Последна редакция: Мар 15, 2015, 19:15 от mrowcp »
Активен

Some Things Just Are The Way They Are

solarflux

  • Участник
  • *****
  • Публикации: 100
    • Профил
netstat -m

sysctl kern.ipc.nmbclusters


7 е EOL преди 6 години, защо не ъпгрейднеш до 9.1?

не разбирам особено руски но виж и http://www.opennet.ru/base/sys/freebsd_panic_solution.txt.html

все пак ъпгрейд...
Активен

mrowcp

  • Участник
  • *****
  • Публикации: 450
    • Профил
netstat -m

sysctl kern.ipc.nmbclusters


7 е EOL преди 6 години, защо не ъпгрейднеш до 9.1?

не разбирам особено руски но виж и http://www.opennet.ru/base/sys/freebsd_panic_solution.txt.html

все пак ъпгрейд...

Код
GeSHi (Bash):
  1. #netstat -m
  2. 36/1884/1920 mbufs in use (current/cache/total)
  3. 13/1567/1580/25600 mbuf clusters in use (current/cache/total/max)
  4. 0/512 mbuf+clusters out of packet secondary zone in use (current/cache)
  5. 0/119/119/12800 4k (page size) jumbo clusters in use (current/cache/total/max)
  6. 0/0/0/6400 9k jumbo clusters in use (current/cache/total/max)
  7. 0/0/0/3200 16k jumbo clusters in use (current/cache/total/max)
  8. 35K/4081K/4116K bytes allocated to network (current/cache/total)
  9. 0/0/0 requests for mbufs denied (mbufs/clusters/mbuf+clusters)
  10. 0/0/0 requests for jumbo clusters denied (4k/9k/16k)
  11. 0/73/6656 sfbufs in use (current/peak/max)
  12. 0 requests for sfbufs denied
  13. 0 requests for sfbufs delayed
  14. 7 requests for I/O initiated by sendfile
  15. 0 calls to protocol drain routines
  16.  
  17. # sysctl kern.ipc.nmbclusters
  18. kern.ipc.nmbclusters: 25600

За ъпгрейд и аз се замислям, но има някой неща които ме притеснява да не се счупят.


EDIT:

Тъй като 35K/4081K/4116K bytes allocated to network (current/cache/total) ми грабна окото и почнах пак да ровя, попаднах на няколко интересни неща. Едното е

(FIXED) Network mbuf Leak / Exhaustion in FreeBSD 9.0 / 9.1

Хардуеъра пак е DELL и пак става дума за VMWare. Питането ми е, как точно да приложа този пач, за да не омажа нещо и изобщо подходящ ли е за мен, след като там се прилага на 9.0 , а аз съм с 7.0

Другото интересно е изхода от командата:

Код
GeSHi (Bash):
  1. netstat -i -w 1
  2.            input        (Total)           output
  3.   packets  errs      bytes    packets  errs      bytes colls
  4.      2167     0    1379324       2385     0    2006399     0
  5.      1759     0    1219967       1975     0    1820319     0
  6.      1762     0    1173325       1975     0    1771865     0
  7.      3973     0    2048293       4367     0    3164761     0
  8.      4797     0    1846254       5030     0    2543221     0
  9.      3504     0    1458508       3705     0    2054196     0
  10.      2115     0    1554739       2216     0    1894367     0
  11.      2212     1    1484002       2533     0    2392537     0
  12.      9573     5    7839601      12353     0   14573350     0
  13.      9594     5    8082062      12598     0   15286981     0
  14.      9560     6    8077210      12497     0   15133796     0
  15.      9904     7    8153599      12835     0   15304480     0
  16.     11425     7    9625388      14974     0   18238077     0
  17.     11353     9    9481029      14816     0   17864126     0
  18.     12814     4   10335644      16579     0   19374355     0
  19.      9452     7    7778154      12246     0   14551521     0
  20.     11317     8    9533213      14887     0   18043389     0
  21.      7649     3    6345857       9931     0   11812625     0
  22.      9019     2    6945061      11518     0   12721038     0
  23.      6832     1    4976888       8380     0    8712343     0
  24.     12726    12   10850582      15599     0   17323673     0

Тези грешки на входа трябва ли да ме притесняват?


« Последна редакция: Мар 17, 2015, 12:49 от mrowcp »
Активен

Some Things Just Are The Way They Are

koue

  • Участник
  • *****
  • Публикации: 74
  • Distribution: FreeBSD
  • Window Manager: fluxbox
    • Профил
Направи нова виртуална машина и мигрирай каквото ти трябва. Вода и от десет кладенеца да носиш не означава, че някой не се е изпикал в тях.
Активен

Спрете да им прощавате, че не знаят какво правят!

solarflux

  • Участник
  • *****
  • Публикации: 100
    • Профил
Вместо да се занимаваш с индивидуални пачове
https://www.freebsd.org/doc/handbook/updating-upgrading-freebsdupdate.html

според https://www.freebsd.org/releases/10.0R/installation.html не би трябвало да има проблеми между последния пач левъл на 7 и 10.0, но все пак си с виртуална машина, така че аз бих си направил един клон за тест и бих пробвал там (или снапшот или квот и да е стига да има вариант за бърз ролбек)...

от личния ми опит с freebsd-update между версии, винаги е било безпроблемно или в най-лошия случай проблемите са вече документирани и има решения

след като си с 10.0 можеш да ъпдейтнеш до 10.1, и ако и след това продължаваш да имаш проблем - да отвориш ПР
Активен