.C
.Y.H


Debugging crash dumps

with

SDA
.s
.c
.y.hDebugging crash dumps
.x
  1. Description of crash

     a. Line printer goes offline
     b. Line printer comes online
        after 3 hours
     c. System crashes immediately
     d. A crash dump is taken
.s
.c
.yAnalysis of crash dump
.x
  a. Examine stack to find exception
.s
.l
.c
     .
     .
SDA> SHOW STACK

 Current operating stack (INTERRUPT):
 
                8006A378  8000844B	ACP$WRITEBLK+0A0
                8006A37C  000034B0	
                8006A380  00000000	
                8006A384  000BE600	
                8006A388  00000680	
                8006A38C  7FFEEC00	CTL$GL_KSPINI
                8006A390  7FFEF000	CTL$GL_KSPINI+400
                8006A394  7FFEF878	CTL$GL_KSPINI+C78
 
         SP =>  8006A398  7FFDC340	
                8006A39C  8006A3A0	
                8006A3A0  80004E7D	EXE$REFLECT+0D4
                8006A3A4  04080009	
                8006A3A8  00000004	
.s
.c
                8006A3AC  7FFDC368
                8006A3B0  FFFFFFFD
                8006A3B4  8001774E
                8006A3B8  0000074F
.$[7m
                8006A3BC  00000005               
                8006A3C0  0000000C               
                8006A3C4  00000000               
                8006A3C8  80069E00               
                8006A3CC  8005D003               
                8006A3D0  04080000               
.$[0m
                8006A3D4  80009604    EXE$FORKDSPTH+01C
                8006A3D8  00000008
                8006A3DC  8005D02C
                8006A3E0  00006D16
                8006A3E4  000001F0
                8006A3E8  00000000
                8006A3EC  00000008
                8006A3F0  00000662
                8006A3F4  00000000
                8006A3F8  00001B08
                8006A3FC  83C00001
.s
.h
.c
.yAnalysis of crash dump
.x
  a. Examine stack to find exception

  b. Given PC, find code segment
.s
.c
.l.$[?3h
                                     0297   479 ;
                                     0297   480 ; START NEXT OUTPUT SEQUENCE
                                     0297   481 ;
                                     0297   482  
                  50   54   02   C1  0297   483 10$:	ADDL3	#LP_DBR,R4,R0		;CALCULATE ADDRESS OF DATA BUFFER REGISTER
                    51   6C A5   3C  029B   484 	MOVZWL	UCB$W_BOFF(R5),R1	;GET NUMBER OF CHARACTERS REMAINING
                  52   8080 8F   B0  029F   485 	MOVW	#^X8080,R2		;GET CONTROL REGISTER TEST MASK
                            08   11  02A4   486 	BRB	25$			;
                       64   52   B3  02A6   487 20$:	BITW	R2,(R4)			;PRINTER READY OR HAVE PAPER PROBLEM?
                            08   15  02A9   488 	BLEQ	30$			;IF LEQ NOT READY OR PAPER PROBLEM
.$[1;5m
                       60   83   90  02AB   489 	MOVB	(R3)+,(R0)		;OUTPUT NEXT CHARACTER
.$[0m
                         F5 51   F4  02AE   490 25$:	SOBGEQ	R1,20$			;ANY MORE CHARACTERS TO OUTPUT?
                            70   11  02B1   491 	BRB	70$			;
                                     02B3   492  
                                     02B3   493 ;
                                     02B3   494 ; PRINTER IS NOT READY OR HAS PAPER PROBLEM
                                     02B3   495 ;
                                     02B3   496  
                            21   12  02B3   497 30$:	BNEQ	40$			;IF NEQ PAPER PROBLEM
                       51   01   A1  02B5   498 	ADDW3	#1,R1,UCB$W_BOFF(R5)	;SAVE NUMBER OF CHARACTERS REMAINING
.s
.$[?3l
.c
.y.hAnalysis of crash dump
.x
  a. Examine stack to find exception

  b. Given PC, find code segment

  c. Determine basic cause of exception
.s
.c
.y



The character output routine has
exceeded buffer bounds causing an
access violation.
.s
.c
.yAnalysis of crash dump
.x
  a. Examine stack to find exception

  b. Given PC, find code segment

  c. Determine basic cause of exception

  d. Examine I/O data structures to
     obtain further information
.s
.c.l
I/O data structures
-------------------
LPA0
----

	UCB address:      8005D160
	Device status:        0110   online,bsy
	Characteristics:  08840043

IRP address     80067A60     Device class          43     SVPN          00000000
CRB address     8005D120     Device type           01     SVAPTE        80062720
VCB address     800680A0     DEVBUFSIZ            132     BOFF              0795
FQFL            800039A8     DEVDEPEND       40000082     BCNT              006D
FQBL            800039A8     DEVSTS              0001     ERTCNT               0
Fork IPL               8     Device IPL            20     ERTMAX               0
Fork PC         8005D02C     Reference count        2     ERRCNT               0
Fork R3         80069DBB     Operation count    75972     Owner UIC    [  0,  0]
Fork R4         8001774C     AMB address     8000087C     PID           00010021
.s
.c.y.h

In addition, the UCB can be
examined by individual fields
if desired by using the FORMAT
command.
.s
.c.l.x
    .
    .
SDA> FORMAT G5D160

 8005D160   UCB$L_RQFL              800039A8
            UCB$L_FQFL              
 8005D164   UCB$L_RQBL              800039A8
            UCB$L_FQBL              
 8005D168   UCB$W_SIZE                  0080
 8005D16A   UCB$B_TYPE                10
 8005D16B   UCB$B_FIPL              08
 8005D16C   UCB$L_FPC               8005D02C
            UCB$L_ASTQFL            
 8005D170   UCB$L_FR3               80069DBB
            UCB$L_ASTQBL            
 8005D174   UCB$W_MSGMAX                774C
            UCB$L_FR4               
            UCB$L_FIRST             
 8005D176   UCB$W_MSGCNT            8001
.s
.c
.y.hAnalysis of crash dump
.x
e. Notice that BOFF is larger
   than BCNT (buffer size)

f. By code examinition, we
   notice a code section that
   could possibly wipe out BOFF
.s
.c.l
.$[?3h
                                     02B3   494 ; PRINTER IS NOT READY OR HAS PAPER PROBLEM
                                     02B3   495 ;
                            21   12  02B3   497 30$:	BNEQ	40$			;IF NEQ PAPER PROBLEM
                       51   01   A1  02B5   498 	ADDW3	#1,R1,UCB$W_BOFF(R5)	;SAVE NUMBER OF CHARACTERS REMAINING
                         6C A5       02B8       
                                     02BA   499 	DSBINT				;DISABLE INTERRUPTS
                    64   40 8F   88  02C0   500 	BISB	#^X40,LP_CSR(R4)	;SET INTERRUPT ENABLE
.$[1;5m
                                     02C4   501 	WFIKPCH	40$,#12			;WAIT FOR INTERRUPT
.$[0m
                                     02CE   502 	IOFORK				;CREATE A FORK PROCESS
                            C1   11  02D4   503 	BRB	10$			;
                                     02D6   505 ;
                                     02D6   506 ; PRINTER HAS PAPER PROBLEM
                                     02D6   507 ;
                         7A A5   94  02D6   509 40$:	CLRB	UCB$B_LP_OFLCNT(R5)	;CLEAR OFFLINE COUNTER
.$[1;5m
                       51   01   A1  02D9   510 	ADDW3	#1,R1,UCB$W_BOFF(R5)	;SAVE NUMBER OF CHARACTERS REMAINING
.$[0m
                         6C A5       02DC       
                            64   B4  02DE   511 50$:	CLRW	LP_CSR(R4)		;DISABLE PRINTER INTERRUPT
                                     02E0   512 	SETIPL	UCB$B_FIPL(R5)		;LOWER TO FORK LEVEL
.s
.$[?3l
.c
