La aplicación iOS se bloquea cada dos inicios, no se puede encontrar el error

81

La primera vez que abro la aplicación, todo parece funcionar bien. Presionaré el botón de detener, trabajaré un poco y cuando voy a iniciarlo nuevamente, parece fallar antes de que pueda cargar nada. Presiona detener, presiona Ejecutar nuevamente y funciona bien. Hasta que repito el proceso.

Aquí es donde xcode resalta el error con "Subproceso 1: señal SIGABRT". Obviamente nada útil aquí.

int main(int argc, char *argv[])
{
    @autoreleasepool {
        return UIApplicationMain(argc, argv, nil, NSStringFromClass([PokerAppDelegate class]));
    }
}

La consola de depuración no muestra nada además de (lldb) (así que supongo que se detiene, no se bloquea en este punto) Entonces, cuando realizo un BTesto es lo que obtengo:

(lldb) bt
* thread #1: tid = 0x1c03, 0x9a258a6a libsystem_kernel.dylib`__pthread_kill + 10, stop reason = signal SIGABRT
    frame #0: 0x9a258a6a libsystem_kernel.dylib`__pthread_kill + 10
    frame #1: 0x99ea1b2f libsystem_c.dylib`pthread_kill + 101
    frame #2: 0x04a7057b libsystem_sim_c.dylib`abort + 140
    frame #3: 0x01dc0b4e GraphicsServices`GSRegisterPurpleNamedPort + 348
    frame #4: 0x01dc069f GraphicsServices`_GSEventInitialize + 123
    frame #5: 0x01dc0c1f GraphicsServices`GSEventInitialize + 36
    frame #6: 0x000163f9 UIKit`UIApplicationMain + 600
    frame #7: 0x00001d0d Guitar Chord Poker HD`main(argc=1, argv=0xbffff32c) + 141 at main.m:16
    frame #8: 0x00001c35 Guitar Chord Poker HD`start + 53
(lldb) 

Esto es lo que he hecho hasta ahora:

  • Realizó una 'limpieza'
  • Reinicié los simuladores y reinicié mi computadora
  • He comentado todo el código en el controlador de vista, todavía falla
  • He comentado todo el código en el delegado de la aplicación, todavía falla
  • PERO .... He ejecutado la aplicación en un dispositivo fuera de Xcode, y parece funcionar perfectamente bien.
  • (EDITAR) Eliminé / reinstalé xcode y todo el contenido (Simuladores, Documentos) de las diversas carpetas de caché (Esto evita que xcode reinstale automáticamente las antiguas después de una nueva descarga). Sin embargo, todavía no puedo encontrar dónde se guardan las herramientas de línea de comandos. Todavía se bloquea.

A pesar de todo esto, las aplicaciones aún fallan cada segundo / otro lanzamiento.

La cosa es que no tuve problemas hasta la actualización más reciente de Xcode. ¿Podría ser un error de Xcode?

(EDITAR) También estoy ejecutando las últimas versiones para desarrolladores de OSX. ¿Podría eso estar interfiriendo?

Beau Nouvelle
fuente
¿Ha intentado ejecutar un proyecto vacío en el simulador de iOS y en el dispositivo conectado / desconectado?
Reck Hou
@ReckHou Está bien, sí, el mismo problema en un proyecto nuevo. ¿Qué podría ser la causa? ¿Alguna forma de evitarlo además de reinstalar xcode?
Beau Nouvelle
Ya tenemos a dos personas con este problema. (después de la última actualización obtengo un error similar) Actualmente utilizo AppCode hasta la próxima actualización de Xcode con el error corregido. (Mi pregunta stackoverflow.com/questions/16113036/… )
Ilya Ilin
5
Empecé a ver lo mismo después de actualizar a OSX 10.8.4 hoy. No tuve problemas con Xcode 4.6.2 en OSX 10.4.3. Los problemas parecen desaparecer si cambio de LLDB a GDB, por lo que podría ser causado por el depurador (Xcode 4.6.2 LLDB en combinación con OSX 10.8.4).
Matej Bukovinski
1
Obtengo lo mismo después de una actualización a 10.8.4. Cada dos lanzamientos. Reiniciar el simulador, reiniciar Xcode, no hace ninguna diferencia. Bloqueo inmediato en main (). Cada dos carreras. Gracias por la idea de GDB, eso está funcionando aquí.
Graham Perks

Respuestas:

75

Parece ser una combinación de OS X 10.8.4 y LLDB . Como dice Kenster, cambiar a GDB hace que el problema desaparezca.

Editar:
Es causado por una condición de carrera en el servidor de depuración (escuché).

Aquí hay una solución si desea seguir usando LLDB: en lugar de hacer clic en Ejecutar mientras la aplicación ya se está ejecutando en el simulador, elimínela en Xcode (⌘-.), Diga "Me encanta Xcode" 5 veces y ejecútelo nuevamente (⌘- R). No chocará, lo probé.


Corregido en Xcode 4.6.3.

rey nevan
fuente
Realmente no funciona bien. El lanzamiento prácticamente se ahoga cada dos veces. Cambiar a GDB es una solución mucho más estable por ahora hasta que Apple arregle sus cosas.
Jonny
2
Tú y el autor de la pregunta sois mis nuevas personas favoritas. Esto me estaba volviendo loco, adonde estaba a punto de enviar mi MBP para que lo repararan.
Kalle
Con 10.9 y Xcode 5, GDB se ha eliminado y ahora es LLDB. ¡Pero todo funciona como debería!
Beau Nouvelle
¡Argh! Volver a un compilador obsoleto, solo para arreglar un error (realmente doloroso) en el compilador de última generación es un gran problema ... Pero no hay elección, tendré que hacerlo.
MonsieurDart
La actualización a 4.6.3 lo hizo, ni siquiera sabía que se había lanzado la versión.
David H
11

Yo también estaba teniendo este problema. Mira esta publicación. La aplicación Xcode 4.6.2 se bloquea cada segunda ejecución

Básicamente, cambie su depurador de LLDB a GDB. No puedo creer que esto se deba a que LLDB tiene errores.

kenster
fuente
Oh Dios mío ... Fijo. Estoy tan acostumbrado que cada vez que ejecuto un proyecto me preparo para enfurecerme. Pero nada pasa. Montones de gracias. Se lo dejaré saber a Apple en mi informe de errores.
Beau Nouvelle
2
Gracias por la información, me estaba volviendo loco todo el día de ayer. ¿Por qué siempre espero hasta haberme arrancado todo el cabello (restante) antes de buscar AQUÍ? LOL.
Bertie
3

Cambiar a GDB o reiniciar el dispositivo / host no resuelve el problema en mi entorno.

Sin embargo, se modificó el objetivo Ejecutar en el esquema XCode asociado para que ya no se inicie automáticamente, sino para "Esperar a que se inicie HelloWorld .app" .

El único inconveniente es que esto implica iniciar manualmente la aplicación en el dispositivo. Luego, el depurador se conectará.

Mekugi
fuente