Errore durante il test sul simulatore iOS: impossibile registrarsi con il server bootstrap


370

Stavo testando la mia app sul simulatore quando si è schiantato facendo clic su un pulsante di UIAlertView. Ho smesso di eseguire il debug lì, ho apportato alcune modifiche al codice e ho creato di nuovo l'app. Ora quando eseguo l'applicazione, visualizzo questo errore nella console

Impossibile registrare com.myApp.debug con il server bootstrap. Errore: codice di errore sconosciuto. Ciò significa generalmente che un'altra istanza di questo processo era già in esecuzione o è stata sospesa nel debugger. Il programma ha ricevuto il segnale: "SIGABRT".

Ho provato a rimuovere l'app dal simulatore, eseguendo una build pulita ma ho ancora questo errore quando provo a eseguire l'app.

Cosa devo fare per poter eseguire di nuovo l'app sul mio simulatore?


2
Qualche suggerimento su cosa fare quando ciò accade durante il test sul dispositivo? Ho provato a riavviare il dispositivo, Xcode.
iPadDeveloper2011

1
Ho anche provato a eliminare l'app sul dispositivo, a chiudere tutte le app attive (fai doppio clic su home, tieni premuto il dito sull'icona dell'app, tocca '-') riavviando Xcode, disconnettendoti e riconnettendoti. Niente funziona finora.
iPadDeveloper2011

Prova "Svuota cache" nel menu XCode. Anche questo aiuta.
lostInTransit

3
Per tutti coloro che affrontano questo problema, in seguito capito, questo accade la maggior parte delle volte a causa di un bug nel codice. Cerca un pezzo di codice che impiega molto tempo di esecuzione o porta l'app in un ciclo.
lostInTransit

4
Quando ciò accade, uccido semplicemente SimulatorBridge ed esco dal simulatore. ps ax | grep SimulatorBridge
Elland,

Risposte:


162

Prova a uscire e riavviare il simulatore? Se "peggio diventa peggio" puoi sempre provare a riavviare: nella mia esperienza questo dovrebbe risolverlo.


44
Ho finito per riavviare il sistema! Comunque non so cosa abbia causato il problema!
lostInTransit

6
Come dice il commento qui sotto, di solito puoi vedere il processo sospeso in Activity Monitor e ucciderlo lì.
mxcl,

13
Odio il riavvio :) L'uscita dal processo di sospensione ha funzionato per me: ps ax | grep Simulator mostrerà le tue app in esecuzione, nel mio caso era MyApp.app ad essere appeso.
BadPirate,

12
Restart non ha aiutato
Pascal Klein,

10
Ricevo spesso questo in XCode 4.3. Il riavvio dell'applicazione o l'uscita dal simulatore non aiuta. Devo riavviare il computer per farlo funzionare.
Øystein,

242

stato: questo è stato visto di recente come Mac OS 10.8 e Xcode 4.4.

tl; dr: ciò può verificarsi in due contesti: quando si esegue sul dispositivo e quando si esegue sul simulatore. Durante l'esecuzione sul dispositivo, scollegare e ricollegare il dispositivo sembra risolvere le cose.

Suggerì Mike Ash

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

Questo non funziona sempre. In effetti, non ha mai funzionato per me, ma funziona chiaramente in alcuni casi. Non so quali casi. Quindi vale la pena provare.

Altrimenti, l'unico modo noto per risolvere questo problema è riavviare l'utente avviato. Il riavvio lo farà, ma c'è un modo meno drastico / più veloce. Devi creare un altro utente amministratore, ma devi farlo una sola volta. Quando le cose si incastrano, disconnettiti come te stesso, accedi come quell'utente ed elimina il launchd che appartiene all'utente principale, ad es.

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

sostituendo il nome utente principale per user_id. Effettuare nuovamente l'accesso quando l'utente normale ti riporta in uno stato sano. Un po 'doloroso, ma meno di un riavvio completo.

dettagli:

