Date: 27 Dec 2002 07:12:05 -0000 From: doublef@tele-kom.ru Cc: recipient list not shown: ; Subject: Strange panics in mi_switch etc. in 4.4 Message-ID: <20021227071205.690.qmail@mail.tele-kom.ru>
next in thread | raw e-mail | index | archive | help
Hello, I am getting (relatively) random panics in the kernel, mostly at boot-time. The kernel is not `factory-made', i recompiled it, but GENERIC shipped with 4.4-RELEASE also seems to be reproducing the bug (I got it there at least once). The most frequent faults are in mi_switch() called from tsleep() and in tsleep() itself. The callers of tsleep() are different disk routines: biowait(), mount() etc. Here is an extract from the dump: -extract begin- <118>Additional daemons: <118> syslogd Fatal trap 12: page fault while in kernel mode fault virtual address = 0x0 fault code = supervisor write, page not present instruction pointer = 0x8:0xc013cb60 stack pointer = 0x10:0xc3c4ee94 frame pointer = 0x10:0xc3c4eeb8 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 = 119 (syslogd) interrupt mask = net tty bio cam -extract end- In mi_switch(), the place of trouble is:---------\ (kern_synch.c) V if (p->p_stat != SZOMB && p->p_limit->p_cpulimit != RLIM_INFINITY && p->p_runtime > p->p_limit->p_cpulimit) { The != compare fails, p_cpulimit is NULL! They seem to occur when much disk activity is in place, and most frequently appear when i boot the PC the first time a day (?, i rarely manage to boot the first time;). As this can involve HD problems, here's what FreeBSD says about it: ata1-master: DMA limited to UDMA33, non-ATA66 compliant cable ad2: 76319MB <ST380021A> [155061/16/63] at ata1-master WDMA2 The numbers are correct. Note that my olden bios can't handle the whole disk, but IMHO that can't be the cause of trouble. By the way, i can't get /boot/loader to load, because it's outside the addressable area;) The cause of trouble might be being low on core (32MB ONLY) or on stack (dunno, seems to be enough of). How do i figure it out? The STRANGE thing about them is when i put splhigh() - splx() `braces' around the offending instructions, the bugs DISAPPEAR _there_, but reappear in other places; i can only fix some of them, and i can't be running ints disabled all the time! Is there a background proc playing fandango on core? What do i do? Any help will be appreciated. Thanks, Sergey Zaharchenko == DoubleF To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-questions" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20021227071205.690.qmail>