如何诊断/调试“达到最大客户端数” X错误?


32

我遇到了一个问题,即X阻止进程创建窗口,将以下内容说进去~/.xsession-errors

cannot open display: :0.0
Maximum number of clients reached

到处搜索有很多面临此问题的示例,有时人们会确定他们正在运行的程序正在耗尽所有客户端插槽。参见例如 LP 70872(Firefox), LP 263211(gnome-screensaver)。

对于它的价值,我几乎总是运行gnome-terminal,thunderbird,chrome浏览器,同情心,tomboy和virtualbox,除了GNOME桌面提供的常规功能外,还偶尔运行一些其他功能。

但是,我的问题不是“哪个程序导致了此问题”,而是如何诊断该问题?

在以上(和其他)错误,论坛报告等中,建议使用许多工具:

  • xlsclients -列出给定显示的客户端应用程序,但我认为这与“ X客户端”相对应
  • xrestop-一种顶级样式的X资源工具,每个X客户端一行。很多''客户,未显示在xlsclients输出中
  • xwininfo -root -children 列出X窗口对象

据我所知,问题可能根本不是太多的客户端,而是X服务器中为长期断开的客户端保留的资源。但是,您似乎也无法(轻松地?)将X资源与其客户联系起来。一旦这个问题开始发生,是否可以有效诊断该问题,或者对于我运行的唯一对我开放的应用程序,这是一种乏味的分而治之方法?

2011年1月更新:我想我已经解决了这个问题。为了使任何人都陷入困境,由于我拥有墙纸,因此鹦鹉螺和/或compiz或该软件链中的某些内容出现了段错误。我选择了一个XML文件作为墙纸,该文件定义了旋转的图像库。它是手工制作的,但是基于/usr/share/backgrounds/contest/background-1.xml或类似文件。禁用墙纸,此后我没有发生崩溃。

我尚未将此问题标记为已回答,因为实际的具体问题不是我的问题,而是如何诊断它。不幸的是,这主要是反复试验,很糟糕。


1
您检查xrestop输出了吗?前三行告诉您什么?机器中有多少内存/视频内存?
jneves 2010年

xrestop无法启动-它还会抱怨“已达到最大客户数”!->无法打开显示。
桑杰·马诺哈

也许这个答案可能是为别人有用
gumkins

Answers:


14

我设法解决了这个“僵局”,其中的x工具都无法工作,因为它们也需要连接到X服务器,方法是使用lsof -U列出使用套接字文件的进程。

在此示例中,这是一个错误的启动脚本,该脚本生成了新的“ badproc”进程。

来自的示例输出lsof -U