Ciò ha iniziato a verificarsi più spesso con Lion / Xcode 4.2. (Personalmente, non l'ho mai visto prima di quella combinazione.)

Il bug sembra essere in launchd, che eredita il processo dell'app come figlio quando il debugger interrompe il debug senza ucciderlo. Questo di solito viene segnalato dall'app che diventa uno zombi, con uno stato del processo di Z in ps.

Il problema principale sembra essere nel server dei nomi bootstrap implementato in launchd. Questo (nella misura in cui lo capisco) associa gli ID app alle porte mach. Quando il bug viene attivato, l'app muore ma non viene eliminata dalla mappa del server dei nomi del server bootstrap e, di conseguenza, il server bootstrap rifiuta di consentire a un'altra istanza dell'app di essere registrata con lo stesso nome.

Si sperava (vedi i commenti) che forzare il lancio su wait()per lo zombi avrebbe risolto le cose, ma non è così. Non è lo stato degli zombi che è il problema principale (motivo per cui alcuni zombi sono benigni), ma il server dei nomi bootstrap e non esiste un modo noto per eliminare questo corto di uccidere launchd.

Sembra che il bug sia innescato da qualcosa di brutto tra Xcode, gdb e l'utente avviato. Ho appena ripetuto il cuneo eseguendo un'app nel simulatore di iPhone, facendola arrestare all'interno di gdb, quindi facendo una build ed eseguendo il simulatore ipad. Sembra essere sensibile ai simulatori di commutazione (iOS 4.3 / iOS 5, iPad / iPhone). Non succede sempre, ma abbastanza frequentemente quando cambio molto i simulatori.

Uccidere launchd mentre sei connesso rovinerà la tua sessione. Disconnettersi e riconnettersi non uccide l'utente avviato; OS X mantiene attivo il processo esistente. Un riavvio risolverà le cose, ma è doloroso. Le istruzioni sopra sono più veloci.

Ho inviato un bug ad Apple, FWIW. rdar: // 10330930


2
Grazie per la spiegazione approfondita del nuovo comportamento Lion / XCode4.2. Sembra accadere più spesso durante il debug di due app separate.
Samkass,

2
Non è solo Lion. Continuo a usare Snow Leopard qui e vedo questo errore molte volte da quando è passato XCode 4.2. (Utilizzato per utilizzare XCode 3.x fino al rilascio di iOS SDK 5.0.)
Jonny

3
Grazie per le informazioni ... Di recente sta succedendo follemente per me ... Due volte negli ultimi 10 minuti. Difficile avviare un flusso di lavoro solido quando devo riavviare costantemente. Bene, spento per riavviare nuovamente il mio computer.
Brad Goss

1
@smparkes: in realtà sembra accadere più frequentemente di prima. Ho appena cambiato bundleID e tutto funziona di nuovo, ma è fastidioso quando si lavora con la logica CoreData che si sta tentando di eseguire il debug. Meno fastidioso del riavvio, lo ammetto.
Mike A,

2
4.3.1 ed è successo proprio ora ... davvero fastidioso. Per me, riavviare l'iPhone stesso normalmente lo risolve, non ho bisogno di riavviare il mio Mac. Sta succedendo con XCode 4.2 sotto Snow Leopard, a settembre 2011 per me.
TheEye

70

Trovo di aver iniziato ad avere questo problema con Lion + Xcode 4.2. Ho riscontrato anche il problema in Xcode 4.3.

Ho provato tutti i suggerimenti, ma nessuno di loro ha funzionato se non un riavvio completo.

Ecco come determinare se è necessario riavviare rapidamente.

Elenca tutti i tuoi processi Zombie:

ps -el | grep 'Z'

Se vedi l'app elencata come processo Zombie, dovrai riavviare il computer. Il messaggio di errore indica "In genere ciò significa che un'altra istanza di questo processo era già in esecuzione o è bloccata nel debugger". Bene, Xcode sta rilevando questo processo Zombie che non puoi uccidere. L'unico modo per risolverlo è quindi con un riavvio del sistema. :(

EDIT, 20120823: Ho una migliore conoscenza dei processi di Zombie, quindi volevo aggiornare questa risposta. Un processo Zombie viene creato quando un processo padre non chiama wait () (attendi che il processo cambi stato) su un processo figlio che termina. Non puoi eseguire 'kill' direttamente su un processo Zombie ma se uccidi il processo genitore, il processo figlio zombie verrà 'raccolto' e rimosso dalla tabella dei processi.

Non vedo questo problema da molto tempo, quindi non ho ispezionato per vedere quale sia il processo genitore in questo scenario. L'alternativa all'uccisione del processo padre è il riavvio del sistema. :)


Grazie, avevo 7 istanze di 3 programmi su cui stavo lavorando come zombi.
ArtSabintsev,

