Назад | Перейти на главную страницу

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

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

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

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

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

Bus error

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

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

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

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

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


Re: ошибка шины - это должно было немедленно привести к летальному исходу для рассматриваемой программы. Это сигнальный эквивалент «Чего? Это невозможно!» (См. Этот вопрос SO - они говорят о памяти, но то же самое может случиться с дисками или любым адресным компонентом). Я не помню, можете ли вы поймать SIGBUS, но если ваша программа это делает, этого не должно.
Дополнительные вопросы о том, как отслеживать / отлаживать ваше программное обеспечение, действительно следует задавать на Переполнение стека или Программисты.