这与hello_video和hello_triangle演示相反,它们即使突然终止也会使控制台返回其原始状态。
这到底是怎么回事,有没有办法在不重启的情况下恢复它?
我在Debian Squeeze中观察到了这一点。我不知道其他操作系统是否受到影响。
编辑:我应该只说明控制台(HDMI / RCA输出,USB键盘)受到影响,而不是ssh连接(继续工作)很好。)
#1 楼
这几乎可以肯定是图形驱动程序中的错误。听起来SDL似乎正在初始化图形API,此时图形驱动程序将接管显示。因为您杀死了SDL,所以它从未运行过用于初始化图形API的代码,因此它只是在等待永远不会出现的图形命令。这表明图形API设计不良,但是因为整个事情是专有的,没有办法知道,也没有办法解决。
(我在PC上观察到类似的行为,其中SDL会“抓住”鼠标指针,并且在崩溃或崩溃时不会解除锁定。被杀死,但永远不会与显示器一起出现。)
评论
SDL具有一个“降落伞”,即使发生段错误,它也可以正常部署以进行清理,因此仍然存在一些问题。
–柔印
2012年6月23日23:52
降落伞只会抓SIGSEGV,不会抓SIGKILL。
–阿利斯泰尔·巴克斯顿
2012年6月27日9:36
有趣的是,我将不得不尝试将SIGKILL发送给GLES2演示之一,然后看看会发生什么。
– Finnw
2012年6月27日13:39
我正在2017年开发一个SDL应用程序,使用CTRL-C退出SDL应用程序似乎仍然存在一个错误。我遇到的问题是,当我测试应用程序,反复运行它并使用CTRL-C退出时,SDL和终端输入将逐渐变得无响应。我发现,如果我从SDL应用程序中正确退出该应用程序,那么我就永远不会遇到问题。
– Paul Slocum
17-6-17 at 4:23
#2 楼
我知道这是一个非常老的问题,但是通过EmulationStation运行Mupen64Plus时遇到了与此类似的问题。我的控制台可以正常显示,但是在重新启动之前键盘将完全没有响应。问题是程序终止后键盘仍处于RAW模式。解决方案是将以下行添加到运行它的shell脚本的末尾:
kbd_mode -a
。这会将键盘重置为XLATE模式,并使它可以再次工作。虽然这不能解决问题的“黑屏”部分,但我想必须有一种类似的方法可以重置控制台帧缓冲区以获取视频。
评论
您可以通过按alt + F1-5切换到另一个tty吗?@Jivings,不,这些键组合无效。
嗯..可以使用SysRq和REISUB命令吗?
@Jivings否,但是(1)重启能力不是问题:我可以通过ssh连接发出关闭命令,并且(2)我正在寻找不需要重启的解决方案。
哦,嘘。在ssh提示中,您可以杀死X服务器并重新启动。或重新启动运行级别。