Panic when removing a SCSI device entry
Kostik Belousov
kostikbel at gmail.com
Sun May 8 11:33:37 UTC 2011
On Sun, May 08, 2011 at 12:45:43PM +0200, Joerg Wunsch wrote:
> As Kostik Belousov wrote:
>
>
> > > and it's the indirection of *(dev)->si_siblings.le_prev that hits a
> > > NULL pointer. Obviously, LIST_REMOVE doesn't anticipate that
>
> > Is it NULL pointer dereference ? See below.
>
> Yes, the fault address in the page fault is 0.
>
> > Please provide the full printout from the panic. Also, it would
> > be useful to get the dump and do "p *dev" from the frame of
> > destroy_devl(). I might need further information after the requested
> > data is provided.
>
> Unfortunately, I somehow cannot get the system to provide a coredump.
>
> The dmesg printout from the panic is:
>
> sa0 at sym0 bus 0 scbus1 target 0 lun 0
> sa0: <QUANTUM DLT7000 2560> Removable Sequential Access SCSI-2 device
> sa0: 20.000MB/s transfers (10.000MHz, offset 15, 16bit)
> (sa0:sym0:0:0:0): removing device entry
>
>
> Fatal trap 12: page fault while in kernel mode
> cpuid = 0; apic id = 00
> fault virtual address = 0x0
> fault code = supervisor write, page not present
> instruction pointer = 0x20:0xc052f346
> stack pointer = 0x28:0xe98504a0
> frame pointer = 0x28:0xe98504c4
> 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 = 52518 (mt)
> trap number = 12
> panic: page fault
> cpuid = 0
> Uptime: 1d4h55m31s
>
> (This includes the sa0 device arrival/removal messages.)
>
> The disassembly of the respective part of destroy_devl() is:
>
> 0xc052f32e <destroy_devl+30>: test $0x10,%dl
> 0xc052f331 <destroy_devl+33>: je 0xc052f34c <destroy_devl+60>
> 0xc052f333 <destroy_devl+35>: mov 0x4c(%esi),%edx
> 0xc052f336 <destroy_devl+38>: test %edx,%edx
> 0xc052f338 <destroy_devl+40>: je 0xc052f340 <destroy_devl+48>
> 0xc052f33a <destroy_devl+42>: mov 0x50(%esi),%eax
> 0xc052f33d <destroy_devl+45>: mov %eax,0x50(%edx)
> 0xc052f340 <destroy_devl+48>: mov 0x50(%esi),%edx
> 0xc052f343 <destroy_devl+51>: mov 0x4c(%esi),%eax
> 0xc052f346 <destroy_devl+54>: mov %eax,(%edx)
> 0xc052f348 <destroy_devl+56>: andl $0xffffffef,0x4(%esi)
>
> I could perhaps setup a serial console, so to get at least DDB
> functioning if you'd like to see more details. A remote GDB might
> also be possible, but will require more work (setting up the
> respective environment on a second machine).
Serial console is fine, I do want to see a backtrace.
There is also "show cdev" command in ddb, that might provide some
useful information.
INVARIANTS may be also useful, since the kernel might catch the corruption
earlier.
>
> > Thing you may try meantime is the following patch.
>
> OK, I'll do that tonight, so let's see how the subsequent nightly
> backups proceed.
>
> --
> cheers, J"org .-.-. --... ...-- -.. . DL8DTL
>
> http://www.sax.de/~joerg/ NIC: JW11-RIPE
> Never trust an operating system you don't have sources for. ;-)
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 196 bytes
Desc: not available
Url : http://lists.freebsd.org/pipermail/freebsd-scsi/attachments/20110508/3bc3344f/attachment.pgp
More information about the freebsd-scsi
mailing list