No Linux, tenho um processo bloqueado em modo ininterrupto de suspensão (estado D). Como posso investigar o que está causando isso?
Estou executando um kernel "comum" (uma compilação Debian), sem nenhum recurso especial de depuração.
Não há entrada de registro relevante - na verdade, nada foi registrado entre a hora em que o processo foi iniciado e a hora em que o notei.
strace
não pode anexar ao processo, pois está em modo ininterrupto de suspensão. E mesmo que eu soubesse qual chamada de sistema era chamada, isso não necessariamente me ajudaria. Eu preciso saber o que está acontecendo dentro do kernel.
Especificamente, o comando sync
entra em modo ininterrupto de suspensão :( Portanto, devo ter um problema de E / S em algum lugar, mas todos os meus sistemas de arquivos parecem funcionar normalmente. Pode haver uma entrada de log antiga sobre um erro de E / S Não consigo encontrá-lo (esta máquina não foi reinicializada há muito tempo, isso é um monte de entradas de log.) Posso pelo menos saber qual subsistema está bloqueando sync
? Por exemplo, obter um kernel backtrace para o encadeamento do kernel correspondente a um PID / TID específico?
(Tenho certeza de que a reinicialização corrige isso ou revela o erro, mas estou perguntando como investigar isso, não como pressionar cegamente um botão.)