最近 RubyMotion で作っている OSX アプリが LSOpenURLsWithRole() failed with error -10810 などで起動しないことがあったので原因を調べてみました。

LSOpenURLsWithRole() failed with error -10810

よくある原因

Hello.app/Contents/MacOS/Hello のような実行ファイルの実体に実行属性が外れているというのが よくある原因のようで、 ownCloud 経由で同期したアプリが実行できなかったときは これが原因でした。

別の原因

実行属性も問題なくて悩んでいたときに コンソール (Console.app) のログを見てみると

2013/12/28 10:39:17.963 open[85406]: spawn_via_launchd() failed, errno=22 label=com.yourcompany.Hello.44032 path=.../Hello/build/MacOSX-10.9-Development/Hello.app/Contents/MacOS/Hello flags=0 : LaunchApplicationClient.cp #1168 LaunchApplicationViaLaunchDJobLabel() q=com.apple.main-thread

のようなログが出ていたので、 LaunchApplicationViaLaunchDJobLabel で検索してみたところ、 Mavericks problem opening fresh wrapper という話が見つかって、 そこに書いてあった

launchctl remove $(launchctl list | grep wineskin | awk '{ print $3 }')

という手順を参考にして解決しました。

Hello が2個残っていて、 $() だとダメだったので個別に launchctl remove しました。

% launchctl list | grep Hello
-	2	com.yourcompany.Hello.44032
-	0	com.yourcompany.Hello.53008
%  launchctl remove $(launchctl list | awk '/Hello/{print $3}')
usage: launchctl remove <job label>
zsh: exit 1     launchctl remove $(launchctl list | awk '/Hello/{print $3}')
%  echo launchctl remove $(launchctl list | awk '/Hello/{print $3}')
launchctl remove com.yourcompany.Hello.44032 com.yourcompany.Hello.53008
%  launchctl remove com.yourcompany.Hello.44032
%  launchctl remove com.yourcompany.Hello.53008
%  open -a Hello

その他

その他の対象方法も含めて Error -10810 Openng Applictions or Relaunching Finder にいろいろ書いてあるようです。 (英語で長かったのでちゃんと読んでません。)

MacBookPro6,2 で EXC_BAD_INSTRUCTION (SIGILL) になって起動しない

未解決です。

EXC_BAD_INSTRUCTION crash in App Store version… に似た話があって、 RubyMotion のバグっぽいという話のようです。

motion create --template=osx HelloOSX で作成しただけのものでも クラッシュ して起動しませんでした。

RubyMotion を入れている自分の MacBook Air の環境の問題かどうかを切り分けるために VagrantX も試してみましたが、 同じくクラッシュ して起動しませんでした。

Disqus Comments

Kazuhiro NISHIYAMA

Ruby のコミッターとかやってます。 フルスタックエンジニア(って何?)かもしれません。 About znzに主なアカウントをまとめました。

znz znz


Published