Como analisar as chamadas do sistema quando o disco está em somente leitura e a saída strace é “Erro no barramento”?

1

Nós temos um problema HW com os discos, que fez com que todos os pontos de montagem fossem somente leitura. Saída de dmesg :

end_request: I/O error, dev sda, sector 15574609
sd 0:0:0:0: SCSI error: return code = 0x00040000

Queremos analisar um programa que está atualmente em execução, porque ele deveria ter morrido quando ele não pôde gravar no sistema de arquivos. Então, gostaríamos de usar strace para depurar as chamadas do sistema.

Mas a saída de strace é:

Bus error

Parece que alguns recursos não estão disponíveis para a máquina ou algum erro de baixo nível. Eu estou preso sobre como analisando o programa, antes que os administradores consertem o disco.

    
por ompemi 05.10.2011 / 19:19

2 respostas

1

Seu disco está (provavelmente, de fato, quase certamente) morrendo. Parece que seus administradores já chegaram a essa conclusão.
Prepare-se para o funeral vestindo seus backups em preto e realizando um teste de restauração.

Re: o erro do barramento - isso deve ter sido imediatamente letal para o programa em questão. É o sinal equivalente a "WTF? Isso é impossível!" ( Veja esta pergunta SO - eles estão falando sobre a memória, mas a mesma coisa pode acontecer com discos, ou qualquer componente endereçável). Não me lembro se você pode pegar SIGBUS, mas se o seu programa está fazendo isso não deveria.
Outras perguntas sobre como rastrear / depurar seu software devem ser feitas em StackOverflow ou Programadores .

    
por 05.10.2011 / 19:31
1

Parece que seu sistema não pode nem carregar os utilitários / bibliotecas necessários para fazer o rastreamento.

O correto aqui é:

  • conserte o disco (ou seja, restaure a partir do backup, etc.)
  • recupere o sistema em um estado ideal
  • teste seu programa adequadamente de maneira controlada (tornando o sistema de arquivos pronto para leitura no momento certo)
por 05.10.2011 / 19:33