คอนโซลใช้ไม่ได้หลังจากเรียกใช้แอป SDL


22

เมื่อโปรแกรมที่ใช้SDLบางโปรแกรม (เช่นprboom , dosbox ) ถูกเรียกใช้จากคอนโซล (ไม่ใช่ X) และยุติอย่างกระทันหันด้วยเหตุผลบางประการ (เช่นถูกฆ่าหรือ segfaults) หน้าจอจะล็อคขึ้น มันจะเป็นสีดำและยังคงเป็นสีดำจนกว่าคุณจะรีบูต

สิ่งนี้ตรงกันข้ามกับการสาธิตhello_video และ hello_triangleซึ่งส่งคืนคอนโซลให้กลับสู่สถานะเดิมแม้ว่าจะถูกยกเลิกทันที

เกิดอะไรขึ้นที่นี่และมีวิธีการกู้คืนโดยไม่ต้องรีบูตเครื่องหรือไม่?

ฉันได้สังเกตในDebian Squeeze ฉันไม่ทราบว่าระบบปฏิบัติการอื่นได้รับผลกระทบหรือไม่


แก้ไข : ฉันควรชี้แจงเฉพาะคอนโซล (เอาต์พุต HDMI / RCA, แป้นพิมพ์ USB) ได้รับผลกระทบไม่ใช่การเชื่อมต่อ ssh (ซึ่งยังคงใช้งานได้ดี)


คุณสามารถเปลี่ยนเป็น tty อื่นได้alt+F1-5หรือไม่
Jivings

@Jivings ไม่ชุดคีย์เหล่านั้นไม่มีผลใด ๆ
finnw

อืม .. คุณสามารถใช้SysRq และคำสั่ง REISUB ได้หรือไม่?
Jivings

@Jivings no แต่ (1) ความสามารถในการรีบูตไม่ใช่ปัญหา: ฉันสามารถออกคำสั่ง shutdown จากการเชื่อมต่อ ssh และ (2) ฉันกำลังมองหาโซลูชันที่ไม่ต้องรีบูต
finnw

โอ้ ssh ในคำสั่ง ssh คุณสามารถฆ่า X server และทำการรีสตาร์ทได้ หรือรีสตาร์ท runlevel
Jivings

คำตอบ:


6

นี่เป็นข้อผิดพลาดในไดรเวอร์กราฟิก ดูเหมือนว่า SDL กำลังเริ่มต้นกราฟิก API ณ จุดที่ไดรเวอร์กราฟิกใช้แทนจอแสดงผล เนื่องจากคุณฆ่า SDL จึงไม่รันโค้ดเพื่อตัดการกำหนดค่ากราฟิก API ดังนั้นจึงเป็นเพียงการรอคำสั่งกราฟิกที่จะไม่เกิดขึ้น

นี่เป็นการระบุว่า API กราฟิกที่ออกแบบมาไม่ดี แต่เนื่องจากสิ่งทั้งหมดเป็นกรรมสิทธิ์จึงไม่มีทางรู้และไม่มีวิธีแก้ไข

(ฉันได้สังเกตพฤติกรรมที่คล้ายกันบนพีซีที่ SDL "คว้า" ตัวชี้เมาส์และไม่ได้ทำการปลดมันถ้ามันล้มเหลวหรือถูกฆ่า แต่ไม่เคยมีจอแสดงผลเลย)


1
SDL มี "ร่มชูชีพ" ที่ใช้ตามปกติเพื่อทำความสะอาดแม้ในกรณีของ segfaults ดังนั้นบางสิ่งที่ไม่ถูกต้อง
เฟล็กโซ

ร่มชูชีพจะจับ SIGSEGV เท่านั้นไม่ใช่ SIGKILL
อลิสแตร์บักซ์ตัน

น่าสนใจฉันจะต้องลองส่งSIGKILLการสาธิต GLES2 หนึ่งรายการและดูว่าเกิดอะไรขึ้น
finnw

ฉันกำลังพัฒนาแอพ SDL ในปี 2560 และดูเหมือนว่ายังมีข้อผิดพลาดในการใช้ CTRL-C เพื่อออกจากแอป SDL ฉันมีปัญหาที่ SDL และอินพุตเทอร์มินัลจะค่อย ๆ ไม่ตอบสนองเมื่อฉันทดสอบแอปรันซ้ำ ๆ และเลิกใช้ CTRL-C ฉันพบว่าถ้าฉันออกจากแอปอย่างถูกต้องจากในแอพ SDL ฉันก็จะไม่มีปัญหา
พอลสโลคัม

1

ฉันรู้ว่านี่เป็นคำถามที่เก่ามาก แต่ฉันพบปัญหาคล้ายกันนี้เมื่อใช้งาน Mupen64Plus ผ่าน EmulationStation คอนโซลของฉันจะแสดงผลดี แต่แป้นพิมพ์จะไม่ตอบสนองโดยสิ้นเชิงจนกว่าฉันจะทำการรีบูต

ปัญหาคือว่าแป้นพิมพ์ที่เหลืออยู่ในโหมด RAW หลังจากโปรแกรมสิ้นสุดลง kbd_mode -aการแก้ปัญหาคือการเพิ่มบรรทัดต่อไปนี้ในตอนท้ายของเชลล์สคริปต์ที่วิ่งไปนี้: สิ่งนี้จะรีเซ็ตแป้นพิมพ์ไปที่โหมด XLATE และทำให้สามารถใช้งานได้อีกครั้ง

แม้ว่าสิ่งนี้จะไม่สามารถแก้ปัญหาส่วน "หน้าจอสีดำ" ได้ แต่ฉันเดาว่าต้องมีวิธีที่คล้ายกันในการรีเซ็ตคอนโซลเฟรมบัฟเฟอร์เพื่อให้ได้วิดีโอกลับมา


-5

ฉันไม่สามารถพูดได้ว่ามีปัญหาอะไรกับแอป SDL แต่เพียงพิมพ์:

reset

ควรทำให้คอนโซลใช้งานได้อีกครั้ง


4
... เขาควรจะพิมพ์สิ่งนั้นอย่างไรถ้าคอนโซลไม่สามารถใช้งานได้?
Jivings

1
Jivings พูดอะไร แป้นพิมพ์ไม่ตอบสนอง AFACT ไม่ใช่เพียงแค่หน้าจอ
finnw

และการออกคำสั่งนี้จาก ssh (การเปลี่ยนเส้นทางไปยัง / dev / tty1) ก็ไม่ได้ช่วยอะไรเช่นกัน
finnw

คุณควรลบคำตอบของคุณเพื่อไม่ให้ถูกลบหลู่ในการให้อภัย
อเล็กซ์ L

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