Bagaimana saya bisa men-debug masalah Suspend-to-RAM di Linux?

15

Saya berharap mendapatkan saran berdasarkan pengalaman tentang bagaimana cara men-debug masalah suspend-to-RAM. Saran khusus untuk situasi saya (dirinci di bawah) akan bagus, tetapi saya juga tertarik pada saran umum tentang cara men-debug masalah tersebut.

Masalah:

Seringkali, ketika saya mencoba untuk menangguhkan mesin saya, itu macet dalam keadaan "tidak ditangguhkan tetapi tidak terjaga". Seringkali layar akan benar-benar hitam tetapi kadang-kadang akan memiliki pesan kesalahan berikut:

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

Selain itu, keadaan ini juga akan disertai oleh para penggemar yang menendang ke gigi tinggi. Satu-satunya cara untuk mengeluarkannya dari kondisi ini adalah mematikan laptop secara manual.

Beberapa informasi

$ 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

Saya sudah melihat /var/log/dmesgdan /var/log/pm-suspend.log, tapi saya tidak tahu apa yang saya cari dan tidak ada yang menonjol. Saya tidak yakin apakah ini terkait, tetapi saya menemukan banyak hal berikut di /var/log/kern.log:

EXT4-fs (dm-0): re-mounted. Opts: errors=remount-ro,commit=600
Steven D
sumber
1
Jika Anda yakin sedang digigit oleh bug spesifik yang saya sebutkan di sini, jangan posting jawaban "saya juga" - karena itu sebenarnya bukan jawaban. Jangan ragu untuk menjawab pertanyaan ini untuk mendorong orang lain untuk menanggapinya. Pada akhirnya, jawaban yang baik tidak hanya akan memberikan saran untuk memecahkan masalah khusus ini, tetapi juga saran untuk men-debug jenis masalah ini.
Steven D
Dihapus setelah klarifikasi di Ruang Guru. Satu-satunya informasi yang berpotensi bernilai No LSB modules are available.ditampilkan setelah itu lsb_release -a.
Maciej Piechotka
Saya telah menandai jawaban "berhasil untuk saya", tetapi saya masih berpikir jawaban yang lebih umum "bagaimana cara debug suspend-to-ram" akan sangat membantu di sini.
Steven D

Jawaban:

6

PM_DEBUG dan PM_TRACE tampaknya merupakan fasilitas debugging terdalam yang ada saat ini. Ketika Anda tidak mendapatkan apa pun yang berarti dari log tingkat tinggi, AFAIK ini adalah satu-satunya mekanisme untuk mundur ketika menghadapi gejala "layar kosong misterius pada resume" yang ditakuti. Paling sering kita berhadapan dengan driver perangkat yang rusak, cukup sering secara halus. Anda juga dapat melihat saga debugging Broadcom brcmsmac nirkabel saya di bug kernel 34682 untuk apa yang disarankan dan dicari oleh pengembang kernel.

lkraav
sumber
1

Saya memiliki kecurigaan bahwa masalah ini mungkin karena BIOS tidak melaporkan dengan benar tentang apa yang benar-benar digunakan oleh lowmem.

Secara default, opsi ini berlaku:

memory_corruption_check_size=64K

Anda dapat mencoba mengaturnya ke nilai yang lebih besar untuk membuat pemindai kerusakan memori memeriksa bongkahan rendah yang lebih besar.

Cari "memory_corruption_check_size" di

dll.

Saya akan tertarik mengetahui apa yang Anda temukan, jika ada.


sumber
0

Pengalaman saya bekerja di bidang ini adalah di Windows CE, bukan Linux.

Selama siklus penangguhan / melanjutkan, OS akan secara proaktif mematikan fungsionalitas OS yang membatasi kemampuan Anda untuk mendapatkan informasi yang dapat diandalkan yang akurat tentang apa yang sedang terjadi menggunakan fungsionalitas OS. Selain itu, koneksi pemantauan Anda dapat (misalnya jika masalah terkait waktu) mengubah hasilnya.

Alat preferensi mulai dengan koneksi debugger C / C ++ ke OS di akhir yang tinggi, dan pada tingkat yang sangat rendah mengirimkan data ke port serial / Kode POST atau pada perangkat keras non-X86, debugger JTAG atau yang setara. Hasil akhirnya adalah berjam-jam mengerjakan alur kode dan menemukan titik ketika berperilaku berbeda dari perilaku normal. Pada titik itu, perbaikannya biasanya jelas. Buat catatan yang baik, dan lakukan satu perubahan setiap kali.

Butuh 6 minggu untuk mengidentifikasi masalah peningkatan daya yang kami miliki dengan Windows CE. Kami memiliki papan prosesor PC104 yang dapat kami matikan selama 10 atau 60 detik dan hidup tanpa masalah. Namun jika daya dilepas selama 25 detik, itu tidak akan menyala. Ternyata kami memiliki kapasitansi yang cukup untuk menjaga konten DRAM tetap utuh tanpa daya selama sekitar 20 detik, sehingga pada siklus pematian pendek, Windows CE mengira itu melanjutkan dari keadaan tertunda. Ketika semua memori disimpan, itu benar-benar akan berhasil melakukan resume, ketika memori sebagian rusak, itu akan agak membingungkan selama resume.

Semoga berhasil.

Michael Shaw
sumber