1
Il riavvio è sufficiente ma non necessario, come indicato sopra. Inoltre, a volte ci sono zombi in giro che non causano il problema, quindi cercare gli zombi in questo modo non è davvero una misura affidabile. L'unico segno sicuro è il messaggio in Xcode.
smparkes

Hai provato a uccidere questi processi di zombi come root? Ho riavviato prima di pensare di farlo.
Ryan H.

1
@smparkes, sì, è ovvio in base a questa domanda che discute questo messaggio di errore.
jyap il

1
@HZC, sì, non puoi uccidere i processi di zombi nemmeno come root.
jyap il

20

Mi è appena successo: ho riscontrato l'errore solo sul mio dispositivo e il simulatore funzionava bene. Ho finito per ripristinare il mio dispositivo e l'errore è andato via.


1
stesso qui, riavviato il dispositivo ed è andato via. Il simulatore funzionava bene
agente_secreto

15

Sto avendo questo problema molto spesso di recente. Cosa impedirebbe che ciò accada? Disconnettersi e risolvere il problema ma ... è fastidioso farlo ogni tanto.

MODIFICARE:

Ho appena trovato la causa. Ho avuto un bug nel metodo ApplicationWillTerminate. Quindi, quando faccio clic sul pulsante di arresto nella finestra di Xcode, l'app non può terminare correttamente e inizia a bloccarsi.

controlla Activity Monitor per vedere se la tua app è nell'elenco. forzare l'uscita se possibile.


2
Questo mi ha risolto! ps aux | grep Simulator
Jason Prado,

Se mi aiuta a creare questo errore durante il lancio di Leak Performance Tools
IssamTP

14

Se trovi che il tuo problema è dovuto a processi di zombi:

ps -el | grep 'Z'
(come nel commento precedente https://stackoverflow.com/a/8104400/464289 ) e vuoi solo risolvere immediatamente il problema, puoi farlo senza riavviare o uccidere nulla. Basta rinominare il file eseguibile di destinazione del progetto:

  1. Fai clic sul progetto nel riquadro a sinistra
  2. Seleziona Crea impostazioni nel riquadro centrale
  3. In " Imballaggio " cambia " Nome prodotto " da $ (TARGET_NAME) a ​​$ (TARGET_NAME) .1

Facile!


questo non ha funzionato per me, ho avuto lo stesso errore che ho ricevuto: il profilo di provisioning 'mataleao2' specifica l'identificatore dell'applicazione 'au.com.mataleao' che non corrisponde all'impostazione corrente 'au.com.mataleao-1'
sapatos

Stai testando sul simulatore o sull'iPhone?
JRG

sto testando solo su iPhone, la funzionalità sto testando funzionerà solo sul telefono
sapatos

7

Bene, nessuna risposta ma almeno un altro test da fare. Apri Terminale ed esegui questo comando: "ps-Ael | grep Z". Se ottieni due voci, una "(clang)" e l'altra il nome della tua app o della tua azienda, sei esonerato - riavvia.

Se sei uno sviluppatore, inserisci un breve bug e comunica ad Apple quanto sia assolutamente fastidioso riavviare, e menziona che possono duplicare questo bug in "rdar: // 10401934" che ho appena inserito.

David


5

Il ripristino del simulatore iOS ha risolto l'errore per me. Sebbene questo rimuoverà tutte le app che hai in Simulator, risolve il problema senza dover riavviare la macchina.

Puoi ripristinare il tuo simulatore iOS procedendo come segue:

1) Vai al menu "Simulatore iOS", accanto al logo Apple () all'estrema sinistra della schermata principale.
2) Seleziona "Ripristina contenuto e impostazioni ...".
3) Leggi il messaggio pop e se accetti fai clic su "Ripristina" altrimenti, fai clic su "Non ripristinare".


3
Non aiuta un po ', invece perdi tutti i tuoi contenuti / app / foto / contatti
strano il

1
@strange è un simulatore. comunque non contiene informazioni importanti. :)
Evgen Bodunov il

5
  1. Simulatore vicino
  2. Interrompere l'esecuzione dell'app in xCode.
  3. Apri Activity Monitor e cerca un processo in esecuzione con la tua app NAME .
  4. Uccidi questo processo in Activity Monitor
  5. Ricostruisci il tuo progetto e dovresti essere pronto

