print - La aplicación de depuración de Android Studio se bloquea con la excepción InterruptedException
logger android (4)
Mientras trabajaba hoy, parecía que de repente ya no podía depurar nuestra aplicación. Lo curioso es que, si ejecuto la aplicación, normalmente funcionaría bien. Para aclarar, estuve ejecutando el depurador toda la mañana sin incidentes (aparte de la falla o falla ocasional). Luego, después del almuerzo, comenzó a fallar el 100% del tiempo. Por supuesto, he estado haciendo cambios todo el día, de ahí el "parece" de arriba. Entonces, aquí hay algunos detalles relevantes:
Android Studio 2.1.1 (28 de abril de 2016, compilación)
Esta aplicación se inicia con una pantalla de inicio de sesión. El usuario debe autenticarse con un nombre de usuario / contraseña que llame a un servicio externo.
Puedo acceder a la pantalla de inicio de sesión, pero la aplicación siempre se bloqueaba en el mismo punto en el medio de la autenticación.
Aquí está la traza de la pila:
05-24 14:56:25.764 2399-2745/com.mycomp.myapp.test E/Crashlytics: Failed to execute task.
java.lang.InterruptedException
at java.util.concurrent.FutureTask.awaitDone(FutureTask.java:375)
at java.util.concurrent.FutureTask.get(FutureTask.java:162)
at com.crashlytics.android.v.a(SourceFile:1936)
at com.crashlytics.android.v.uncaughtException(SourceFile:307)
at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:693)
at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:690)
05-24 14:56:25.764 2399-2745/com.mycomp.myapp.test E/AndroidRuntime: FATAL EXCEPTION: pool-5-thread-1
Process: com.mycomp.myapp.test, PID: 2399
java.lang.InterruptedException
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.reportInterruptAfterWait(AbstractQueuedSynchronizer.java:1991)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2025)
at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:410)
at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1035)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1097)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
at java.lang.Thread.run(Thread.java:820)
Aquí están las cosas que he tratado de arreglarlo:
- Retrocede todos mis cambios (git stash)
- Desinstalar la aplicación del teléfono
- Hacer una compilación limpia
- Haz un proyecto de Gradle Resync
- Eliminar todos los puntos de interrupción (¿en serio?)
- Ok, he estado agregando puntos de interrupción por todas partes para ver cómo funcionan las cosas, ¿quién sabe? Hay algo de mérito allí.
- Reinicie Android Studio! (Apágalo y vuelve a encenderlo)
Y hasta ahora, nada funciona. Sin embargo, no puedo enfatizar lo suficiente que si ejecuto la aplicación (botón de reproducción, ^ R) y la ejecuto en el mismo dispositivo, ¡funciona bien! Inicia sesión sin problemas. Entonces, no parece ser un problema de código.
Además, si nos fijamos en el seguimiento de la pila, no hay nada que apunte a nuestro proyecto.
¿Algunas ideas?
Bueno, lo descubrí. Resulta que tuve un "Java Field Watchpoint" seleccionado con "Suspender Hilo" como una de las opciones. Vea la captura de pantalla adjunta para aclaración. Para llevar:
Como puede ver, había estado utilizando un montón de puntos de interrupción, por lo que se enterró en la ventana y no lo vi.
Todavía no sé cómo se estableció. Había estado usando relojes el día anterior, pero los había borrado todos. Además, estoy bastante seguro de que no lo encendí, por lo que misteriosamente dejó de funcionar a mitad del día y sigue siendo un misterio. Además, ciertamente no habría marcado "suspender hilo" por mi cuenta. ¿Algún tipo de configuración por defecto?
Sigue siendo el punto: si está viendo trazas de pila extrañas, puede ser bueno verificar todos los puntos de interrupción y la configuración de los puntos de observación.
Espero que esto ayude a alguien.
Cambié los emuladores (de Android 8.1 a Android 7.0) y no volví a experimentar esto. Perdí 3 horas en esto. Espero ayudar a alguien sugiriendo esto.
Desactiva la ejecución instantánea, solucionará todos los problemas
La ejecución instantánea parece ser la culpable (al menos en mi caso con Android Studio 2.3.3). En lugar de deshabilitar los puntos de interrupción, intente deshabilitar la ejecución instantánea. Una vez que hice esto, los puntos de interrupción dejaron de causar choques.
Consulte los bloqueos de aplicaciones de Android cuando se inician en el modo de depuración para obtener más información. Bajo Mac OS X, deshabilité la Ejecución instantánea yendo a Android Studio-> Preferencias-> Generar, Ejecución, Implementación-> Ejecución instantánea y deseleccionando "Activar ejecución instantánea para intercambio en caliente ...".
Hay un "¿Tiene problemas con la ejecución instantánea?" Mensaje que se muestra en el panel de configuración. Hice clic en "Volver a habilitar y activar el registro adicional", reproduje el bloqueo y luego informé inmediatamente usando la opción "Ayuda - Informar de un problema de ejecución instantánea ..." según lo solicitaron.