Basic System Problem Analysis - August 2003
77
Case Study: Hang Memory Dump continued
Now that you have the address of the semaphore you could, for example, use the function
VAINFO to get the BASE_VA (or address) of that semaphore. It is very likely to be a
part of some larger structure. VAINFO could also be used to tell you the OBJ_CLASS
(object class) of the structure it is in. These would be useful data points.
$169 ($35) nmdat > wl vainfo(b.88ae18d0, 'BASE_VA')
$b.88ae0000
$16a ($35) nmdat > wl vainfo(b.88ae18d0, 'OBJECT_CLASS')
$16e
With the object class you can set a filter on the value, $16e and then use the SYMLIST or
SYML command to see what that may be. Object class constants in the OS all begin with
the string OBJCL
$16b ($35) nmdat > env filter '16e'
$16c ($35) nmdat 16e> syml objcl@,,const
OBJCL_TURBO_GLOBAL_CB CONST INTEGER $16e
So the semaphore is in an object whose class is OBJCL_TURBO_GLOBAL_CB.