Как я могу отладить проблему Suspend-to-RAM в Linux?


15

Я надеюсь получить основанные на опыте предложения о том, как отладить проблему приостановки в оперативную память. Советы, специфичные для моей ситуации (подробно описаны ниже), были бы хорошими, но я также заинтересован в общих советах о том, как отлаживать такие проблемы.

Проблема:

Часто, когда я пытаюсь приостановить работу своего компьютера, он застревает в состоянии «не приостановлено, но не проснулся». Часто экран будет полностью черным, но иногда на нем будет отображаться следующее сообщение об ошибке:

GLib-WARNING **: getpwuid_r(): failed due to unknown user id (0) 

Кроме того, это состояние будет также сопровождаться поклонниками, пинающими в разгаре. Единственный способ вывести его из этого состояния - вручную отключить ноутбук.

Немного информации

$ uname -a
Linux baltar 2.6.35-22-generic #34-Ubuntu SMP Sun Oct 10 09:26:05 UTC 2010 x86_64 GNU/Linux

$ lsb_release -a
Distributor ID:    Ubuntu
Description:    Ubuntu 10.10
Release:    10.10
Codename:    maverick

Я посмотрел на /var/log/dmesgи /var/log/pm-suspend.log, но я не знаю, что я ищу, и ничто не выделяется. Я не уверен, связано ли это, но я нашел много следующего в /var/log/kern.log:

EXT4-fs (dm-0): re-mounted. Opts: errors=remount-ro,commit=600

1
Если вы считаете, что вас укусила конкретная ошибка, о которой я упоминаю здесь, пожалуйста, не публикуйте ответ «Я тоже» - так как это действительно не ответ. Не стесняйтесь задавать этот вопрос, чтобы побудить других ответить на него. В конце концов, хороший ответ даст не только советы по решению этой конкретной проблемы, но и советы по устранению проблем такого типа.
Стивен Д

Удаляется после уточнения на Зал Учителей. Единственная потенциально ценная информация No LSB modules are available.отображается сразу после lsb_release -a.
Мацей Пехотка

Я пометил ответ «сработал для меня», но я все же думаю, что более общий ответ «как отладить суспензию в оперативную память» был бы действительно полезен здесь.
Стивен Д

Ответы:


3

Есть ли у вас графический чипсет Intel? Я получал то, что похоже на ту же проблему на моем ThinkPad X200s, работающем под управлением Ubuntu 10.10, и этот обходной путь (с 2008 года!) Исправил это для меня: http://ubuntuforums.org/showpost.php?p=6105510&postcount=12


6

PM_DEBUG и PM_TRACE , по-видимому, самые глубокие средства отладки, которые существуют сейчас. Если вы не получаете ничего значимого из журналов более высокого уровня, AFAIK - это единственный механизм, к которому можно прибегнуть при появлении страшного «загадочного пустого экрана при возобновлении». Чаще всего мы имеем дело с довольно часто незаметно сломанным драйвером устройства. Вы также можете взглянуть на мою сагу об отладке беспроводного драйвера Broadcom brcmsmac в сообщении об ошибке ядра 34682, чтобы узнать, что разработчики ядра предлагают и ищут.


1

У меня есть подозрения, что проблема может быть из-за того, что BIOS неправильно сообщает о том, что на самом деле использует lowmem.

По умолчанию эта опция действует:

memory_corruption_check_size=64K

Вы можете попытаться установить для этого значения более высокие значения, чтобы сканер повреждения памяти исследовал большую часть низкоуровневой памяти.

Ищите "memory_corruption_check_size" в

и т.п.

Мне было бы интересно узнать, что вы найдете, если что-нибудь.


0

Мой опыт работы в этой области был в Windows CE, а не в Linux.

Во время цикла приостановки / возобновления ОС будет постепенно отключать функциональность ОС, ограничивая вашу способность получать точную надежную информацию о том, что происходит с использованием функциональности ОС. Кроме того, ваше соединение для мониторинга может (например, если проблема связана со временем) изменить результат.

Инструменты предпочтения начинаются с подключения отладчика C / C ++ к ОС на верхнем уровне, а на очень низком уровне - отправка данных по последовательному порту / POST-кодам или на аппаратный отладчик JTAG X86 или его эквиваленты. Конечный результат - долгие часы работы над потоком кода и нахождение точки, когда он ведет себя не так, как обычно. На этом этапе исправление обычно очевидно. Сохраняйте хорошие записи и вносите одно изменение за раз.

Потребовалось 6 недель, чтобы определить проблему с включением питания, которую мы имели с Windows CE. У нас была процессорная плата PC104, которую мы могли отключить на 10 или 60 секунд и включить без проблем. Однако если отключить питание на 25 секунд, оно не включится. Оказалось, что у нас достаточно емкости, чтобы сохранить содержимое DRAM без изменений в течение примерно 20 секунд, поэтому при коротком цикле отключения Windows CE думала, что он восстанавливается из приостановленного состояния. Когда вся память была сохранена, она фактически преуспела бы, выполняя возобновление, когда память была частично повреждена, это стало бы довольно запутанным во время возобновления.

Удачи.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.