web-dev-qa-db-ja.com

iOSシミュレーターでのテスト時のエラー:bootstrapサーバーに登録できませんでした

UIAlertViewのボタンをクリックするとクラッシュするときに、シミュレーターでアプリをテストしていました。そこでデバッグを停止し、コードにいくつかの変更を加えて、アプリを再構築しました。アプリケーションを実行すると、コンソールにこのエラーが表示されます

com.myApp.debugをbootstrapサーバーに登録できませんでした。エラー:不明なエラーコード。これは通常、このプロセスの別のインスタンスが既に実行されているか、デバッガーでハングしていることを意味します。受信信号:「SIGABRT」

シミュレータからアプリを削除してクリーンビルドを試みましたが、アプリを実行しようとするとこのエラーが発生します。

シミュレーターでアプリを再度実行できるようにするにはどうすればよいですか?

366
lostInTransit

シミュレータを終了して再起動しますか? 「最悪の場合」はいつでも再起動できます。私の経験では、これで解決するはずです。

162
Elliot Kroo

status:これは最近Mac OS 10.8およびXcode 4.4で見られました。

tl; dr:これは、2つのコンテキストで発生する可能性があります。デバイスで実行しているときと、シミュレータで実行しているときです。デバイスで実行中に、デバイスを切断して再接続すると問題が解決するようです。

マイクアッシュが提案

launchctl list|grep UIKitApplication|awk '{print $3}'|xargs launchctl remove

これは常に機能しません。実際、それは私にとってはうまくいきませんでしたが、場合によっては明らかにうまくいきます。どのケースがわからないだけです。試してみる価値があります。

それ以外の場合、これを修正する唯一の既知の方法は、ユーザーlaunchdを再起動することです。リブートすればそれはできますが、それほど劇的ではない/速い方法があります。別の管理ユーザーを作成する必要がありますが、作成する必要があるのは一度だけです。物事がくさびになったら、自分としてログアウトし、そのユーザーとしてログインし、メインユーザーに属するlaunchdを強制終了します。

Sudo kill -9 `ps aux | egrep 'user_id .*[0-9] /sbin/launchd' | awk '{print $2}'`

user_idをメインユーザー名に置き換えます。通常のユーザーとして再度ログインすると、正常な状態に戻ります。ちょっと痛いですが、完全に再起動するほどはありません。

詳細:

これは、Lion/Xcode 4.2でより頻繁に起こり始めました。 (個人的に、私はその組み合わせの前にそれを見たことがない。)

バグはlaunchdにあるようです。これは、デバッガーが強制終了せずにデバッグを停止すると、アプリプロセスを子として継承します。これは通常、アプリがゾンビになり、psでプロセスステータスがZになることで通知されます。

コアの問題は、launchdに実装されているbootstrapネームサーバーにあるようです。これは(私が理解している範囲で)アプリIDをマッハポートにマッピングします。バグがトリガーされると、アプリは終了しますが、bootstrapサーバーのネームサーバーマップから削除されず、その結果、bootstrapサーバーはアプリの別のインスタンスの許可を拒否します同じ名前で登録されます。

ゾンビのためにwait()にlaunchdを強制すると問題が修正されることが期待されました(コメントを参照)が、そうではありませんでした。コアの問題であるのはゾンビのステータスではなく(そのため、一部のゾンビは良性です)、bootstrapネームサーバーであり、このkilling launchdの不足を解消する方法はありません。

バグは、Xcode、gdb、およびユーザーlaunchdの間の何らかの不具合によって引き起こされているようです。 iphoneシミュレーターでアプリを実行し、gdb内でアプリを停止し、ipadシミュレーターでビルドして実行することで、ウェッジを繰り返しました。スイッチングシミュレーター(iOS 4.3/iOS 5、iPad/iPhone)の影響を受けやすいようです。常に発生するわけではありませんが、シミュレータを頻繁に切り替えるとかなり頻繁に発生します。

ログイン中にlaunchdを強制終了すると、セッションが台無しになります。ログアウトしてから再度ログインしても、ユーザーlaunchdは強制終了されません。 OS Xは既存のプロセスを保持します。再起動すると問題は解決しますが、それは苦痛です。上記の手順は高速です。

AppleにバグFWIWを提出しました。 rdar:// 10330930

242
smparkes

Lion + Xcode 4.2でこの問題が発生し始めています。 Xcode 4.3でも問題が発生しました。

私はすべての提案を試みましたが、それらはどれも完全な再起動以外には機能していません。

再起動がすぐに必要かどうかを判断する方法は次のとおりです。

すべてのZombieプロセスをリストします。

ps -el | grep 'Z'

