gpt4 book ai didi

android - NDK 创建的后台线程中的 SIGABRT

转载 作者:行者123 更新时间:2023-11-30 05:42:04 25 4
gpt4 key购买 nike

我有一些从 Xamarin 调用的 Android NDK 代码。直接返回的简单内容是可以的,但是当我创建后台线程时,我得到一个 SIGABRT (-6) 并且应用程序死掉了。

后台线程是用std::thread(lambda)创建的。需要一个后台 NDK 线程,因为此代码必须解压缩一个非常大的数据文件,然后使用解压缩的数据运行一些 CPU 密集型算法。

现在 SIGABRT 似乎源自 libc,这被认为是应用程序无响应的症状。然而这应该只影响主线程?在开发人员选项中,我确实启用了“显示所有 ANR”选项,但这只会在现有 Android 软件周围闪烁几个红框。

为什么 Android 会混淆我的后台线程和前台线程?我如何告诉 Android 不要终止我的后台线程?

Android v5.1.1 库存 Google/LG Nexus 5。

最佳答案

事实证明 SIGABRT 重载了。它发生在对应用程序没有响应、调用 abort() 以及未处理的异常的 react 中。而且 logcat 输出不会告诉您发生了哪些情况。

我通过 dup'ing stderr 发现了这个- 解压后的数据与应用程序中的算法不匹配,因此在调用慢速算法时立即发生异常。

关于android - NDK 创建的后台线程中的 SIGABRT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30846735/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com