DOCUMENT ID:  1179-02

SYNOPSIS:     How to use ADB to find out why your system panicked.

OS RELEASE:   

PRODUCT:      Solaris x86

KEYWORDS:     ADB system panicked panic


DESCRIPTION:

This is an example on how to use ADB to find the cause of a panic.


SOLUTION:

To do this, go through the following steps.

NOTE: You will see different address and threads when you run this on
your machine, but if these steps are followed, it will help you see why
your system panicked. 

ADB Example

Objective: Use adb on a core dump to determine:

1. What instruction actually failed
2. What Process called or used the instruction
3. What was the failing file (argument)

		
1. What instruction actually failed?

The first step is to run adb on the saved kernel and core file in the
/var/crash/host_name directory and to examine the stack to determine
where the system was when it crashed. 

Following is an example, the kernel and core file name may be different. 

# adb -k unix.0 vmcore.0
physmem 232a
$c
complete_panic (0x1, 0xf00ab800, 0xff1cfa24, 0xf00c9c1c, 
0xf000a9ac, 0xe5
) + 108
do_panic (0xf00b3408, 0xf0000, 0x30, 0xb, 0xb, 0xf00abc00) + 1c
die (0x9, 0xf2796f4, 0x30, 0x80, 0x1, 0xf00b3408) + 5c
trap (0x9, 0xf02796f4, 0x30, 0x80, 0x1, 0xf02788d8) + 554
           ^^^^^^^^^^
           ||||||||||
           This is the pointer to the structure

The stack trace does not look very helpful initially, since the ramdisk
routines are not on the stack trace.  However, the call to "trap()"
provides useful bits of information like the first argument which is the
trap type - in this case 9- which is a T_DATA_FAULT trap (from
.  See the SPARC Architecture, version 8 manual for more
information. 

The second argument to trap() is a pointer to a regs structure
containing the state of the register at the time of the trap. 

0xf02796f4$