Как анализировать системные вызовы, когда ваш диск находится в режиме только для чтения, а вывод данных strace - "Ошибка шины"?

У нас проблема с дисками, из-за которой все точки монтирования были доступны только для чтения. Выход из dmesg:

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

Мы хотим проанализировать программу, которая в данный момент работает, потому что она должна была умереть, когда он не мог записать в файловую систему. Итак, мы хотели бы использовать strace для отладки системных вызовов.

Но вывод strace является:

Bus error

Кажется, что некоторые ресурсы недоступны для машины или какая-то ошибка низкого уровня. Я застрял о том, как анализирует программу, прежде чем системные администраторы восстановят диск.

2 ответа

Решение

Ваш диск (вероятно, почти наверняка) умирает. Похоже, ваши сисадмины уже пришли к такому выводу.
Приготовьтесь к похоронам, одев свои резервные копии в черное и выполнив тест на восстановление.


Re: ошибка шины - это должно было быть немедленно смертельным для рассматриваемой программы. Это эквивалент сигнала "WTF? Это невозможно!" ( Смотрите этот ТАК вопрос - они говорят о памяти, но то же самое может случиться с дисками или любым адресуемым компонентом). Я не помню, можете ли вы поймать SIGBUS, но если ваша программа делает это, это не должно.
Дальнейшие вопросы о том, как отследить / отладить ваше программное обеспечение, действительно следует задавать в StackOverflow или Программистам.

Похоже, ваша система не может даже загрузить утилиты / библиотеки, необходимые для трассировки.

Правильная вещь здесь:

  • восстановить диск (т.е. восстановить из резервной копии и т. д.)
  • вернуть систему в оптимальное состояние
  • должным образом протестируйте свою программу контролируемым образом (сделав файловую систему доступной только для чтения в нужное время)
Другие вопросы по тегам