Konsole nach dem Ausführen der SDL-App unbrauchbar

22

Wenn bestimmte SDL- basierte Programme (z. B. prboom , dosbox ) von der Konsole aus ausgeführt werden (nicht von X) und aus irgendeinem Grund abrupt beendet werden (z. B. "kill" oder "segfaults"), wird der Bildschirm nicht mehr angezeigt. Es wird nur schwarz und bleibt schwarz, bis Sie neu starten.

Dies steht im Gegensatz zu den Demos hello_video und hello_triangle, die die Konsole in den ursprünglichen Zustand zurückversetzen, selbst wenn sie abrupt beendet werden.

Was genau läuft hier falsch und gibt es eine Möglichkeit, es wiederherzustellen, ohne neu zu starten?

Ich habe dies in Debian Squeeze beobachtet . Ich weiß nicht, ob andere Betriebssysteme betroffen sind.


Edit : Ich sollte klarstellen, dass nur die Konsole (HDMI / RCA-Ausgang, USB-Tastatur) betroffen ist, nicht die SSH-Verbindungen (die weiterhin einwandfrei funktionieren.)

finnw
quelle
Können Sie zu einem anderen tty wechseln, das Sie drücken alt+F1-5?
Jivings
@Jivings, nein, diese Tastenkombinationen haben keine Wirkung.
13.
Hmm .. Können Sie SysRq und die REISUB-Befehle verwenden ?
Jivings
@Jivings nein, aber (1) Die Möglichkeit zum Neustart ist nicht das Problem: Ich kann einen Befehl zum Herunterfahren über eine SSH-Verbindung ausgeben und (2) ich suche nach einer Lösung, die keinen Neustart erfordert.
13.
Oh ssh. Nun, in Ihrer SSH-Eingabeaufforderung können Sie den X-Server beenden und neu starten. Oder starten Sie das Runlevel neu.
Jivings

Antworten:

6

Dies ist mit ziemlicher Sicherheit ein Fehler im Grafiktreiber. Es hört sich so an, als würde SDL die Grafik-API initialisieren. Zu diesem Zeitpunkt übernimmt der Grafiktreiber die Anzeige. Da Sie SDL beendet haben, wurde nie der Code zum Deinitialisieren der Grafik-API ausgeführt, und es wartet nur auf Grafikbefehle, die niemals kommen werden.

Dies deutet auf eine schlecht gestaltete Grafik-API hin, aber da das Ganze proprietär ist, gibt es keine Möglichkeit, es zu erkennen und zu beheben.

(Ich habe ein ähnliches Verhalten auf einem PC beobachtet, auf dem SDL den Mauszeiger "greift" und ihn nicht aufhebt, wenn er abstürzt oder getötet wird, aber niemals mit dem Display.)

Alistair Buxton
quelle
1
SDL hat einen "Fallschirm", den es normalerweise einsetzt, um auch im Fall von Segfaults aufzuräumen, sodass noch etwas nicht stimmt.
Flexo
Der Fallschirm fängt nur SIGSEGV, nicht SIGKILL.
Alistair Buxton
Das ist interessant, ich muss versuchen, SIGKILLan eine der GLES2-Demos zu senden und zu sehen, was passiert.
27.
Ich entwickle eine SDL-App im Jahr 2017 und es scheint immer noch einen Fehler bei der Verwendung von STRG-C zum Beenden einer SDL-App zu geben. Ich hatte das Problem, dass SDL- und Terminal-Eingaben nach und nach nicht mehr reagierten, wenn ich die App testete, sie wiederholt ausführte und mit STRG-C beendete. Ich habe festgestellt, dass ich das Problem nie habe, wenn ich die App in der SDL-App ordnungsgemäß beende.
Paul Slocum
1

Ich weiß, dass dies eine sehr alte Frage ist, aber ich hatte ein ähnliches Problem, als ich Mupen64Plus über EmulationStation ausführte. Meine Konsole würde gut aussehen, aber die Tastatur würde nicht mehr reagieren, bis ich einen Neustart durchführte.

Das Problem war, dass die Tastatur nach dem Beenden des Programms im RAW-Modus verblieb. Die Lösung war die folgende Zeile am Ende des Shell - Skript hinzuzufügen , die es lief: kbd_mode -a. Dadurch wird die Tastatur in den XLATE-Modus zurückgesetzt und kann wieder verwendet werden.

Obwohl dies nicht den "schwarzen Bildschirm" Teil des Problems behebt, muss es eine analoge Möglichkeit geben, den Konsolenframebuffer zurückzusetzen, um das Video zurück zu bekommen.

glindsey1979
quelle
-5

Ich kann nicht sagen, was das Problem mit der SDL-App ist, sondern nur Folgendes eingeben:

reset

sollte die Konsole wieder benutzbar machen

neofutur
quelle
4
... Wie soll er das eingeben, wenn die Konsole unbrauchbar ist?
Jivings
1
Was Jivings gesagt hat. Die Tastatur reagiert nicht, AFACT ist nicht nur der Bildschirm.
14.
Und das Ausgeben dieses Befehls von ssh (Weiterleiten an / dev / tty1) hat auch nicht geholfen.
14.
Sie sollten Ihre Antwort löschen, damit Sie nicht wieder in Vergessenheit geraten
Alex L
3
Als Bonus erhalten Sie das Gruppendruck-Abzeichen
David Sykes