简体   繁体   English

所有X11应用程序在Mac OSX Yosemite中都不可用

[英]All X11 applications got unavailable in Mac OSX Yosemite

Overview 概观

All X11 applications got unavailable without my realizing. 没有我的意识,所有X11应用程序都无法使用 Since there are no Time Machine backups, I need to fix up this issue anyway. 由于没有Time Machine备份,我无论如何都需要解决这个问题。

Environment 环境

  • X11 newer than system default is installed at /opt . /opt安装了比系统默认值更新的X11。
  • Because some applications requires symlinks from /usr , I made it. 因为某些应用程序需要来自/usr符号链接,所以我做到了。 (eg Wireshark) (例如Wireshark)
  • Because stable 2.7.7 has forwarding bugs , currently I'm using unstable 2.7.8. 因为稳定的2.7.7有转发错误 ,目前我使用的是不稳定的2.7.8。

在此输入图像描述 在此输入图像描述 在此输入图像描述

Trial 审讯

I tried to dump system calls by using dtruss . 我尝试使用dtruss转储系统调用。 The following example is represented by sudo dtruss xclock . 以下示例由sudo dtruss xclock表示。 Other X11 applications' behaviors are also like this. 其他X11应用程序的行为也是这样的。 All X11 applications hangs up after recvfrom . 所有X11应用程序在recvfrom之后挂起。

在此输入图像描述

I also tried... 我也试过......

  • rm ~/.Xauthority
  • Reinstall the same version of X11 重新安装相同版本的X11

But those have nothing to do with it. 但那些与它无关。

Sorry for crossposting here in Japanese; 对不起, 这里用日语交叉; there are still no answers... 仍然没有答案......
Thank you. 谢谢。

The OS X Installer removes the symlinks at /usr. OS X安装程序删除/ usr处的符号链接。 The easiest solution is for you to just reinstall XQuartz. 最简单的解决方案是让您重新安装XQuartz。 That should set them back up for things like Wireshark and the like which use the older system location. 这应该为像Wireshark等使用较旧系统位置的东西设置备份。

You can also run sudo /usr/libexec/x11-select /opt/X11 您也可以运行sudo /usr/libexec/x11-select /opt/X11

I recall an issue in poll(2) behavior that we tripped over in libX11 and libxcb maybe 5 years or so ago that this reminds me of. 我记得poll(2)行为中的一个问题,我们在libX11和libxcb中绊倒了大概5年左右,这让我想起了。 The remnants of this are in libxcb's configure.ac where we use select(2) instead of poll(2) for old versions of OS X. The issue was that they didn't support calling poll(2) on character devices and we'd just get an EAGAIN. 其余部分位于libxcb的configure.ac中,我们对旧版OS X使用select(2)而不是poll(2)。问题是他们不支持在字符设备上调用poll(2)而我们'我只是得到一个EAGAIN。

In your case, it doesn't look like that's the case, but something is getting an EAGAIN in recvfrom and presumably ignoring it rather than trying again. 在你的情况下,它看起来并非如此,但有些东西正在重新获得EAGAIN并且可能忽略它而不是再次尝试。 If you can figure out what the call point is for that recvfrom (maybe in libxcb?) that would be a good next step. 如果你能弄清楚recvfrom的调用点是什么(可能在libxcb中?),这将是一个很好的下一步。

To get me some more data, can you please file a radar at http://bugreport.apple.com and include a sysdiagnose focused on xclock? 为了得到更多数据,请你在http://bugreport.apple.com上提交一个雷达,并包含一个专注于xclock的sysdiagnose?

通过设置DISPLAY=:0.0解决

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM