Going back through time


We need to go back through time, reviewing the history for this thread. To do this, we need the stack traceback. As a reminder, here it is.

  $c  complete_panic(0xf0049460,0xf05d03ac,0xf05d0238,0x3,0x0,0x1) + 10c  do_panic(?) + 1c  vcmn_err(0xf015f7a8,0xf05d03ac,0xf05d03ac,0x3cad8,0x2,0x3)  cmn_err(0x3,0xf015f7a8,0x0,0x18,0x18,0xf0152400) + 1c  die(0x9,0xf05d04c4,0x3,0x3a6,0x2,0xf015f7a8) + 78  trap(0x9,0xf05d04c4,0xf01822d8,0x3a6,0x2,0x0) + 598  fault(?) + 84  mutex_enter(0x0,0xd,0x64,0x1,0xd,0xf05d06ec)  lookuppn(  0xf05d06e4  ,0x0,0xf05d06ec,0x0,0x0,0xfc01dd14) + 148  lookupname(0x0,0x0,0x1,0x0,0xf05d07f4,0x0) + 28  vn_open(0x3cad8,0x0,0x3,0xb40,0xf05d08ac,0x0) + a4  copen(0x3cad8,0x3,0xb48,0xf05d0920,0x3cad8,0xf0156628) + 70  syscall(0xf0160f3c) + 3e4 

From this, we see that fm_flb made a system call, requesting to open or create a file. copen() is a common routine used to open and create files. It calls vn_open() to open the associated vnode. vn_open() calls lookupname() , which collects the pathname of the file to open. lookupname() calls lookuppn() , which walks each component of the pathname, finally reaching the final component.

The arguments to each of these routines, per the source, are as follows .

 copen      (fname, filemode, createmode, rvp)  vn_open    (pnamep, seg, filemode, createmode, vpp, crwhy)  lookupname (fnamep, seg, followlink, dirvpp, compvpp)  lookuppn   (pnp, followlink, dirvpp, compvpp) 

From this, we can guess at what most of the arguments might be. The letter p used at the end of a variable name usually means "pointer." Sometimes, as done here, you'll see double p's, which usually means "pointer to a pointer." So, vpp is actually a pointer to a vnode pointer, and compvpp is the pointer to the vnode pointer for the final component of the pathname.

As you can tell, you really need the source code at this point. However, let's see what we can do without it.



PANIC. UNIX System Crash Dump Analysis Handbook
PANIC! UNIX System Crash Dump Analysis Handbook (Bk/CD-ROM)
ISBN: 0131493868
EAN: 2147483647
Year: 1994
Pages: 289
Authors: Chris Drake

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net