アプリがゾンビプロセスとしてリストされている場合は、マシンを再起動する必要があります。エラーメッセージには、「このプロセスの別のインスタンスが既に実行中であるか、デバッガーでハングしていることを一般的に意味します」と表示されます。さて、Xcodeはこのゾンビプロセスを検出していますが、これは強制終了することはできません。修正できる唯一の方法は、システムを再起動することです。 :(

編集、20120823:私はゾンビのプロセスに関するいくつかのより良い知識を持っているので、この答えを更新したかったです。ゾンビプロセスは、親プロセスが終了する子プロセスでwait()(プロセスが状態を変更するのを待つ)を呼び出さない場合に作成されます。ゾンビプロセスで直接「kill」を実行することはできませんが、親プロセスを強制終了すると、ゾンビの子プロセスが「reap」され、プロセステーブルから削除されます。

私は長い間この問題を見ていないので、このシナリオで親プロセスが何であるかを確認していません。親プロセスを強制終了する代わりに、システムを再起動します。 :)

70
jyap

私はちょうどこれが私に起こった:私は自分のデバイスでのみエラーを取得しており、シミュレータが正常に動作していた。デバイスをリセットする必要が生じ、エラーはなくなりました。

20
n3wscott

最近、この問題が頻繁に発生しています。何がこれを防ぐのですか?ログアウトしてログインすると問題は解決しますが、頻繁にそうするのは面倒です。

編集:

原因を見つけました。 ApplicationWillTerminateメソッドにバグがありました。 Xcodeウィンドウで停止ボタンをクリックすると、アプリが正常に終了できず、ハングし始めました。

アクティビティモニターをチェックして、アプリがリストに載っているかどうかを確認します。可能な場合は強制終了します。

15
sang

まあ、答えはありませんが、少なくとももう1つテストを行う必要があります。ターミナルを開き、「ps-Ael | grep Z」というコマンドを実行します。 2つのエントリ(1つは「(clang)」、もう1つはアプリまたは会社名)を取得した場合、うんざりしています-再起動します。

もしあなたが開発者なら、短いバグを入力し、Appleを再起動することの絶対にうっとうしいことを伝え、彼らがこのバグを私が入力したばかりの "rdar:// 10401934"に押しやることができると述べてください。

デビッド

7
David H

IOSシミュレータをリセットすると、エラーが修正されました。これにより、シミュレータにあるすべてのアプリが削除されますが、マシンを再起動せずに問題が修正されます。

次の手順を実行して、iOSシミュレーターをリセットできます。

1)メイン画面の左端にあるApple()ロゴの横にある「iOSシミュレーター」メニューに移動します。
2)[コンテンツと設定をリセット...]を選択します。
3)ポップメッセージを読み、同意する場合は[リセット]をクリックし、そうでない場合は[リセットしない]をクリックします。

5
domthinks

IPhone 4でアプリをデバッグしているときにこのエラーが発生しました。iPhoneをハードリブートすると問題が解決しました。 (iPhoneの電源を切ると...)

Macにゾンビプロセスがなかったため、Macを再起動しても問題は解決しませんでした。

たぶん、このバグはシミュレータと実際のデバイスの両方で現れる可能性がありますか?

4
craig

このエラーは、シミュレータでアプリをテストするたびに頻繁に発生し、再起動を余儀なくされます。

作業を完了したい場合の回避策は次のとおりです。

  • プロジェクトナビゲータでプロジェクトをクリックします
  • 進むターゲット-> 情報
  • アプリケーションがバックグラウンドで実行されないのキーを追加し、YESに設定します。

これは、シミュレータのホームボタンを押したり、シミュレータを終了したりしても、アプリがハングしないことを意味します。

配布する前にこの設定を元に戻すことを忘れないでください!リリースチェックリストに追加してください:)

4

これがiPhoneでのテスト時に発生する場合。電話を再起動するだけです。電話またはシミュレーターはまだ実行中のアプリのインスタンスがあると信じているので、最後に実行されたときに正しく終了していなかったので、コードのエラーまたは電話/シミュレーターが単にうめき声。

4
Popeye

デバイスを再起動しました、動作しました! :D

素晴らしい提案をありがとう。

4
Haris Hussain

@jyapがゾンビプロセスに関して言及している問題がありました。それらをクリアする唯一の方法は再起動することでした。しかし、同じプロジェクトで作業している友人は同じ問題を抱えているが、ゾンビプロセスを作成せずにシミュレーターを殺すことができることに気付きました。 Xcodeを完全にアンインストールして再インストールしましたが、エラーが発生している間はゾンビプロセスが作成されないため、再起動する必要はありません。

それを行う前に、私はこの非常にい回避策を使用していました:アプリIDを変更して、再度実行します。シミュレーターでアプリのジャンクコピーが作成されますが、しばらくの間再起動を延期できます。

別の回避策:

  • アプリに新しい識別子を付けます。 com.foobar.myappと呼ばれる場合は、com.foobar.myapp01と呼びます

IPhoneシミュレーターに関する限り、実際には新しいアプリが実行されているため、アプリ内のすべてのデータが失われます。これは再起動よりも煩わしいかもしれませんし、そうでないかもしれません-リストに追加したかっただけです。

3
n13
  1. シミュレーターを閉じる
  2. XCodeでのアプリの実行を停止します。
  3. Activity Monitorを開き、App NAMEprocess runningを検索します。
  4. アクティビティモニターでこのプロセスを強制終了する
  5. プロジェクトを再構築すれば、準備は完了です
3
negrelja

