On 9/27/06, Darren J Moffat <[EMAIL PROTECTED]> wrote:
Gaurav Dhiman wrote:
> Can someone let me know if OpenSolaris do support some in-built
> functionality for dumping and analysing the kernel crash, something
> like LKCD in Linux. If not then is some community working on that ?

Sorry but I burst out laughing when I saw this.  It is a really good
question and I'm not laughing at you, but if you have the Solaris
context you would know why it is so funny :-)

SunOS has been doing crash dumps from before the very first bit of Linux
code ever hit the internet!  The only reason LKCD exists is because lots
of people who were used to real post mortem dump from SunOS and IRIX and
other UNIX or other OS systems want the same on Linux too (and rightly so!)

OpenSolaris has IMO some of the best postmortem analysis tools
available.  In the past we had adb and crash but those got a bit long in
the tooth.  mdb and its use of CTF data in the objects and crash files
is just plain brilliant.  I just love being able do do stuff like this:

banking:pts/1# mdb unix.0 vmcore.0
Loading modules: [ unix krtld genunix specfs dtrace cpu.AuthenticAMD.15
uppc pcplusmp scsi_vhci ufs ip sctp arp usba nca lofs cpc random zfs
logindmux ptm sppp nfs ]
 > ::stack
vpanic()
assfail3+0xb9(fffffffff092b5c0, 0, fffffffff092b5b8, 0,
fffffffff092b598, 5f3)
dbuf_hold_impl+0x329(ffffffffb8aaea08, 0, 0, 0, fffffffff0922181,
fffffe8000d067e8)
dbuf_hold+0x2b(ffffffffb8aaea08, 0, fffffffff0922181)
dnode_hold_impl+0xbd(ffffffffb8a03a00, 1, 1, fffffffff0921363,
fffffe8000d06918
)
dnode_hold+0x2b(ffffffffb8a03a00, 1, fffffffff0921363, fffffe8000d06918)
dmu_buf_hold+0x45(ffffffffb8a03a28, 1, 0, 0, fffffe8000d06990)
zap_lockdir+0x58(ffffffffb8a03a28, 1, 0, 1, 1, fffffe8000d06a68)
zap_lookup+0x4d(ffffffffb8a03a28, 1, fffffffff0937290, 8, 1,
ffffffffbc612020)
dsl_pool_open+0x94(ffffffff988611c0, a, ffffffff98861278)
spa_load+0x566(ffffffff988611c0, ffffffffb970bc98, 3, 1)
spa_tryimport+0x90(ffffffffb970bc98)
zfs_ioc_pool_tryimport+0x31(fffffe80c80ec000)
zfsdev_ioctl+0x115(b600000000, 5a06, 8042ce4, 100003, fffffe80c4bfde30,
fffffe8000d06e8c)
cdev_ioctl+0x48(b600000000, 5a06, 8042ce4, 100003, fffffe80c4bfde30,
fffffe8000d06e8c)
spec_ioctl+0x86(ffffffffbd970a00, 5a06, 8042ce4, 100003, fffffe80c4bfde30,
fffffe8000d06e8c)
fop_ioctl+0x37(ffffffffbd970a00, 5a06, 8042ce4, 100003, fffffe80c4bfde30,
fffffe8000d06e8c)
ioctl+0x16b(3, 5a06, 8042ce4)
sys_syscall32+0x1ff()

 > ffffffffb8a03a00::print dnode_t
{
     dn_struct_rwlock = {
         _opaque = [ 0 ]
     }
     dn_link = {
         list_next = 0xffffffff988611c0
         list_prev = 0xfffffe80c7fc0c00
     }
     dn_objset = 0xffffffffb8aaea08

....

and so on all without need to build with '-g' or need special tools.

--
Darren J Moffat


Thanks alot to all of you for giving me enough pointers to  to dig
into and get more information. Actually I am new to OpenSolaris
kernel, I have worked in linux kernel, so dont know much about whats
there in opensolaris and whats not.

Anyway thanks once again. I will keep on posting my more queries .....

regards,
Gaurav
_______________________________________________
opensolaris-code mailing list
[email protected]
http://mail.opensolaris.org/mailman/listinfo/opensolaris-code

Reply via email to