COMMAND    PID      USER   FD   TYPE     DEVICE SIZE   NODE NAME
badproc   4770 bohrax       3u  unix 0xf3ba9540       13011 socket
xfce4-ses 4773 bohrax       3u  unix 0xf3bd21c0       13024 socket
xfce4-ses 4773 bohrax       4u  unix 0xf39ef000       13080 /tmp/.ICE-unix/4773
xfce4-ses 4773 bohrax      13u  unix 0xf3bf81c0       13563 socket
xfce4-ses 4773 bohrax      14u  unix 0xf3bf8a80       13565 /tmp/orbit-bohrax   /linc-12a5-0-78fe5c0776a06
xfce4-ses 4773 bohrax      15u  unix 0xf3bf8e00       13568 /tmp/orbit-bohrax   /linc-12a5-0-78fe5c0776a06
xfce4-ses 4773 bohrax      16u  unix 0xf3b411c0       13580 /tmp/.ICE-unix/4773
xfce4-ses 4773 bohrax      17u  unix 0xf0074380       13688 /tmp/.ICE-unix/4773
xfce4-ses 4773 bohrax      18u  unix 0xf3b6e380       13621 /tmp/.ICE-unix/4773
xfce4-ses 4773 bohrax      21u  unix 0xf0074c40       13778 /tmp/.ICE-unix/4773
badproc   4775 bohrax       1u  unix 0xf3bd2540       13013 socket
badproc   4781 bohrax       1u  unix 0xf3bd2c40       13021 socket
xfce-mcs- 4821 bohrax       3u  unix 0xf3be5540       13456 socket
xfce-mcs- 4821 bohrax       5u  unix 0xf3ba98c0       13484 socket
xfwm4     4827 bohrax       3u  unix 0xf3be5a80       13573 socket
xfwm4     4827 bohrax       4u  unix 0xf3b41000       13579 socket
Thunar    4831 bohrax       3u  unix 0xf3b6b000       13598 socket
Thunar    4831 bohrax       8u  unix 0xf3b6be00       13613 socket
Thunar    4831 bohrax       9u  unix 0xf3b41e00       13617 socket
Thunar    4831 bohrax      10u  unix 0xf3b6e1c0       13620 socket
Thunar    4831 bohrax      13u  unix 0xf0022000       13643 socket
gam_serve 4834 bohrax       4u  unix 0xf3b6b540       13607 socket
gam_serve 4834 bohrax       7u  unix 0xf3b41c40       13614 socket
gam_serve 4834 bohrax       8u  unix 0xf0020000       13656 socket
xfdesktop 4836 bohrax       3u  unix 0xf3b6ee00       13652 socket
xfdesktop 4836 bohrax       8u  unix 0xf3be5000       13655 socket
xfdesktop 4836 bohrax       9u  unix 0xf0020540       13665 socket
xfdesktop 4836 bohrax      10u  unix 0xf0020380       13667 socket
xfdesktop 4836 bohrax      13u  unix 0xf0074000       13687 socket
python    4837 bohrax       4u  unix 0xf00208c0       13672 socket
python    4837 bohrax       8u  unix 0xf3b6bc40       13880 socket
dbus-laun 4841 bohrax       3u  unix 0xf3b6ec40       13627 socket
dbus-laun 4841 bohrax       6u  unix 0xf0022c40       13644 socket
dbus-laun 4841 bohrax       8u  unix 0xf3b6be00       13613 socket
dbus-daem 4842 bohrax       3u  unix 0xf00221c0       13640 socket
dbus-daem 4842 bohrax       8u  unix 0xf3b6be00       13613 socket
dbus-daem 4842 bohrax       9u  unix 0xf00228c0       13641 socket
dbus-daem 4842 bohrax      10u  unix 0xf0022a80       13642 socket
dbus-daem 4842 bohrax      13u  unix 0xf0022380       13646 socket
dbus-daem 4842 bohrax      14u  unix 0xf00201c0       13666 socket
dbus-daem 4842 bohrax      15u  unix 0xf3b41540       13796 socket
dbus-daem 4842 bohrax      16u  unix 0xf3bd28c0       13881 socket
badproc   6314 bohrax       3u  unix 0xde00d380       95944 socket
badproc   6315 bohrax       1u  unix 0xde00d540       95946 socket
badproc   6322 bohrax       3u  unix 0xde00d8c0       96515 socket
badproc   6323 bohrax       1u  unix 0xde00de00       96517 socket
badproc   6330 bohrax       3u  unix 0xdf7ea000       97181 socket
badproc   6331 bohrax       1u  unix 0xdf7ea540       97184 socket
badproc   6338 bohrax       3u  unix 0xdf7ea8c0       97736 socket
badproc   6339 bohrax       1u  unix 0xde0481c0       97737 socket
badproc   6345 bohrax       3u  unix 0xde048700       98209 socket
badproc   6346 bohrax       1u  unix 0xde0488c0       98210 socket
badproc   6352 bohrax       3u  unix 0xde048e00       98776 socket
badproc   6353 bohrax       1u  unix 0xde058000       98778 socket
badproc   6359 bohrax       3u  unix 0xde058700       99293 socket
badproc   6360 bohrax       1u  unix 0xde0588c0       99296 socket
badproc   6367 bohrax       3u  unix 0xde08c000       99841 socket
badproc   6368 bohrax       1u  unix 0xde08c540       99842 socket
badproc   6375 bohrax       3u  unix 0xde08c8c0      100365 socket
badproc   6376 bohrax       1u  unix 0xde058c40      100367 socket
badproc   6383 bohrax       3u  unix 0xde09d1c0      101008 socket
badproc   6384 bohrax       1u  unix 0xde09d540      101010 socket
badproc   6392 bohrax       3u  unix 0xde09dc40      101681 socket
badproc   6393 bohrax       1u  unix 0xdf70a1c0      101682 socket
badproc   6400 bohrax       3u  unix 0xdf70a380      102324 socket
badproc   6401 bohrax       1u  unix 0xdf70a700      102325 socket
badproc   6409 bohrax       3u  unix 0xdf70ae00      102982 socket
badproc   6410 bohrax       1u  unix 0xde0ce1c0      102984 socket
badproc   6417 bohrax       3u  unix 0xde0ce380      103556 socket
badproc   6418 bohrax       1u  unix 0xde0ce8c0      103561 socket
badproc   6424 bohrax       3u  unix 0xde0cee00      104133 socket
badproc   6425 bohrax       1u  unix 0xde0bd000      104135 socket
badproc   6432 bohrax       3u  unix 0xde0bd380      104716 socket
badproc   6433 bohrax       1u  unix 0xde0bd8c0      104717 socket
badproc   6440 bohrax       3u  unix 0xde120000      105280 socket
badproc   6441 bohrax       1u  unix 0xde120540      105285 socket
badproc   6448 bohrax       3u  unix 0xde1208c0      105907 socket
badproc   6449 bohrax       1u  unix 0xde0bdc40      105908 socket
badproc   6456 bohrax       3u  unix 0xf01701c0      106486 socket
badproc   6457 bohrax       1u  unix 0xf0170540      106488 socket
badproc   6465 bohrax       3u  unix 0xf0170c40      107123 socket
badproc   6466 bohrax       1u  unix 0xf0170e00      107126 socket
badproc   6473 bohrax       3u  unix 0xde140000      107774 socket
badproc   6474 bohrax       1u  unix 0xde140540      107778 socket
badproc   6479 bohrax       3u  unix 0xde1408c0      108239 socket
badproc   6480 bohrax       1u  unix 0xde1881c0      108240 socket
badproc   6488 bohrax       3u  unix 0xde188700      108825 socket
badproc   6489 bohrax       1u  unix 0xde1888c0      108828 socket
badproc   6495 bohrax       3u  unix 0xde188e00      109377 socket
badproc   6496 bohrax       1u  unix 0xde18f000      109379 socket
badproc   6503 bohrax       3u  unix 0xde18f380      109907 socket
badproc   6504 bohrax       1u  unix 0xde18f8c0      109909 socket
badproc   6511 bohrax       3u  unix 0xde1c8000      110488 socket
badproc   6512 bohrax       1u  unix 0xde1c8540      110489 socket
badproc   6519 bohrax       3u  unix 0xde1c88c0      111070 socket
badproc   6520 bohrax       1u  unix 0xde18fc40      111071 socket
badproc   6527 bohrax       3u  unix 0xde1fa1c0      111629 socket
badproc   6528 bohrax       1u  unix 0xde1fa540      111631 socket
badproc   6531 bohrax       3u  unix 0xde1fa8c0      111899 socket
badproc   6532 bohrax       1u  unix 0xde1fae00      111901 socket
badproc   6535 bohrax       3u  unix 0xde219000      111998 socket
badproc   6536 bohrax       1u  unix 0xde219540      112000 socket
badproc   6539 bohrax       3u  unix 0xde2198c0      112114 socket
badproc   6540 bohrax       1u  unix 0xde2431c0      112116 socket
badproc   6547 bohrax       3u  unix 0xde243380      112663 socket
badproc   6548 bohrax       1u  unix 0xde2438c0      112664 socket
badproc   6555 bohrax       3u  unix 0xde243c40      113256 socket
badproc   6556 bohrax       1u  unix 0xde251000      113258 socket
badproc   6564 bohrax       3u  unix 0xde251700      113931 socket
badproc   6565 bohrax       1u  unix 0xde2518c0      113932 socket
badproc   6572 bohrax       3u  unix 0xde291000      114525 socket
badproc   6573 bohrax       1u  unix 0xde291540      114526 socket
badproc   6579 bohrax       3u  unix 0xde291c40      115112 socket
badproc   6580 bohrax       1u  unix 0xde251c40      115113 socket
badproc   6588 bohrax       3u  unix 0xde274380      115733 socket
badproc   6589 bohrax       1u  unix 0xde274540      115738 socket

