【问题标题】:How to handle invalid pthread_t passed to libc?如何处理传递给 libc 的无效 pthread_t?
【发布时间】:2020-05-14 22:59:08
【问题描述】:

我正在使用一个库来将外围设备与我的 Android 应用程序连接,并且我无权访问该库代码。当我在 Android 8 以上的设备上运行我的应用程序时,有时我的应用程序会因日志而崩溃:

    2020-01-29 17:16:14.902 4811-5009/com.test.peripheral E/Device: session disconnect ret=-14 result:ERROR_PPCS_SESSION_CLOSED_CALLED
    2020-01-29 17:16:14.913 4811-5014/com.test.peripheral A/libc: invalid pthread_t 0x73cbb4c4f0 passed to libc
    2020-01-29 17:16:14.913 4811-5014/com.test.peripheral A/libc: Fatal signal 6 (SIGABRT), code -6 (SI_TKILL) in tid 5014 (Thread-32), pid 4811
    2020-01-29 17:16:14.934 4811-5015/com.test.peripheral A/libc: invalid pthread_t 0x73dc5ff4f0 passed to libc

我已经浏览过这个和其他与 libc 崩溃相关的链接Android Oreo 8.0 Native C++ crash: invalid pthread_t passed to libc

没有说明如何在 Android 应用中处理此问题。由于我无权访问库代码,因此我想在 Android 应用程序中捕获此异常并阻止应用程序至少崩溃。有人可以帮忙解决这个问题吗?

【问题讨论】:

  • 嗨,你发现了吗?
  • @M.Smith 似乎我们无法在应用程序中处理它,因为库中发生了崩溃。我所做的只是通过检查日志找出在哪些情况下可能会发生这种崩溃并避免在应用程序中出现这些情况

标签: android android-8.0-oreo libc


【解决方案1】:

它在奥利奥之前就已经存在,但处理方式不同。

在仿生的 status.md 中有解释:https://gerrit.pixelexperience.org/plugins/gitiles/bionic/+/HEAD/docs/status.md#invalid-handling-targetsdkversion-o

Google 团队不久前合并了一项改进,将这个“致命”问题转化为一个简单的警告: https://android.googlesource.com/platform/bionic.git/+/5bb113cba279f93fb840954463e897b9e28a8660

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-01
    • 1970-01-01
    • 2012-03-30
    • 2013-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多