如何调查 Alt-Tab 切换后的显示锁定?

如何调查 Alt-Tab 切换后的显示锁定?

在 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 来运行。应该这样做。Xorgubuntu-bug $(pidof Xorg)

ubuntu-bug(请参阅下文有关如何在屏幕冻结时运行的说明。)

窗口管理器

然而,从您所说的情况来看,事实并非如此——至少有一个选项(使用 Project Neon 提供的桌面登录)是可行的。

Kubuntu 的窗口管理器是kwin,由kde-window-manager软件包。要报告错误,您可以运行ubuntu-bug kde-window-manager,但最好运行ubuntu-bugkwin使用可能发生故障的正在运行的进程的 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+ F1Ctrl+ 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管道grep):

    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 会自动发送一些文件,这些文件将被附加。您还可以附加一个文件。要附加不同的文件,请先提交错误报告,然后才能附加它们。

相关内容