就我而言,是baloo_file_extractor变得疯狂了。
EFraim

就我而言,它是TeamViewer的旧版本。尝试启动时,它打开了与X服务器的太多进程和连接,然后启动失败,一切恢复正常。
Antonio Vinicius Menezes Medei

lsof -U | wc -l可能有用。
Antonio Vinicius Menezes Medei

4

我有同样的问题,因为我认为这个问题对于不经常重新启动计算机的人来说非常重要。多年来,我真正喜欢UNIX / Linux / Ubuntu的一件事是,我可以可靠地运行笔记本电脑数月,而无需重新启动(仅暂停),除非安装新内核。自从升级到Maverick(Ubuntu 10.10)的“套件”以来,我遇到了这个问题,只能运行一周。

我也尝试过“ xrestop”。停止了compiz窗口效果(这减慢了资源泄漏的速度),但仍然无法找出原因。几乎就像回到WinXP机器上一样... :-(

是的!更好的X调试工具会很好。“ xrestop”的一个问题是它也需要资源,因此一旦碰壁,它甚至将无法运行。

向其他受此困扰的人提供提示(例如:从待机状态恢复并等待密码窗口(由于没有创建它的资源而永远不会出现)时),切换到帧缓冲区终端然后再返回(Ctrl-Alt- F1,然后按Ctrl-Alt-F7)似乎释放了一些关键资源。

道格


只是做了一些进一步的搜索,发现了一个有用的Python脚本来调试我的问题(谢谢Adam!)。这使我注意到,我的邮件程序的一个插件Thunderbird的Minimize-to-Tray占用了额外的文件描述符,每个最小文件描述符为4个。禁用它似乎已经解决了问题。

@ user10906该脚本是不可用的:IndexError: list index out of range因为有些线路还没有Pathnetstat -an --unix输出。
JuanSimón13年

1
@Simón我已经修复了该脚本,请参阅gist.github.com/vorburger/8369050。虽然我不确定该如何处理,但是... ;-)
vorburger 2014年

