SDL 앱을 실행 한 후 콘솔을 사용할 수 없음


22

특정 SDL 기반 프로그램 (예 : prboom , dosbox )이 콘솔 (X가 아님)에서 실행되고 어떤 이유로 (예 : 종료 또는 segfault) 갑자기 종료되면 화면이 잠 깁니다. 그냥 검은 색으로 바뀌고 재부팅 할 때까지 검은 색으로 유지됩니다.

이는 콘솔이 갑자기 종료 된 경우에도 콘솔을 원래 상태로 되 돌리는 hello_video 및 hello_triangle 데모 대조적입니다 .

여기서 정확히 무슨 일이 일어나고 있으며 재부팅하지 않고 복구하는 방법이 있습니까?

Debian Squeeze 에서 이것을 관찰했습니다 . 다른 OS가 영향을 받는지 모르겠습니다.


편집 : 콘솔 (HDMI / RCA 출력, USB 키보드)에만 영향을 미치고 ssh 연결 (계속 작동하는)이 아니라는 점을 분명히해야합니다.


다른 tty로 변경할 수 있습니까 alt+F1-5?
Jivings

@Jivings, 아니, 그 키 조합은 효과가 없습니다.
finnw

흠 .. SysRq와 REISUB 명령 을 사용할 수 있습니까 ?
Jivings 2013 년

@Jivings 아니오, 그러나 (1) 재부팅 기능은 문제가되지 않습니다 : ssh 연결에서 종료 명령을 발행 할 수 있으며 (2) 재부팅 할 필요가없는 솔루션을 찾고 있습니다.
finnw

오 ssh. ssh 프롬프트에서 X 서버를 종료하고 다시 시작할 수 있습니다. 또는 런레벨을 다시 시작하십시오.
Jivings 2016 년

답변:


6

이것은 그래픽 드라이버의 버그 일 가능성이 높습니다. SDL이 그래픽 API를 초기화하는 것처럼 들리며,이 시점에서 그래픽 드라이버가 디스플레이를 대신합니다. SDL을 종료했기 때문에 그래픽 API를 초기화 해제하는 코드를 실행하지 않았으므로 절대 오지 않을 그래픽 명령을 기다리는 중입니다.

이것은 잘못 설계된 그래픽 API를 나타내지 만, 모든 것이 독점적이므로 알 방법도없고 고칠 방법도 없습니다.

(SDL이 마우스 포인터를 "잡아"충돌하거나 죽이더라도 마우스 포인터를 움켜 쥐지 않지만 디스플레이에서는 절대로 보이지 않는 PC에서 비슷한 동작을 관찰했습니다.


1
SDL에는 segfault의 경우에도 정리하기 위해 정상적으로 배포되는 "낙하산"이 있으므로 여전히 옳지 않습니다.
Flexo

낙하산은 SIGKILL이 아닌 SIGSEGV 만 잡습니다.
Alistair Buxton 2018 년

흥미 롭습니다 SIGKILL. GLES2 데모 중 하나로 보내서 어떤 일이 일어나는지 확인해야합니다.
finnw

2017 년에 SDL 앱을 개발 중이며 CTRL-C를 사용하여 SDL 앱을 종료하는 데 여전히 버그가있는 것 같습니다. 앱을 테스트하고 반복적으로 실행하고 CTRL-C로 종료 할 때 SDL 및 터미널 입력이 점차 응답하지 않게되는 문제가있었습니다. SDL 앱 내에서 앱을 올바르게 종료하면 문제가 없다는 것을 알았습니다.
Paul Slocum 2012 년

1

나는 이것이 매우 오래된 질문이라는 것을 알고 있지만 EmulationStation을 통해 Mupen64Plus를 실행할 때 이와 비슷한 문제가 발생했습니다. 콘솔이 제대로 표시되지만 재부팅을 수행 할 때까지 키보드가 완전히 응답하지 않습니다.

문제는 프로그램이 종료 된 후 키보드가 RAW 모드로 남아 있다는 것입니다. 해결책은 그것을 실행 한 쉘 스크립트의 끝에 다음 줄을 추가하는 것이 었습니다 kbd_mode -a. 키보드를 XLATE 모드로 재설정하고 다시 작동 할 수 있습니다.

이 방법으로 문제의 "검은 색 화면"부분을 해결할 수는 없지만 비디오를 다시 가져 오려면 콘솔 프레임 버퍼를 재설정하는 유사한 방법이 있어야한다고 생각합니다.


-5

SDL 앱의 문제점을 말할 수는 없지만 다음과 같이 입력하면됩니다.

reset

콘솔을 다시 사용할 수있게해야합니다


4
... 콘솔을 사용할 수없는 경우 어떻게 입력해야합니까?
Jivings 2016 년

1
Jivings가 말한 것. 키보드가 반응하지 않습니다. 화면 만있는 것이 아닙니다.
finnw 2016 년

그리고 ssh에서이 명령을 실행해도 (/ dev / tty1로 리디렉션) 도움이되지 않았습니다.
finnw 2016 년

망각에 빠지지 않도록 답을 삭제해야합니다
Alex L

3
보너스로 당신은 동료 압력 배지를 받게 될 것입니다
David Sykes
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.