私は同じ問題を抱えていて、次のことを行って解決しました

  • デバイスからアプリを削除し、
  • デバイスをMacから切断し、
  • デバイスの電源を切ってから再び入れます。
  • Xcodeの終了と再起動、
  • 楽器の終了、
  • 最後に、再度クリーンしてビルドします。

XcodeはiOS 5.0を使用するように構成されており、私のプロジェクトはiOS 4.3を使用しているため、もう1つのことをしました。

  • すべてのフレームワークを削除して、再度追加します。
3
Joey

再帰的なセッターを使用してスタックを吹き飛ばし、iPadの電源を入れなければならないような方法でアプリを強制終了しました。コードの修正により証明可能になりました。

3
mobibob

原因

以前実行していたアプリが完全に停止する前に、シミュレータでアプリを実行します。

修正

[停止]ボタンが再びアクティブになるまで待ってから、もう一度実行してください。

(Xcode 4.2.1を使用しています。この問題は、OS X Lionにアップグレードしたときに非常に頻繁に発生しました)。

3
cosine

このエラーが発生しました。シミュレーターとXcodeを再起動しようとしましたが、私のプロジェクトはクリーンとビルド後にのみ機能します。何が原因かわかりません。

3
Daniel Wood

これは、Xcodeで停止ボタンを押す前にiPhoneでアプリを強制終了したことが原因だと思います。 Xcodeで停止ボタンを押すと、ハングした場合にアプリを終了するのに時間がかかることがあります。しかし、ただ我慢してください。ほとんどの場合、最終的には終了します。

2
CommaToast

私の問題には再構築や再インストールは必要ありません。私の場合、iPhoneでアプリを実行しようとするとエラーが表示されました。シミュレータは正常に動作しました。

解決策:電話からアプリを削除し、電話のコールドリスタートを実行します。

2
timv

アプリを削除した後、携帯電話を再起動し、きれいに再構築して再度実行することで修正しました。現在は正常に動作します。

奇妙な。

2
CommaToast

LionでXcode 4.2.1を使用して、私にとって多くのことが起こりました。 4.3.2に更新され、それはもう起こりません。喜んで修正しました。

2
tbag

マイク・アッシュ 解決策を投稿 (神のご加護を!)これは再起動を必要としません。とにかく走れ:

launchctl list|grep UIKitApplication|awk '{print $3}'|xargs launchctl remove

上記のコマンドは、起動されたすべてのジョブを一覧表示し、名前にUIKitApplicationが含まれるジョブ(不適切に貼り付いているアプリに対応するジョブになります)を検索し、名前を抽出し、launchdにそのジョブを削除するよう指示します。

2
Jano

関数またはタブで変数を割り当てることができます。関数またはタブが終了すると、割り当てが解除されます。したがって、メンバー変数またはグローバル変数を宣言する必要があります。

1
bTagTiger

[実行]ダイアログボックスの[停止]ボタンの信頼を停止するまで、このエラーが常に発生していました。実行しようとする前に常にツールバーの停止ボタンを押すようになったので、ゾンビプロセスに遭遇することはありません。

1
Angela

なんてこった-上記およびその他の投稿にあるすべてを試してみた。 Xcodeを再インストールし、マシンを再起動し、不足しているすべてのファイルを適切なフォルダーにコピーしました。

これを読んだり、読んだりしていた原因は、リークしているパフォーマンスツールで実行していたiphoneホワイトを切断したことだと思います。またはそのようなもの。

ああ、大きな安bigの溜息。

0
Smikey

コマンドラインからテストを実行している場合xcodebuild testを使用)、実行中のシミュレーターがテストを実行する予定のデバイスと一致することを確認します。

IPhone 5を使用するコマンドラインテストを実行している可能性があります。XCode広告でiPhone 6を実行してからコマンドラインテストを実行すると、iPhone 6が実行されたままになることがあります。iPhone5デバイスを手動で選択してから実行するもう一度テストします。

0
Rose Perrone

このエラーは、以前のバージョンのiOSシミュレーターで発生していました。シャットダウン中の別のデバイスのジョブの古いインスタンスが新しいインスタンスと衝突する可能性があるためです。

iOS 6.0以降ではbootstrapサブセットの使用が導入され、iOS 7.0では完全に分離された専用のbootstrapサーバー(launchd_sim)の使用が導入されたため、iOS 6.0以降ではこのような問題は発生しませんホストのbootstrapサーバーから。

最悪の状態でiOS Simulaterのコンテンツと設定をリセットし、ほとんどの場合、シミュレーターと一緒にXCodeを終了すると、常に動作しますXCode4.6(頻繁にハングする)

0
rptwsthi

私の場合、この種の問題に一度直面したことがあります

  1. シミュレーターからアプリを削除します。
  2. 派生データフォルダーを削除します。
  3. 製品メニュー-クリーンを選択して、プロジェクトでクリーンアクションを実行します
  4. シミュレーターをリセットします。
  5. Xcodeを終了します。
  6. うまく機能していない場合はステップ7に進んでください。
  7. 1から5までのすべてのステップを繰り返してから、マシンを再起動します。

ほとんどの場合、ステップ6で実行しましたが、極端な場合はマシンを再起動する必要がありました。

0
user2538944