Ketika program berbasis SDL tertentu (misalnya prboom , dosbox ) dijalankan dari konsol (bukan X) dan berakhir tiba-tiba karena beberapa alasan (misalnya terbunuh atau rusak), layar terkunci; Itu hanya menjadi hitam, dan tetap hitam sampai Anda reboot.
Ini berbeda dengan demo hello_video dan hello_triangle yang mengembalikan konsol ke keadaan semula meskipun dihentikan secara tiba-tiba.
Apa sebenarnya yang salah di sini, dan adakah cara untuk memulihkannya tanpa me-reboot?
Saya telah mengamati ini di Debian Squeeze . Saya tidak tahu apakah OS lain terpengaruh.
Sunting : Saya harus mengklarifikasi hanya konsol (output HDMI / RCA, keyboard USB) yang terpengaruh, bukan koneksi ssh (yang terus berfungsi dengan baik.)
alt+F1-5
?Jawaban:
Ini hampir pasti merupakan bug pada driver grafis. Kedengarannya seolah-olah SDL menginisialisasi API grafik, di mana titik driver grafis mengambil alih tampilan. Karena Anda membunuh SDL, ia tidak pernah menjalankan kode untuk mendeinisialisasi API grafik, dan hanya duduk menunggu perintah grafis yang tidak akan pernah datang.
Ini menunjukkan API grafis yang dirancang dengan buruk, tetapi karena semuanya adalah milik, tidak ada cara untuk mengetahui dan tidak ada cara untuk memperbaikinya.
(Saya telah mengamati perilaku yang serupa pada PC di mana SDL "meraih" pointer mouse dan tidak mencabutnya jika crash atau terbunuh, tetapi tidak pernah dengan layar.)
sumber
SIGKILL
ke salah satu demo GLES2 dan melihat apa yang terjadi.Saya tahu ini adalah pertanyaan yang sangat lama, tapi saya mengalami masalah yang sama dengan ini ketika menjalankan Mupen64Plus via EmulationStation. Konsol saya akan terlihat bagus, tetapi keyboard akan benar-benar tidak responsif sampai saya melakukan reboot.
Masalahnya adalah keyboard itu tetap dalam mode RAW setelah program dihentikan. Solusinya adalah menambahkan baris berikut pada akhir dari script shell yang berlari itu:
kbd_mode -a
. Ini mengatur ulang keyboard ke mode XLATE dan memungkinkannya untuk berfungsi kembali.Meskipun ini tidak menyelesaikan bagian "layar hitam" dari masalah, saya menduga pasti ada cara analog untuk mengatur ulang framebuffer konsol untuk mendapatkan video kembali.
sumber
Saya tidak bisa mengatakan apa masalahnya dengan aplikasi SDL, tetapi hanya mengetik:
seharusnya membuat konsol dapat digunakan lagi
sumber