Partilhar via


Analisando drivers paralisados e Time-Outs

Ao depurar um driver de miniporte SCSI, as três causas mais comuns para travamentos e tempos limite são:

  • O DPC do miniporto SCSI não está em execução

  • O miniporto SCSI não solicita a próxima solicitação

  • Uma solicitação não está sendo concluída pelo miniporto SCSI, geralmente porque está aguardando registros de mapa.

Se você suspeitar que o DPC do miniporto SCSI não está em execução, use !pcr para exibir a fila DPC do processador atual. Se a rotina DPC da porta SCSI estiver na fila DPC, coloque um ponto de interrupção nessa rotina para determinar se essa rotina é chamada. Caso contrário, use !scsikd.scsiext em cada dispositivo. Considere a seguinte saída de exemplo da extensão !scsikd.scsiext :

0: kd> !scsikd.scsiext 86353040 
Common Extension:
   < ..omitted.. >
Logical Unit Extension:
  Address (3, 0, 1, 0) Claimed  Enumerated Visible
  LuFlags (0x00000000):
  Retry 0x00          Key 0x008889ff
  Lock 0x00000000  Pause 0x00000000   CurrentLock: 0x00000000
  HwLuExt 0x862e6f00  Adapter 0x8633db28  Timeout 0x0000000a
  NextLun 0x00000000  ReadyLun 0x00000000
  Pending 0x00000000  Busy 0x00000000     Untagged 0x00000000
 
  . . .  
 
Request list @0x86353200:
      Tick count is 2526
      SrbData 8615d700  Srb 8611f4fc  Irp 8611f2b8   Key 60197  <1s
      SrbData 85e72868  Srb 86100c3c Irp 861009f8   Key e29dc7  <1s 

Se o slot de tempo limite for -1 e o slot não marcado for diferente de zero ou o slot de tempo limite for diferente de zero e houver solicitações mostradas, o miniporto não solicitará a próxima solicitação.

Como alternativa, se o slot de repetição e o slot ocupado forem diferentes de zero, uma solicitação poderá não ser concluída pelo miniporto SCSI porque está aguardando registros de mapa. Da mesma forma, se os slots não marcados e pendentes forem diferentes de zero, o miniporto SCSI poderá estar aguardando registros de mapa. Em ambos os casos, o endereço do SRB (bloco de solicitação SCSI) é o endereço no slot ocupado e o endereço da solicitação que não está sendo concluída. Para obter mais informações sobre o SRB, use a extensão !minipkd.srb com esse endereço como entrada.

A extensão !devobj determina se o miniporto SCSI está aguardando registros de mapa. Use o endereço do objeto do dispositivo que está emitindo a solicitação como entrada para !devobj. Se o IRQ atual for diferente de zero, é altamente provável que o miniporto SCSI esteja aguardando registros de mapa.