Basic System Problem Analysis - August 2003

61
Case Study: SA663 continued
Recognizing that we do not have the source code and cannot just go look at what may
have caused the problem we can try to find out some relevant information.
The 2
nd
level procedure tm_unlink_plfd_and_gdpd of tm_close_common made the call to
sm_quarantine_gufd. The question is, why did it want to quarantine the GUFD?
We can dump out the code for that 2
nd
level routine from its beginning up to the location
of the PC counter in that routine as shown in the illustration above. The DC command
expects a “count” and so we provide a value 4 bytes larger than the current PC offset and
then because that offset represents bytes and we want 32 bit words we divide by 4.
That formula will produce an inclusive list of all instructions executed from the
beginning of the procedure through the instruction pointed to by PC.
Also note that while the DC command could have been used, the DCX macro was used
instead. This macro translates the “long call” sequence of LDIL and BLE and displays
the name of the procedure being called by that sequence.