Review of Panic!

Panic! Unix System Crash Dump Analysis
Chris Drake and Kimberley Brown
Prentice Hall

Reviewed by Nick Christenson,

March 30, 1998

Prior to Panic! appearing on the scene, I didn't realize that there was a need for a book like this. If asked, I would have wondered if it was really necessary for someone to author a work covering the crashing of Unix systems and how to find out what went wrong. I also would have been very much mistaken. While it may seem that the target audience of this book would an unbelievably small number of people, there is a sizeable audience that would benefit greatly from the information it holds.

Panic! starts off with an introduction which covers the intended audience, differences between different Unix flavors, some notational conventions, information about the authors, etc.. The rest of the book is divided into three sections.

Part one wastes no time in getting to the crux of the matter. It starts with the basics, the differences between a crashed and hung system, how the panic() system call works, savecore, understanding the system header files, and my favorite section, how to crash one's own system. Also covered is probably the most obscure Unix system utility, adb. This is noteworthy in and of itself, as this is the only decent explanation of how to use this cryptic tool I've seen anywhere. Prior to this book, one could not expect to learn any more than the most trivial uses of adb without a serious investment of time in one-on-one training by a true wizard. If one needs to learn how to use adb, the book will pay for itself many times over.

While the first section pretty much covers what a system administrator needs to know about system crashes and how to deal with them, if the reader has any curiosity whatsoever, they'll want to know more about the kernel internals and what's really happening under the hood. Part two dives right in. After a basic discussion of Sparc assembly and the Sparc microprocessor, the book is a SunSoft Press publication after all, we get an overview of the Virtual Memory system, the scheduler, file systems, device drivers, and interprocess communications. This section also covers general trap handling, watchdog resets, interrupt handling, and basic multiprocessor issues. The reader may not wish to read these sections in detail, but if one encounters a system crash that is particularly difficult to understand, the appropriate chapter in this section is the first place to turn.

The third section is a set of real life examples where the reader gets to follow the thought processes of the authors, who are clearly true experts in the field, as they examine the remains of systems that have crashed. It's rare that the novice or journeyman gets a golden opportunity to walk in the steps of a master, and rarer still to find these occasions, especially so well handled, in print. This is a phenomenal opportunity for the willing student, and one that should not be missed. Included in the book is a CDROM which contains some additional material, adb macros which the reader may find useful, and more case studies to practice on. Usually I'm underwhelmed by what I find on CDROMs included in computer books, but in this case, the CDROM is a valuable addition and complements the book nicely.

Be warned, though, that Panic! is not for the novice. The authors demand a certain familiarity with Unix systems and general system administration. If the reader is just getting their feet wet, I'd set this aside for a little while. Even for an expert system administrator or programmer, the book is challenging, so don't expect to be able to skim through it in a couple of hours.

But what an outstanding challenge it is! It is so rare to find a book that can not only impart knowledge, but wisdom to the reader. Many concepts are presented with laser like clarity. At several points, very complex ideas are communicated elegantly in a single carefully crafted sentence. While SunOS and Solaris are certainly emphasized, the information and techniques presented here are immediately applicable to other Unix operating systems. I learned a great deal from this book, but more importantly, I came to understand a great deal about what I already knew. This is an excellently crafted book, and if the authors were to write another, I would certainly buy it sight unseen.


System administrators seeking to understand why their systems are crashing, and any Unix aficionado seeking to understand system internals are encouraged to purchase and study this book. Although the material here is quite challenging, there are few Unix internals books as good, and absolutely no material even close to this quality on system crashes. Panic! also includes what is clearly the best explanation on using the adb utility available in print. I give this book my highest recommendation, although it is not for the novice or faint of heart.