« iCloud + SSH + dns-sd で自宅の iTunes へ接続 | ホーム | CentOS で Air Video Server らへんについて »

2012年11月13日

Mac OS X v10.8.2 の Appleeventd が拗ねる件について

Mac OS X v10.8.2 になってからなのか、Mountain Lion 当初からなのかわかりませんが Appleeventsd がアプリケーション間のコミュニケーションを取り持ってくれず沈黙してしまう問題が出ています。

気づきづらいのですが、Tune•Instructor などのメニューバーからアップルイベント経由で iTunes をコントロールするアプリケーションで問題になります。iTunes をコントロール出来ない!意味ないじゃん!あと、iVolume とか、1Password の機能拡張など。

根本的な解決方法は今のトコロ無いようです。困った。

暫定対処としては再起動やログイン・ログアウトなど、要するに Appleeventsd の再起動で治ります。
Appleeventsd はプロセス番号の若さから見ても早い段階で起動する結構大事なサービスなんで早く直してもらいたいものです。

個別に対応してくれているアプリケーション製作者さんもいる(iVolumeとか)ので、もしかしたら何か仕様が変わったのかもしれませんし Appleeventsd だけの問題じゃないのかもしれませんが、時間が経過するとダメになるという時点でなんかバグでしょう。

仕方ないので、1時間ごとに Appleeventsd を再起動する LaunchAgents を仕込む事にしました。

jp.talkabout.appleeventsd-restart.plist

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>jp.talkabout.appleeventsd-restart</string>
<key>ProgramArguments</key>
<array>
<string>/usr/bin/killall</string>
<string>-KILL</string>
<string>appleeventsd</string>
</array>
<key>StartInterval</key>
<integer>3600</integer>
</dict>
</plist>

1時間単位で強制的にプロセスを殺してしまうので、アップルイベントでごにょごにょしている最中に再起動すると困ってしまいますが、まぁこれでいいや。
AppleEvent に何か投げて返事がなかったら殺すみたいな事も考えましたが、v10.8.3 で治ると信じて...。

使い方は、上記の plist を /Library/LaunchAgents/ に保存して launchctl でロードするか再起動します。

$ sudo launchctl load /Library/LaunchAgents/jp.talkabout.appleeventsd-restart.plist

なんで、~/Library/LaunchAgents/ じゃないかというと、管理者権限じゃないと appleeventsd 殺せないからです。めんどうですね。

トラックバック(0)

トラックバックURL: http://www.talkabout.jp/system/mt-tb.cgi/22

コメントする

このブログ記事について

このページは、Motoki Kusanoが2012年11月13日 23:46に書いたブログ記事です。

ひとつ前のブログ記事は「iCloud + SSH + dns-sd で自宅の iTunes へ接続」です。

次のブログ記事は「CentOS で Air Video Server らへんについて」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。