Current-Users archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

fatal integer divide fault in dk(4)



Hi,

I got the following fault with a recent -current kernel
on KVM since some days ago.


fatal integer divide fault in supervisor mode
trap type 8 code 0 rip ffffffff801b38fa cs 8 rflags 10246 cr2 0 ilevel
0 rsp fffffe800398cb48
curlwp 0xfffffe80035345c0 pid 0.42 lowest kstack 0xfffffe80039892c0
kernel: integer divide fault trap, code=0
Stopped in pid 0.42 (system) at netbsd:dk_strategy+0x41:        divl
 %esi,%eax
db{0}> bt
dk_strategy() at netbsd:dk_strategy+0x41
disk_read_sectors() at netbsd:disk_read_sectors+0x3b
read_sector() at netbsd:read_sector+0x1d
scan_mbr() at netbsd:scan_mbr+0x32
readdisklabel() at netbsd:readdisklabel+0x150
dk_getdisklabel() at netbsd:dk_getdisklabel+0xbf
dk_open() at netbsd:dk_open+0xf4
cdev_open() at netbsd:cdev_open+0xb2
spec_open() at netbsd:spec_open+0x25d
VOP_OPEN() at netbsd:VOP_OPEN+0x33
dkwedge_discover() at netbsd:dkwedge_discover+0xb4
config_interrupts_thread() at netbsd:config_interrupts_thread+0x2c
db{0}>


The place of rip is around the code below.


        /*
         * The transfer must be a whole number of blocks and the offset must
         * not be negative.
         */
        if ((bp->b_bcount % secsize) != 0 || bp->b_blkno < 0) {
ffffffff801b38f6:       89 c8                   mov    %ecx,%eax
ffffffff801b38f8:       31 d2                   xor    %edx,%edx
ffffffff801b38fa:       f7 f6                   div    %esi
ffffffff801b38fc:       85 d2                   test   %edx,%edx
ffffffff801b38fe:       0f 85 8c 00 00 00       jne
ffffffff801b3990 <dk_strategy+0xd7>
ffffffff801b3904:       48 83 7b 48 00          cmpq   $0x0,0x48(%rbx)
ffffffff801b3909:       0f 88 81 00 00 00       js
ffffffff801b3990 <dk_strategy+0xd7>
                biodone(bp);
                return;
        }


I know what happens easily but I don't know
how to fix it. Can anyone fix it?

Thanks,
  ozaki-r


Home | Main Index | Thread Index | Old Index