Re: After install - Fatal trap 18 ATA problem?

From: Anish Mistry <mistry.7_at_osu.edu>
Date: Mon, 19 Jun 2006 15:25:19 -0400
On Monday 19 June 2006 14:09, Yar Tikhiy wrote:
> On Fri, Jun 16, 2006 at 01:32:55PM -0400, Anish Mistry wrote:
> > I'm trying to get FreeBSD installed on one of my systems and I'm
> > getting the error stated below.  I did have FreeBSD 6-STABLE
> > installed a few months ago on this very system.  The only change
> > is that FreeBSD is now installed on the second harddrive instead
> > of the first.  This is using the -CURRENT snapshot for this
> > month.  The install goes just fine.  I also get a very similar
> > error when I install 6.1 too.
> >
> > This seems to be the same problem as:
> > http://unix.derkeiler.com/Mailing-Lists/FreeBSD/stable/2006-03/ms
> >g00539.html
> >
> > But I don't have a built-in compact flash reader attached via.
> > ATA.
> >
> > Full verbose boot+backtrace:
> > http://am-productions.biz/docs/boot-panic-script.txt.gz
> >
> > rr232x: no controller detected.
> > ata0-slave: pio=PIO4 wdma=WDMA2 udma=UDMA100 cable=80 wire
> > ata0-master: pio=PIO4 wdma=WDMA2 udma=UDMA66 cable=80 wire
> > ad0: setting PIO4 on nForce2 Pro chip
> > ad0: setting UDMA66 on nForce2 Pro chip
> > ad0: 17206MB <IBM DJNA-371800 J78OA30K> at ata0-master UDMA66
> >
> >
> > Fatal trap 18: integer divide fault while in kernel mode
> > cpuid = 0; apic id = 00
> > instruction pointer	= 0x20:0xc089b49f
> > stack pointer	        = 0x28:0xc0c20b64
> > frame pointer	        = 0x28:0xc0c20bec
> > 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		= 0 (swapper)
> > [thread pid 0 tid 0 ]
> > Stopped at      __qdivrem+0x3b: divl    %ecx,%eax
> > db> bt
> > Tracing pid 0 tid 0 td 0xc0a02fb8
> > __qdivrem(219b700,0,0,0,0) at __qdivrem+0x3b
> > __udivdi3(219b700,0,0,0) at __udivdi3+0x16
>
>                       ^^^
> Looks like an attempt to divide something (0x219b700) by zero
> using quad_t arithmetics.
>
> > ad_describe(c26e8580,c26e8580,c262c280,c265e400,c25ec200) at
> > ad_describe+0x1b3
> > ad_attach(c26e8580) at ad_attach+0x1e7
> > device_attach(c26e8580,c0957850,c26e8580,c265e000,c265e400) at
> > device_attach+0x58
> > device_probe_and_attach(c26e8580) at device_probe_and_attach+0xe0
> > bus_generic_attach(c25d2a80,c25d2a80,1,0,c26e8580) at
> > bus_generic_attach+0x16
> > ata_identify(c25d2a80) at ata_identify+0x1c8
> > ata_boot_attach(0) at ata_boot_attach+0x3e
> > run_interrupt_driven_config_hooks(0,c1ec00,c1e000,0,c0450af5) at
> > run_interrupt_driven_config_hooks+0x18
> > mi_startup() at mi_startup+0x96
> > begin() at begin+0x2c
> > db> ps
> > --
> > Anish Mistry
>
> FWIW, I saw an integer divide fault apparently related to the ata
> driver when I tried to test a low-end VIA-based mobo with FreeBSD.
> I gave it away soon and had had no time for debugging though.
>
> Could you see using gdb what C code is at ad_describe+0x1b3
> in your kernel?
How do I do this without creating a kernel dump?  Do I need to setup 
remote GDB over a serial console?

-- 
Anish Mistry

Received on Mon Jun 19 2006 - 17:25:26 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:38:57 UTC