Re: [zfs-discuss] vdev_disk_io_start() sending NULL pointer in ldi_ioctl()
On Thu, 9 Apr 2009, shyamali.chakrava...@sun.com wrote: Hi All, I have corefile where we see NULL pointer de-reference PANIC as we have sent (deliberately) NULL pointer for return value. vdev_disk_io_start() error = ldi_ioctl(dvd-vd_lh, zio-io_cmd, (uintptr_t)zio-io_dk_callback, FKIOCTL, kcred, NULL); Note that it's not just in vdev_disk_io_start() that we pass NULL. It's everywhere - there are four calls in vdev_disk.c to ldi_ioctl, and they all pass NULL. ldi_ioctl() expects last parameter as an integer pointer ( int *rvalp). I see that in strdoictl(). I'm curious about your configuration. What is the setup you've got that is going through stream i/o? Regards, markm ___ zfs-discuss mailing list zfs-discuss@opensolaris.org http://mail.opensolaris.org/mailman/listinfo/zfs-discuss
Re: [zfs-discuss] vdev_disk_io_start() sending NULL pointer in ldi_ioctl()
shyamali.chakrava...@sun.com wrote: Hi All, I have corefile where we see NULL pointer de-reference PANIC as we have sent (deliberately) NULL pointer for return value. vdev_disk_io_start() ... ... error = ldi_ioctl(dvd-vd_lh, zio-io_cmd, (uintptr_t)zio-io_dk_callback, FKIOCTL, kcred, NULL); ldi_ioctl() expects last parameter as an integer pointer ( int *rvalp). I see that in strdoictl(). Corefile I am analysing has similar BAD trap while trying tostw%g0, [%i5] ( clr [%i5] ) This doesn't make since as strdoictl() should only be called on a stream. Normal call path should be to cdev_ioctl() and eventually to sdioctl(). Can you provide the stack? - George /* * Set return value. */ *rvalp = iocbp-ioc_rval; */ Is it a bug?? This code is all we do in vdev_disk_io_start(). I would appreciate any feedback on this. regards, --shyamali ___ zfs-discuss mailing list zfs-discuss@opensolaris.org http://mail.opensolaris.org/mailman/listinfo/zfs-discuss ___ zfs-discuss mailing list zfs-discuss@opensolaris.org http://mail.opensolaris.org/mailman/listinfo/zfs-discuss
Re: [zfs-discuss] vdev_disk_io_start() sending NULL pointer in ldi_ioctl()
Hi Mark, Thanks for responding. In my case cdev_ioctl() is going through vxdmp:dmpioctl() pc: 0x134ccb8 vxdmp:dmpioctl+0x8: stw%g0, [%i5] ( clr [%i5] ) npc: 0x134ccbc vxdmp:dmpioctl+0xc: or %g0, %i0, %o0 ( mov %i0, %o0 ) trapvxdmp:dmpioctl+0x8(, 0x422, 0x3000c3b7108, 0x8020, 0x60032c03df0, 0x0) genunix:ldi_ioctl(0x6004c8cce78, 0x422, 0x3000c3b7108, 0x8000, 0x60032c03df0, 0x0) - frame recycled zfs:vdev_disk_io_start+0xc8() zfs:zio_vdev_io_start(0x3000c3b6eb8) - frame recycled As we see %i5 is NULL from ldi_ioctl() we panic here. --shyamali On 04/10/09 06:26, Mark J Musante wrote: On Thu, 9 Apr 2009, shyamali.chakrava...@sun.com wrote: Hi All, I have corefile where we see NULL pointer de-reference PANIC as we have sent (deliberately) NULL pointer for return value. vdev_disk_io_start() error = ldi_ioctl(dvd-vd_lh, zio-io_cmd, (uintptr_t)zio-io_dk_callback, FKIOCTL, kcred, NULL); Note that it's not just in vdev_disk_io_start() that we pass NULL. It's everywhere - there are four calls in vdev_disk.c to ldi_ioctl, and they all pass NULL. ldi_ioctl() expects last parameter as an integer pointer ( int *rvalp). I see that in strdoictl(). I'm curious about your configuration. What is the setup you've got that is going through stream i/o? Regards, markm ___ zfs-discuss mailing list zfs-discuss@opensolaris.org http://mail.opensolaris.org/mailman/listinfo/zfs-discuss