Por que o badfoco é segmentado?

2

Estou tentando verificar uma partição montada para ver se a unidade tem erros:

[root@virtuality ~]# /sbin/badblocks -v /dev/sdb1
Segmentation fault

Uh oh . O que isto significa? Por que é badblocks segfaulting? Posso consertar isso?

(o sistema é a versão 4.6 do CentOS, a unidade é uma unidade SATA)

EDITAR: Usando strace :

[root@virtuality ~]# strace /sbin/badblocks -v /dev/sdb1
...[snip]...
open("/dev/sdb1", O_RDONLY)             = 3
ioctl(3, BLKGETSIZE, 0x7fbffff878)      = 0
close(3)                                = 0
open("/dev/sdb1", O_RDONLY)             = 3
--- SIGSEGV (Segmentation fault) @ 0 (0) ---
+++ killed by SIGSEGV +++
    
por Josh 12.01.2011 / 00:40

2 respostas

1

Acontece que este foi um erro numbskull, parece que minha cópia do badblocks pode ter acabado de ter um bug.

Eu corri yum update e depois disso, badblocks não mais segfaults.

    
por 12.01.2011 / 14:19
2

As últimas linhas desse strace contam um conto bastante chato: badblocks abre o dispositivo de drive, obtém seu tamanho, fecha, reabre e depois sai para fazer algum trabalho, que falha de alguma forma strace não aparece. Você teria que usar gdb ou similar para ir mais fundo.

Seu sintoma pode desaparecer se você desmontar a partição, então badblocks tem uma coisa estável para trabalhar. Obviamente, isso não deve ser necessário apenas para fazer o teste somente leitura que você está tentando, mas não seria a primeira vez que alguma operação de uso incomum de nível baixo não funcionava como deveria.

Bônus: se você desmontar a partição, poderá usar badblocks -n , que é muito mais eficaz para encontrar e corrigir problemas na superfície do disco.

    
por 12.01.2011 / 02:53