Il processo sembra essere immune dall'essere ucciso in Activity Monitor, anche con "Force Quit"
Ferruccio,

4

Ho avuto il problema menzionato da @jyap con i processi di zombi. L'unico modo per cancellarli era riavviare. Tuttavia, ho notato che i miei amici che lavoravano allo stesso progetto avrebbero avuto lo stesso problema ma avrebbero potuto uccidere il simulatore senza creare un processo zombi. Ho disinstallato completamente Xcode e lo ho reinstallato, e mentre continuo a ricevere l'errore, non crea processi zombie, quindi non devo riavviare.

Prima di farlo, stavo usando questa soluzione davvero brutta: modifica l'ID app ed esegui di nuovo. Finisci con le copie spazzatura dell'app nel simulatore, ma puoi rimandare il riavvio per un po '.


4

Questo errore mi succede molto, quasi ogni volta che collaudo l'app nel Simulatore, costringendomi a riavviare.

Ecco una soluzione alternativa se vuoi fare un po 'di lavoro:

  • Fai clic sul tuo progetto nel Navigatore progetto
  • Vai a destinazione -> Informazioni
  • Aggiungere una chiave per l' applicazione non viene eseguita in background e impostata su YES.

Ciò significa che quando si preme il pulsante Home nel simulatore o si esce dal simulatore, l'app non si blocca.

Non dimenticare di ripristinare questa impostazione prima della distribuzione! Inseriscilo nell'elenco di controllo delle versioni :)


1
Questo è pericoloso, poiché ti impedisce di testare il comportamento in background fino a quando non ricordi di cambiarlo di nuovo.
tc.

@tc: Sì, sono d'accordo. Tuttavia, se sei costretto a riavviare ogni volta che esegui la tua app iOS (che era quello che stavo avendo), allora potrebbe essere ancora migliore dell'alternativa.
Chris Burt-Brown,

4

Se ciò accade durante i test su iPhone. Basta riavviare il telefono. Da quanto mi è stato detto, il telefono o il simulatore crede ancora che ci sia un'istanza dell'app in esecuzione, quindi quando è stata eseguita l'ultima volta non è stata terminata correttamente per un errore nel codice o il telefono / simulatore voleva solo avere un gemito.


4

Ho riscontrato questo errore durante il debug della mia app su un iPhone 4. Il riavvio rigido dell'iPhone ha risolto il mio problema. (Spegnendo l'iPhone appeso ...)

Non ho avuto alcun processo di zombi sul mio mac e riavviare il mac non ha risolto il problema.

Forse questo bug può manifestarsi sia sul simulatore che sui dispositivi reali ???


4

Riavviato il dispositivo, ha funzionato! : D

Grazie a tutti per i grandi suggerimenti.


3

Ho appena avuto questo errore. Ho provato a riavviare il simulatore e Xcode ma il mio progetto avrebbe funzionato di nuovo solo dopo un clean and build. Non ho idea di cosa l'abbia causato.


3

Ho avuto un setter ricorsivo che ha fatto esplodere lo stack e ha ucciso la mia app in modo da dover avviare il mio iPad. È stato dimostrabile con una correzione nel codice.


3

Ho avuto lo stesso problema e l'ho risolto nel modo seguente

  • Eliminazione dell'app dal dispositivo,
  • Disconnessione del dispositivo dal Mac,
  • Spegnere e riaccendere il dispositivo,
  • Uscita e riavvio di Xcode,
  • Quitting Instruments,
  • Infine, pulisci e costruisci di nuovo.

Ho anche fatto un'altra cosa, perché Xcode è configurato per utilizzare iOS 5.0 e il mio progetto utilizza iOS 4.3

  • Rimuovere tutti i framework e aggiungerli di nuovo.

La domanda è per Simulator. non per dispositivo.
virale

3

Soluzione alternativa:

  • Dai alla tua app un nuovo identificatore. Se si chiama com.foobar.myapp, chiamalo com.foobar.myapp01

Perdi tutti i dati nell'app perché in realtà è una nuova app in esecuzione per quanto riguarda il simulatore di iPhone. Questo potrebbe essere o meno fastidioso del riavvio - volevo solo aggiungerlo all'elenco.


3

La causa

Esecuzione dell'app nel simulatore prima che l'app precedentemente in esecuzione si sia completamente arrestata.

La correzione

Attendi fino a quando il pulsante Stop non diventa nuovamente attivo prima di eseguire nuovamente.

