DOCUMENT ID: 1153-02 SYNOPSIS: How to use ADB OS RELEASE: PRODUCT: Solaris x86 KEYWORDS: adb thread process panic DESCRIPTION: This is an example on how to use ADB to find the cause of a system 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. 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$