불량 블록으로 인해 세그폴트가 발생하는 이유는 무엇입니까?

불량 블록으로 인해 세그폴트가 발생하는 이유는 무엇입니까?

드라이브에 오류가 있는지 확인하기 위해 마운트된 파티션을 확인하려고 합니다.

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

어 오. 무슨 뜻이에요? 세그폴트는 왜 badblocks발생하나요? 고칠 수 있나요?

(시스템은 CentOS 버전 4.6이고 드라이브는 SATA 드라이브입니다)

편집하다:사용 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 +++

답변1

마지막 몇 줄은 strace다소 지루한 이야기를 들려줍니다. badblocks드라이브 장치를 열고, 크기를 확인하고, 닫고, 다시 열고, 몇 가지 작업을 수행하지만 어떻게든 실패 strace하고 표시되지 않습니다. gdb더 깊이 파고들려면 유사한 도구를 사용해야 합니다 .

파티션을 마운트 해제하면 증상이 사라지고 badblocks안정적인 작업을 할 수 있게 됩니다. 분명히 이것은 수행하려는 읽기 전용 테스트를 수행하는 데만 필요한 것은 아니지만 일부 낮은 수준의 일반적이지 않은 작업이 제대로 작동하지 않은 것은 이번이 처음이 아닙니다.

보너스: 파티션을 마운트 해제하면 이 기능을 사용할 수 있으며, badblocks -n이는 디스크 표면 문제를 찾아 복구하는 데 훨씬 더 효과적입니다.

답변2

이것은 어리석은 실수로 판명되었으며 내 사본 badblocks에 버그가 있는 것처럼 보였습니다.

나는 그것을 실행했고 yum update그 이후에는 badblocks더 이상 세그폴트가 발생하지 않았습니다 .

관련 정보