Android Studio Debugger Application Crashes with InterruptedException

Michael Kolakowski picture Michael Kolakowski · May 24, 2016 · Viewed 21.2k times · Source

While working today, it seemed as if suddenly I could no longer debug our application. The funny thing is, if I ran the app normally it would work just fine. To clarify, I was running the debugger all morning without incident (apart from the occasional glitch or crash). Then after lunch it began failing 100% of the time. Of course, I've been making changes all day, hence the "it seems" above. So, here are some relevant details:

  • Android Studio 2.1.1 (April 28, 2016 build)

  • This app starts up with a log in screen. The user must then authenticate with a username/password which calls out to an external service.

  • I can get to the login screen, but the app would always crash at the same point in the middle of the authentication.

Here is the stack trace:

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)

Here are the things I've tried to fix it:

  • Back out all my changes (git stash)
  • Uninstall application from phone
  • Do a clean build
  • Do a Gradle Project Resync
  • Remove all breakpoints (seriously?)
    • Ok, I've been adding breakpoints all over to see how things work, so who knows? There's some merit there.
  • Restart Android Studio! (turn it off and on again)

And so far, nothing works. However, I can't emphasize enough that if I just run the app (play button, ^R) and run it on the very same device, it works just fine! Log in with no problem. So, it doesn't seem to be a code problem.

Furthermore, if you look at the stack trace, there is nothing pointing to our project.

Any ideas?

Answer

Michael Kolakowski picture Michael Kolakowski · May 25, 2016

Well, I figured it out. It turns out I had a "Java Field Watchpoint" selected with "Suspend Thread" as one of the options. See the attached screenshot for clarification. Takeaways:

As you can see, I had been using a bunch of breakpoints, so it got buried in the window and I didn't see it.

I still don't know how it got set. I had been using watches on a previous day, but I had deleted them all. Furthermore, I'm quite certain I didn't turn it on, so how it mysteriously stopped working in the middle of the day is still a mystery. Also, I certainly wouldn't have checked "suspend thread" on my own. Some sort of default setting?

Point remains - if you are seeing weird stack traces, it might be good to check all the breakpoints and watch point settings.

I hope this helps someone.

Screenshot of BreakPoint Window in Android Studio