最初
macを操作していると、突然ログアウトし、ログイン画面が表示される。
1度目が起き、再起動したあとも、再発したので調べる。
起こったこと
ログアウトしたあとにターミナルを見ると以下のようなメッセージ。
emacs Set a breakpoint at CGSLogError to catch errors as they are logged.
Failed to look up the port for "com.apple.windowserver.active"
On-demand launch of the Window Server is allowed for root user only.
$ whoami
501
WindowServerでエラーが起こっているようで、強制的にログアウトが発生してしまっていた。しかも501ユーザーになってる。
ちなみにWindowServerが何をやっているかは知らない。
ここから先は、時系列で行ったことを記載していく。
クラッシュログを確認
まずはクラッシュログを探す。/var/log/以下になさそうなので、力づくで見つける。
$ sudo find / -name "*[Ww]indow[Ss]erver*"
/Library/Preferences/com.apple.windowserver.plist
...<中略>...
/Library/Logs/DiagnosticReports/WindowServer_2016-06-09-100956_taMBPro.crash
/Library/Logs/DiagnosticReports/WindowServer_2016-06-09-103024_taMBPro.crash
なんかそれっぽいのが見つかる。
$ less /Library/Logs/DiagnosticReports/WindowServer_2016-06-09-103024_taMBPro.crash
Process: WindowServer [211]
Path: /System/Library/Frameworks/CoreGraphics.framework/Versions/A/Resources/WindowServer
Identifier: WindowServer
Version: 1
Code Type: X86-64 (Native)
Parent Process: launchd [1]
Responsible: WindowServer [211]
User ID: 88
Date/Time: 2016-06-09 10:09:49.757 +0900
OS Version: Mac OS X 10.11.5 (15F34)
Report Version: 11
Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0 com.apple.CoreGraphics 0x00007fff8dd10e97 CGXRunOneServicesPass + 1038
1 com.apple.CoreGraphics 0x00007fff8dd12fee CGXServer + 7433
2 WindowServer 0x000000010d341f7e 0x10d341000 + 3966
3 libdyld.dylib 0x00007fff817ae5ad start + 1
Thread 1:: Dispatch queue: com.apple.libdispatch-manager
0 libsystem_kernel.dylib 0x00007fff94bc0efa kevent_qos + 10
1 libdispatch.dylib 0x00007fff8b7b4165 _dispatch_mgr_invoke + 216
2 libdispatch.dylib 0x00007fff8b7b3dcd _dispatch_mgr_thread + 52
Thread 2:: com.apple.CoreAnimation.render-server
0 libsystem_kernel.dylib 0x00007fff94bb9345 mach_absolute_time + 18
1 com.apple.QuartzCore 0x00007fff915a78f0 CACurrentMediaTime + 9
...
利用したアプリケーションなどのログはなく、利用したプロセスが分かるだけなので途方に暮れる。
クラッシュログから検討をつける方法は諦める。
WindowServerを利用しているアプリケーションを探す
$ grep -irn "windowserver" /Applications
Binary file /Applications/Atom.app/Contents/Frameworks/Electron Framework.framework/Electron Framework matches
... <中略> ...
Binary file /Applications/duet.app/Contents/MacOS/duet matches
Binary file /Applications/FirefoxDeveloperEdition.app/Contents/MacOS/plugin-container.app/Contents/MacOS/plugin-container matches
Binary file /Applications/FirefoxDeveloperEdition.app/Contents/MacOS/XUL matches
起動していたアプリケーションから当たりをつける
そのとき起動していたDuetとが怪しい! ということで検索
それっぽいのが見つかる。
結果
DuetでMission Controllを利用するとなることがあるらしい。
昨日までは問題なく利用できていて、特にアップデートもしていなかったので、全く想定外でした。
そう言われれば、クラッシュしたとき、そんな挙動してた気がするわー。
あとはサイトに記載してあるとおり、アニメーションを表示しないよう、コマンドを実行。
$ defaults write com.apple.dock expose-animation-duration -float 0
$ killall Dock
これで再発しなくなったので、一旦OK。
最後までWindowServerが何をしているか知らないまま。