Как анализировать системные вызовы, когда ваш диск находится в режиме только для чтения, а вывод данных 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 или Программистам.
Похоже, ваша система не может даже загрузить утилиты / библиотеки, необходимые для трассировки.
Правильная вещь здесь:
- восстановить диск (т.е. восстановить из резервной копии и т. д.)
- вернуть систему в оптимальное состояние
- должным образом протестируйте свою программу контролируемым образом (сделав файловую систему доступной только для чтения в нужное время)