Что вызывает нулевой символ, записанный в файл непосредственно перед падением ПК? - PullRequest
4 голосов
/ 18 апреля 2011

У нас есть приложение, работающее на нескольких тысячах одинаковых машин.Та же ОС, то же оборудование, та же установка приложения.В очень редких случаях машина зависает.Alt tab, ctrl-alt-del, приложение не отвечает.После проверки файла журнала наших приложений в конец записываются серии нулевых символов, как последние данные перед сбоем.

Я надеюсь использовать этот факт для отладки блокировки.Я предполагаю, что количество записанных нулевых символов эквивалентно пространству, которое мне нужно выделить для моего оператора журнала, но содержимое никогда не записывается на диск.Я также предполагаю, что возникла проблема с дисковым вводом-выводом, предотвратить запись и, конечно, блокировку ОС.Я не могу подтвердить это.Поэтому я думаю, что мой вопрос: видели ли вы когда-либо подобное состояние, как оно возникло, и как вы могли бы устранить его?

Ответы [ 2 ]

2 голосов
/ 19 апреля 2011

NTFS не регистрирует данные (только метаданные), поэтому такие вещи могут происходить. Причина в том, что во время сбоя / зависания были зафиксированы метаданные (размер файла, распределение блоков данных), но не данные (содержимое блока данных). К сожалению, это нормальное поведение с NTFS и не даст вам никакого понимания проблемы, вызывающей зависание.

Таким образом, ответ таков: сбой в «правильное» время может вызвать это.

Кстати: то же самое, конечно, может случиться с FAT / FAT32.

2 голосов
/ 19 апреля 2011

Я видел, как происходили подобные вещи, я думаю, вы смотрите в правильном общем направлении.

Когда это произойдет, я предполагаю, что вы в состоянии точно определить аппаратное обеспечение?после сбоя я бы рекомендовал запустить memtest (http://www.memtest.org/).

Я видел подобные вещи с блоками питания, плохими контроллерами дисков и т. д. Вы можете сходить с ума, пытаясь отследить их.

Похоже, вы идете по этому пути правильно - посмотрите, сможете ли вы найти способ заставить проблему возникать быстрее, когда это произойдет, запустите memtest, запустите chkdsk / R (проверьте журнал событий на наличие ошибок контроллера во времяthis)

есть ли шанс, что вы можете подключить отладчик ядра?

есть ли шанс, что был создан% SystemRoot% \ memory.dmp?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...