ฉันจะดีบักปัญหา Suspend-to-RAM บน Linux ได้อย่างไร


15

ฉันหวังว่าจะได้รับคำแนะนำจากประสบการณ์เกี่ยวกับวิธีแก้ไขข้อผิดพลาดเกี่ยวกับ suspend-to-RAM คำแนะนำเฉพาะสำหรับสถานการณ์ของฉัน (รายละเอียดด้านล่าง) จะดีมาก แต่ฉันก็สนใจคำแนะนำทั่วไปเกี่ยวกับวิธีการแก้ไขปัญหาดังกล่าว

ปัญหา:

บ่อยครั้งเมื่อฉันพยายามที่จะระงับเครื่องของฉันมันจะติดอยู่ในสถานะ "ไม่หยุดชั่วคราว แต่ไม่ตื่น" บ่อยครั้งที่หน้าจอจะเป็นสีดำสนิท แต่บางครั้งจะมีข้อความแสดงข้อผิดพลาดต่อไปนี้:

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
หากคุณเชื่อว่าคุณถูกกัดด้วยบั๊กเฉพาะที่ฉันพูดถึงที่นี่โปรดอย่าโพสต์คำตอบ "ฉันด้วย" เพราะมันไม่ใช่คำตอบ อย่าลังเลที่จะโหวตคำถามนี้เพื่อกระตุ้นให้ผู้อื่นตอบคำถาม ในที่สุดคำตอบที่ดีจะไม่เพียง แต่ให้คำแนะนำในการแก้ปัญหานี้เท่านั้น แต่ยังมีคำแนะนำสำหรับการแก้ไขข้อบกพร่องของปัญหาประเภทนี้
Steven D

ลบออกหลังจากการชี้แจงในห้องรับรองของครู ข้อมูลที่อาจมีค่าเท่านั้นที่จะNo LSB modules are available.ปรากฏขึ้นหลังจากlsb_release -aนั้น
Maciej Piechotka

ฉันได้ทำเครื่องหมายคำตอบ "ทำงานให้ฉัน" แต่ฉันยังคิดว่าคำตอบทั่วไปมากกว่า "วิธีการดีบั๊กการระงับการใช้ RAM" จะเป็นประโยชน์จริง ๆ ที่นี่
Steven D

คำตอบ:



6

PM_DEBUG และ PM_TRACEเป็นสิ่งอำนวยความสะดวกการดีบักที่ลึกที่สุดที่มีอยู่ในขณะนี้ เมื่อคุณไม่ได้รับอะไรที่มีความหมายจากบันทึกระดับสูง AFAIK นี่เป็นกลไกเดียวที่จะถอยกลับเมื่อพบกับ "หน้าจอว่างเปล่าที่ลึกลับเกี่ยวกับประวัติย่อ" อาการ ส่วนใหญ่เรากำลังติดต่อกับไดรเวอร์อุปกรณ์ที่ชำรุดเสียหาย คุณยังสามารถดูที่ Broadcom brcmsmac wireless debug saga ของฉันที่kernel bug 34682สำหรับสิ่งที่นักพัฒนาเคอร์เนลแนะนำและค้นหา


1

ฉันสงสัยว่าปัญหาอาจเกิดจาก BIOS ไม่ถูกต้องรายงานสิ่งที่ lowmem ใช้จริง ๆ

โดยค่าเริ่มต้นตัวเลือกนี้จะมีผล:

memory_corruption_check_size=64K

คุณสามารถลองตั้งค่าให้เป็นค่าที่มากขึ้นเพื่อให้เครื่องสแกนหน่วยความจำเสียหายตรวจสอบชิ้นส่วนขนาดเล็กของ lowmem

ค้นหา "memory_corruption_check_size" ใน

เป็นต้น

ฉันสนใจที่จะรู้ว่าสิ่งที่คุณค้นหาถ้ามีอะไร


0

ประสบการณ์ของฉันในการทำงานในพื้นที่นี้เป็นใน Windows CE ไม่ใช่ Linux

ระหว่างรอบการหยุดชั่วคราว / ดำเนินต่อระบบปฏิบัติการจะปิดการทำงานของระบบปฏิบัติการอย่างต่อเนื่องเพื่อจำกัดความสามารถของคุณในการรับข้อมูลที่เชื่อถือได้อย่างแม่นยำเกี่ยวกับสิ่งที่เกิดขึ้นโดยใช้ฟังก์ชั่นระบบปฏิบัติการ นอกจากนี้การเชื่อมต่อการตรวจสอบของคุณสามารถ (เช่นหากปัญหาเกี่ยวข้องกับเวลา) แก้ไขผลลัพธ์

เครื่องมือของการกำหนดค่าตามความชอบเริ่มต้นด้วยการเชื่อมต่อดีบักเกอร์ C / C ++ กับระบบปฏิบัติการที่ระดับไฮเอนด์และที่ระดับต่ำสุดมากการส่งข้อมูลลงพอร์ตอนุกรม / รหัส POST หรือบนฮาร์ดแวร์ที่ไม่ใช่ X86 debugger JTAG หรือเทียบเท่า ผลลัพธ์ที่ได้คือการไหลของรหัสนานและค้นหาจุดเมื่อมันทำงานแตกต่างจากพฤติกรรมปกติ ณ จุดนั้นการแก้ไขมักจะชัดเจน จดบันทึกที่ดีและทำการเปลี่ยนแปลงทีละรายการ

ใช้เวลา 6 สัปดาห์ในการระบุปัญหาการเพิ่มพลังงานที่เรามีกับ Windows CE เรามีบอร์ดหน่วยประมวลผล PC104 ที่เราสามารถปิดได้ 10 หรือ 60 วินาทีและเปิดเครื่องโดยไม่มีปัญหา อย่างไรก็ตามหากไฟฟ้าถูกถอดออกเป็นเวลา 25 วินาทีมันจะไม่เปิดขึ้น มันกลับกลายเป็นว่าเรามีความจุเพียงพอที่จะทำให้เนื้อหาของ DRAM ไม่เสียหายโดยไม่มีอำนาจใด ๆ เป็นเวลาประมาณ 20 วินาทีดังนั้นในช่วงปิดเครื่องสั้น Windows CE คิดว่ามันกลับมาทำงานต่อจากสถานะหยุดทำงานชั่วคราว เมื่อหน่วยความจำทั้งหมดถูกเก็บรักษาไว้จริง ๆ แล้วก็จะประสบความสำเร็จในการดำเนินการประวัติเมื่อหน่วยความจำเสียหายบางส่วนก็จะค่อนข้างสับสนในระหว่างการดำเนินการต่อ

โชคดี.

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.