Теперь я решил вернуться к проблеме, так как она получила новый виток. Началось с того, что после выхода из hibernate перестали запускаться приложения. В dmesg видно, что падения вызывает segfault. Причем падает не все подряд, а только часть.
May 13 07:16:25 dragoncore kernel: [ 4374.516022] egrep[10517]: segfault at 9eef73d ip 080510fa sp bfcd5a8c error 6 in egrep[8048000+18000] May 18 07:22:56 dragoncore kernel: [10412.759167] urxvt[22902]: segfault at 42a648c8 ip b70e7020 sp bf95d2a0 error 6 in libperl.so.5.10.1[b70a9000+14a000]По причине того, что проблема не всегда воспроизводится а также хронической нехватки времени я просто перезагружал нетбук и продолжал работу. Сегодня мое терпение лопнуло и я решил разобраться в проблеме. Т.к. у меня стоит debsums, то я первым делом запустил проверку целостности пакетов
sudo debsums | grep -v OK$Таким образом ищутся файлы, контрольная сумма которых не совпадает с эталоном. Нашло несколько несовпадений
/usr/bin/dbus-daemon FAILED /lib/libdbus-1.so.3.4.0 FAILED /usr/lib/libgobject-2.0.so.0.2400.2 FAILED /bin/zsh4 FAILEDПосле перезарузки проверка была уже без ошибок.
Для чистоты эксперимента система была обновлена до актуального squeeze + ядро до 2.6.32-31. После как и полагается нетбук был перезагружен. Далее для выяснения причины попробовал запустить бесконечный цикл из связки hibernate и debsums. Чтобы не приходилось каждый раз включать ноутбук, я заменил в /etc/uswsusp.conf
shutdown method = platformна
shutdown method = rebootТеперь после засыпания на диск происходит перезагрузка, а не отключение питания. Для большей автоматизации был написан скрипт
#!/bin/bash PREFIX=/var/log COUNT=0 while true do dmesg -c > /dev/null sync pm-hibernate let COUNT=${COUNT}+1 echo -e "DMESG\n\n*****\n\n" | tee ${PREFIX}/hibernate.${COUNT}.log dmesg | tee -a ${PREFIX}/hibernate.${COUNT}.log echo -e "\n\nDEBSUMS\n\n*****\n\n" | tee -a ${PREFIX}/hibernate.${COUNT}.log debsums | tee -a ${PREFIX}/hibernate.${COUNT}.log | grep -v OK$ if [ $? == 0 ]; then echo -e "\n\nDetected corruption!\n\n" | tee -a ${PREFIX}/hibernate.${COUNT}.log dmesg | tee -a ${PREFIX}/hibernate.${COUNT}.log sync exit 1 fi doneСкрипт выполнялся до тех пор, пока debsums не находил "поврежденные" файлы. Из двух прогонов за сегодня первая ошибка была на 14-й итерации, а второй раз нашло на 2-ой.
Пока я выкрутился через suspend-hybrid (благо новая батарея это позволяет). Завтра попробую тоже самое, но без использования KMS.
Комментариев нет:
Отправить комментарий