在 Dell Latitude E6500 上运行 Kubuntu 12.10,该设备为我的显示器运行免费的 NVIDIA 驱动程序。如果我按 alt-tab 切换窗口太快,显示器就会锁定,我唯一能解锁的方法就是重启机器,要么硬关闭机器,要么通过 SSH 进入并重启。所有其他服务和应用程序继续运行。没有锁定或崩溃,没有其他消息,只有显示器锁定。
有什么想法可以从哪里开始解决这个问题?
答案1
这是一个错误,所以我假设你问的是怎样收集报告该错误所需的信息。(否则,这个问题可能不合主题;请参阅常见问题解答和这个元问题。
首先查阅错误报告文档
你说:
我正在运行 Project Neon ppa,当我以与之关联的用户身份登录时,似乎没有遇到任何锁定。
我假设这意味着当你登录到 KDE 桌面时,问题确实不是发生,但它做当您登录到 Project Neon PPA 软件包未提供的桌面时,就会发生这种情况。
然而,如果是发生在由 Project Neon 提供的 GUI 中,确保你已经仔细阅读了这篇文章并在报告错误时遵循其指导方针。
无论这是否是 Project Neon 软件的一个错误,我强烈建议你从头到尾读完这篇文章在报告 Ubuntu 中的错误之前,我建议你阅读以下文章:但还有这个(并看看此门户页面)。这个问题也是一个有用的资源。以下是一些好的一般错误报告建议。
如果您已阅读完所有内容并了解如何报告错误,那么您可以跳过...
找出可能受影响的软件包
如果您针对错误的软件包报告了错误,只要报告没有问题并且包含所有必要的信息,分类人员或开发人员通常就能找出问题所在,并且可以很容易地将错误报告重新定位到另一个软件包。
然而,由于 Ubuntu 错误报告中的许多重要技术信息通常是通过运行 Apport 提供的,并且 Apport 会根据所报告错误的软件包来确定要发送什么,因此最好先努力选择正确的软件包,尤其是对于视频、声音、驱动程序或内核问题,Apport 通常可以提交这些问题很多非常有价值的信息。
屏幕冻结可能是由于或至少与以下情况密切相关:X 服务器或者窗口管理器。
X 服务器
在登录屏幕上,您可以选择不同的界面。它们都使用相同的 X 服务器,但有些使用不同的窗口管理器。
如果您在使用所有选项时都遇到此问题,那么此错误可能与 X 服务器有关,可以xserver-xorg
通过运行 来报告ubuntu-bug xserver-xorg
。但最好使用可能发生故障的ubuntu-bug
正在运行的进程的 PID 来运行。应该这样做。Xorg
ubuntu-bug $(pidof Xorg)
ubuntu-bug
(请参阅下文有关如何在屏幕冻结时运行的说明。)
窗口管理器
然而,从您所说的情况来看,事实并非如此——至少有一个选项(使用 Project Neon 提供的桌面登录)是可行的。
Kubuntu 的窗口管理器是kwin
,由kde-window-manager
软件包。要报告错误,您可以运行ubuntu-bug kde-window-manager
,但最好运行ubuntu-bug
kwin
使用可能发生故障的正在运行的进程的 PID 。ubuntu-bug $(pidof kwin)
应该这样做。
如果问题特定于 3D统一会话中,发生这种情况时运行的窗口管理器是compiz
。
ubuntu-bug compiz
还可以。ubuntu-bug $(pidof compiz)
更好
另一方面,如果它恰好发生在Unity 2D(以及GNOME 经典/回退会话),窗口管理器是metacity
:
ubuntu-bug metacity
还可以。ubuntu-bug $(pidof metacity)
比较好。
如果它发生在GNOME 3桌面运行GNOME Shell(不是 Unity),窗口管理器是mutter
。
ubuntu-bug mutter
还可以。ubuntu-bug $(pidof mutter)
比较好。
如果发生在 Xubuntu 桌面上,窗口管理器是xfwm4
。
ubuntu-bug xfwm4
还可以。ubuntu-bug $(pidof xfwm4)
比较好。
如果发生在 LXDE 桌面上,窗口管理器是openbox
。
ubuntu-bug openbox
还可以。ubuntu-bug $(pidof openbox)
比较好。
用户特定性
如果您有一个用户帐户默认启动到一个 UI,而另一个用户帐户默认启动到另一个 UI,并且错误发生在其中一个 UI 中,而另一个 UI 中没有,那么(因为这是一个 UI 错误)UI 差异可能是最重要的。
但你一定要确保,因为有时特定用户的配置会触发错误。你应该验证用户帐户登录一个 UI 时是否发生这种情况,以及同一用户帐户登录另一个 UI 时是否发生这种情况。
您还应该查看使用模式是否是触发该错误的原因。例如,查看数字Alt您正在浏览的窗口数量Tab与错误是否发生有关。(如果错误只发生在一个窗口中,那就特别有趣了。)此类信息应包含在您的错误报告中。
其他套餐
这个错误可能存在于 X 服务器或窗口管理器之外的某个软件包中。
- 它可能是更高级别的(也就是说,大多数问题可能发生在 GUI 上运行的进程中,这只会触发窗口管理器或 X 服务器中的另一个错误)。
- 或者可能是较低级别的问题。可能不是内核本身的错误(您的系统仍然运行良好,您可以通过 SSH 进入)。但可能是视频驱动程序问题。
无论如何,报告窗口管理器或 X 服务器的错误(取决于哪个更有可能)通常会导致 Apport 上传足够多的正确信息,以便如果错误出现在其他地方,就可以找出原因。
报告 Bug,但 Bug 本身很难报告
你发现你可以 SSH 进入。因此,你似乎可以访问虚拟控制台使用Ctrl+ Alt+ F1、Ctrl+ Alt+F2等等,直到F6。
(要切换回 GUI,请使用Alt+ F7。)
如果可行,您可以在 GUI 仍在运行且出现故障时从虚拟控制台报告错误。ubuntu-bug
在虚拟控制台中运行时,应检测到没有 GUI 并以文本模式运行。或者,如果您更喜欢使用apport-cli
命令也可以。
不过,通过 SSH 进行报告可能更容易,因为您可以复制ubuntu-bug
/提供的 Launchpad URL apport-cli
,并将其粘贴到 SSH 客户端上的图形 Web 浏览器中。
或者你可以考虑使用ssh -X
进行连接。然后,您可以在发生故障的机器(您通过 SSH 连接到的机器)上运行 GUI 程序,并使它们的界面(它们的窗口)出现在 SSH 客户端上。然后,您可以以ubuntu-bug
图形方式运行并从图形 Web 浏览器报告错误,该浏览器在发生故障的机器(即 SSH 服务器)上运行,但在正常运行的机器(即 SSH 客户端)上显示。
查找影响进程的 PID 的更多方法
ubuntu-bug
根据错误的性质,使用错误进程的 PID 运行(或)可能特别有用apport-cli
,而不仅仅是使用包的名称。这将自动在 Apport 上传到 Launchpad 的文件中包括有关进程运行状态的信息。
因此,如果不起作用或没有得到正确的流程,您还可以:ubuntu-bug $(pidof processname)
跑步
pidof
手动查看结果。如果未得到任何结果,则表示没有运行该名称的进程。跑步
pgrep
,它显示与参数以正则表达式匹配的所有进程的 PID(而不是其名称平等的对这个论点,也是pidof
如此)。-
ps ax | grep -v grep | grep processname
它提供了更详细的信息——它给出了任何匹配进程的名称、PID 和状态的列表。
需要确保附加的文件
确保/var/log/Xorg.0.log
和(如果存在)/var/log/Xorg.0.log.old
已附加。
同样,确保~/.xsession-errors
和(如果存在)~/.xsession-errors.old
已附加。(~
代表您的主文件夹。)点文件默认情况下,Nautilus 中不显示它们,因此如果您想在图形文件浏览器窗口中查看它们,请按Ctrl+ H(或看法>显示隐藏文件)。
当您在 Launchpad 上报告错误时,Apport 会自动发送一些文件,这些文件将被附加。您还可以附加一个文件。要附加不同的文件,请先提交错误报告,然后才能附加它们。