Renderscript 致命信号 11 (SIGSEGV) 代码 1 (SEGV_MAPERR) 故障地址

Posted

技术标签:

【中文标题】Renderscript 致命信号 11 (SIGSEGV) 代码 1 (SEGV_MAPERR) 故障地址【英文标题】:Renderscript Fatal signal 11 (SIGSEGV) code 1 (SEGV_MAPERR) fault addr 【发布时间】:2020-07-19 14:32:39 【问题描述】:

我正在使用 camera2 API 来获取格式为 ImageFormat.YUV_420_888 的图像流。我需要使用一个库对它们进行一些处理,该库需要将图像作为 RGB 字节数组发送(所以 byte array length = width * height * 3

我使用this thread(也可能是所有其他人)将图像转换为 RGB 字节数组(这似乎有效,至少结果字节数组是我需要的)。

另外,这是我在 Kotlin 中用于将 YUV_420 转换为 RGB 的确切代码,并进行了一些更新:https://gist.github.com/VictorMotogna/e7a8493af65be994f29f5508660dd4a9

问题是在尝试几次后转换崩溃并显示消息A/libc: Fatal signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0xe00000084 in tid 20776 (package name), pid 20776

我尝试了其他图像格式和其他转换,但似乎没有任何效果 - 我遇到同样的崩溃(使用 YUV_420 或 NV21 时)或者我无法获得正确的图像/转换。

似乎有帮助的一件事是: 使用android:hardwareAccelerated="false",应用程序在运行比android:hardwareAccelerated="true" 多得多后崩溃

不知道有没有帮助???

有人知道怎么解决吗?

【问题讨论】:

【参考方案1】:

我在您的示例代码中注意到的事情:

在使用完分配之前销毁分配(可以像 rs 上下文一样重复使用) 您定义和设置默认启动选项(不需要)

【讨论】:

以上是关于Renderscript 致命信号 11 (SIGSEGV) 代码 1 (SEGV_MAPERR) 故障地址的主要内容,如果未能解决你的问题,请参考以下文章

应用随机崩溃与致命信号7(SIGBUS),代码2或致命信号11(SIGSEGV),代码1

无效的堆地址和致命信号 11

OpenCV 裁剪函数致命信号 11

应用程序崩溃(有时),致命信号 11 (SIGSEGV),代码 1

使用 mixChannels 函数 (opencv) 时的“致命信号 11 (SIGSEGV),代码 1”

Android、CMDTool、stdout 重定向、“致命信号 11 (SIGSEGV)”