【问题标题】:Unknown bug "Thread starting during runtime shutdown"未知错误“运行时关闭期间线程启动”
【发布时间】:2018-01-16 22:58:47
【问题描述】:

我正在使用 Fabric 报告我的应用程序崩溃。 我已经收到这些报告很长时间了,并且崩溃的数量不断增加。

Fatal Exception: java.lang.InternalError: Thread starting during runtime shutdown
   at java.lang.Thread.nativeCreate(Thread.java)
   at java.lang.Thread.start(Thread.java:730)
   at java.util.concurrent.ThreadPoolExecutor.addWorker(ThreadPoolExecutor.java:941)
   at java.util.concurrent.ThreadPoolExecutor.processWorkerExit(ThreadPoolExecutor.java:1009)
   at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1151)
   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
   at java.lang.Thread.run(Thread.java:761)

此报告还附有 62 个主题的列表,如果你们愿意,我可以在这里发布。

我不知道是哪部分代码导致了这个问题,也不知道如何复制这个错误。所以希望你能指导我找到并解决这个案子。

【问题讨论】:

    标签: android multithreading crashlytics fabric.io


    【解决方案1】:

    我有同样的问题...

    我更新了 fabric 插件,然后更新了 twitter sdk..

    然后清理我的项目并重建apk..我的错误已经消失了。

    在某些 ANR 发生时,有时会发生此错误。

    【讨论】:

    • 感谢您帮助我。我会按照你的方式为下一个版本做,看看我的错误是否也会得到解决。
    • @MohammadHamoud 很遗憾没有,我不知道如何解决它。也许我需要查看整个源代码,但我现在没有时间。
    • 抱歉,Fabric 已更新到最新,但仍然出现相同的错误
    【解决方案2】:

    当前线程启动太晚,即在UncaughtExceptionHandler中收到未捕获异常时,启动子线程上传错误日志。 HttpClient 是在上传错误日志时创建的,但 ThreadSafeClientConnManager 设置为在创建时管理连接。

    通过查看ThreadSafeClientConnManager的源码,发现ThreadSafeClientConnManager也开启了子线程,导致子线程中开启子线程的问题,执行完成后会在线程中导致uncaughtException()只有当线程启动时,java.lang.InternalError: Thread started during runtime shutdown 将被抛出。

    这个问题的解决方法是:提前创建HttpClient,因为HttpClient创建也会启动线程,避免在uncaughtException()中创建,从而避免线程中启动线程的问题。

    替代解决方案:从您的代码中删除 UncaughtExceptionHandler,以防它尝试创建线程。

    【讨论】:

      猜你喜欢
      • 2016-04-15
      • 1970-01-01
      • 2013-09-05
      • 2015-04-24
      • 1970-01-01
      • 2017-08-13
      • 2018-09-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多