这样脚本便运行了,它发出大量垃圾邮件,并且看起来没有什么怪异的。.接下来是什么?
user230910

2

Chromium / Chrome有一些已知问题,会导致出现此错误消息。您是否使用Lastpass扩展名?

参考:http : //www.ngohaibac.com/how-to-solve-maximum-number-of-clients-reached-gtk-warning-cannot-open-display-in-ubuntu-9-10-64-bit/


我不使用该扩展名。
2010年

仍然值得在移除Chromium的情况下测试系统,以查看它是否可以缓解问题。不确定一旦确认就如何修复(除非您删除Chromium,否则我认为如果可能的话,请避免)。
杰里米

作为最后的努力,我可以尝试一下。这同样适用于Google将手指指向的其他软件,例如gnome-screensaver。问题是,我大量使用铬,因此即使暂时除去铬也对我的工作习惯造成了很大的打击。我真正想做的是证明它是有责任的,而不必停止使用它。
2010年

我遇到了相同的错误(未使用Lastpass),并且大量的Chrome处理导致了我的错误(lsof帮助找到了原因)
dufte

0

我做的:lsof -U我观察到很多vlc实例。

为了解决我的问题,我执行:

killall vlc

0

lsof -U 显示大量的xcape实例。

kill xcape 解决这个问题。

现在,我可以再次使用rofi和tor-browser。


0

由于内存(RAM)面临着openoffice的相同问题,
请尝试关闭所有终端(包括应用程序),如果没有用,请尝试sudo reboot now

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.