(Sto usando Xcode 4.2.1. Questo problema si è verificato molto spesso durante l'aggiornamento a OS X Lion).


Ho appena avuto di nuovo questo errore. Ho provato di tutto e finalmente un riavvio di iPad ha risolto il problema.
bar

2

Risolto riavviando il telefono dopo aver eliminato l'app, quindi ricostruendolo pulito e funzionante di nuovo. Funziona bene ora.

Strano.


2

Nessuna ricostruzione o reinstallazione necessaria per il mio problema, e nel mio caso l'errore è apparso durante il tentativo di eseguire l'app su iPhone. Il simulatore ha funzionato bene.

Soluzione: elimina l'app dal telefono, riavvia il telefono a freddo e ora va tutto bene.


2

È successo molto per me con Xcode 4.2.1 su Lion. Aggiornato alla 4.3.2 e non succede più. Sono contento che lo abbiano riparato.


2

Mike Ash ha pubblicato una soluzione (dio lo benedica!) Che non richiede un riavvio. Corri:

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

Il comando sopra elenca tutti i lavori di avvio, ne cerca uno con UIKitApplication nel nome (che sarà il lavoro corrispondente alla tua app che si trova impropriamente in giro), estrae il nome e dice a launchd di sbarazzarsi di quel lavoro.


Ho avuto molte possibilità di provare questo (sospiro). A volte funziona, a volte devo riavviare il mio iPhone o anche il mio Mac (il comando sopra dice "processo non trovato").
Jano,

2

Penso che ciò sia causato dall'uscita forzata della tua app sull'iPhone prima di premere il pulsante di arresto in Xcode. A volte quando si preme il pulsante di arresto in Xcode, ci vuole più tempo per uscire dall'app se bloccata. Ma sii paziente, alla fine si fermerà per la maggior parte del tempo.


1

È possibile allocare una variabile in funzione o scheda. Si distribuirà se la funzione o la scheda viene chiusa. Quindi è necessario dichiararlo variabile membro o variabile globale.


1

Stavo ricevendo questo errore tutto il tempo fino a quando ho smesso di fidarmi del pulsante "Stop" nella finestra di dialogo Esegui. Ora che premo sempre stop nella barra degli strumenti prima di provare a correre, non ho ancora incontrato alcun processo di zombi.


0

Oh mio Dio - Ho provato TUTTO elencato sopra e in altri post. Reinstallato Xcode, riavviato il mio computer, copiato tutti i file mancanti nelle cartelle giuste ... Alla fine ho eseguito il backup del mio iPhone, cancellato e ripristinato, e ha funzionato!

Penso che quella che potrebbe essere stata la causa della lettura dentro e intorno a questo è stata la disconnessione del mio iPhone bianco che era in esecuzione con strumenti di prestazioni che rilevavano perdite. O qualcosa del genere.

Aaaah, grande sospiro di sollievo.


0

Nella peggiore delle condizioni Ripristina il contenuto e le impostazioni di iOS Simulater, e la maggior parte delle volte nel mio caso, uscire da XCode insieme al simulatore, funziona sempre per me con XCode4.6 (che spesso viene impiccato)


0

Ho affrontato questo tipo di problema una volta nel mio caso, ecco cosa ho fatto

  1. Elimina l'app dal simulatore.
  2. Elimina la cartella dei dati derivati.
  3. Eseguire un'azione pulita nel progetto selezionando il menu del prodotto: pulito
  4. Ripristina il simulatore.
  5. Esci da Xcode.
  6. Prova a eseguire il progetto ora se funziona correttamente altrimenti vai al passaggio 7
  7. Ripeti tutti i passaggi da 1 a 5, quindi riavvia il computer.

Nella maggior parte dei casi l'ho fatto funzionare al passaggio 6 in casi estremi dovevo riavviare la mia macchina.


0

Questo errore si verificava nelle versioni precedenti del simulatore iOS perché le istanze precedenti di un lavoro in un altro dispositivo che stava chiudendo potevano scontrarsi con la nuova istanza.

iOS 6.0 e versioni successive non dovrebbero presentare problemi come questo perché iOS 6.0 ha introdotto l'utilizzo dei sottoinsiemi bootstrap e iOS 7.0 ha introdotto l'uso di un server bootstrap dedicato (launchd_sim) che è completamente isolato dal server bootstrap dell'host.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.