Events For Panics ================= 1 Event Classes --------------- We introduce 3 new ireport classes as follows: Event Class Stability ----------------------------------------------- ---------------- ireport.os.sunos.panic.dump_pending_on_device Project Private ireport.os.sunos.panic.dump_available Project Private ireport.os.sunos.panic.savecore_failure Project Private We also introduce a panic defect class: defect.sunos.kernel.panic Project Private The telemetry event class names are all Project Private - we will be diagnosing a high-level list.suspect event so there is no need to commit the telemetry classes. The defect event class name is also Project Private. This is expected to be raised in a future Contract with consumers such as automated call logging software. 2 Ireport Event Payload ----------------------- We define version 0 of the 3 telemetry events. The three telemetry events have a number of ireport attribute members in common, and a couple reserved for the "pending" and for the "available" events. P = ireport.os.sunos.panic.dump_pending_on_device A = ireport.os.sunos.panic.dump_available F = ireport.os.sunos.panic.savecore_failure Event Attr Member Type Usage Stability ----------------------- --------------- ------- ---------- dumpdir string PAF Project Private os-instance-uuid string PAF Project Private crashtime int64 PAF Project Private panic-time string PAF Project Private panicstr string PAF Project Private panicstack string PAF Project Private dump-incomplete boolean value PAF Project Private fm-panic boolean_value PAF Project Private savecore-enabled boolean value P.. Project Private will-attempt-savecore boolean_value P.. Project Private compressed boolean_value .A. Project Private instance int64 .A. Project Private failure-reason string ..F Project Private Attr Member Description --------------- ------------------------------------------ dumpdir The savecore directory that savecore will extract crashes to. os-instance-uuid This is the Solaris OS instance UUID of the image that crashed. The case that is opened will have this UUID, too. This UUID will appear in ::status output if mdb is run on the panic. crashtime Epoch time of the panic panic-time The panic crashtime as a string, formatted with strftime and format "%c %Z" (equivalent to %a %b %d %H:%M:%S %Y %Z). panicstr The formatted panic string. panicstack Symbolic panic stacktrace written as a single string with character '|' separating frames. dump-incomplete Value 1 if the crashdump as written to the dump device is incomplete (as recorded in the dump header, e.g. if the dump device did not have enough space for the entire dump). fm-panic Value 1 if this was an FMA-initiated panic - the result of calling fm_panic(). savecore-enabled Value 1 if dumpadm -y is in effect. will-attempt-savecore Value 1 if savecore will go on to attempt to extract the crashdump to dumpdir. compressed Value 1 if the saved dump is compressed, in which case is at path /vmdump.; otherwise it is at /{unix,vmcore}. instance The instance number used in saving the crash to the savedir, i.e. the 'N' in vmdump.N, unix.N and vmcore.N failure-reason If savecore fails this is the reason it gave for failure. 3 Defect Event Payload We define version 0 of event class defect.sunos.kernel.panic All standard defect event payload members of version, class, certainty, resource and asru do not have their stability raised from that specified in portfolio 2010.006. It is likely that the class name sability will be raised in a Contract as mentioned in 1, and such a contract will also apply to selected members of the class-specific payload below. A defect event may also include class-specific payload members, and for defect.sunos.kernel.panic they are as follows: Event Specific Payload Member Type Stability ----------------------- --------------- ------------------ savecore-success boolean_value Project Private [failure-reason] string Project Private os-instance-uuid string Project Private panicstr string Project Private panicstack string Project Private crashtime int64 Project Private panic-time string Project Private [dump-dir] string Project Private [dump-files] string array Project Private The payload member definitions for those shared with telemetry events (os-instance-uuid, panicstr, panicstack, crashtime, panic-time) are as in 2 above. The descriptions for the others are: Member Description --------------- ------------------------------------------ savecore-success Value 1 if savecore successfully extracted the crash dump without error. A value of 0 indicates either that savecore is not enabled or that savecore was not successful - the latter case is distinguished by the presence of the failure-reason payload member. failure-reason If savecore is enabled but failed to extract the crashdump then this is the error string that savecore provided to describe the failure. dump-dir If savecore was successful then this is the directory to which the crash dump was extracted. dump-files If savecore was successful then this set of files all in directory dump-dir is the extracted crash dump. Currently this set will be a single file vmdump.N if compressed savecore is enabled (dumpadm -z on), of a pair unix.N and vmcore.N is compression is disabled (dumpadm -z off). Consumers (who have negotiated an appropriate contract) who wish to spool the crash dump away for analysis should blindly copy all the dump-files from dump-dir (e.g., if a future refinement to savecore results in their being a different set of filenames used then a blind copy will still retrieve all the files of the new format).