SIGSEGV在android上使用本机库时,硬件仅加速

时间:2016-09-09 15:14:46

标签: android android-ndk java-native-interface

我正在使用Superpowered SDK进行一些音频播放和录制。当我按下按钮开始播放时,应用程序崩溃

A/DEBUG: ABI: 'arm64'
A/DEBUG: pid: 18529, tid: 18548, name: RenderThread  >>> com.superpowered.example <<<
A/DEBUG: signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x10
A/DEBUG:     x0   0000007f789f8000  x1   0000007f7409f288  x2   0000007f7d6a8a88  x3   0000000000fe502b
A/DEBUG:     x4   0000000000116906  x5   0000000000000000  x6   00000a4cc0b1813f  x7   0000007f789f8000
A/DEBUG:     x8   000000000055655a  x9   000000000055655a  x10  000000000000a8c0  x11  00000000213b09a0
A/DEBUG:     x12  0000000000000018  x13  ffffffffa82de1ea  x14  000bb95f86000000  x15  003b9aca00000000
A/DEBUG:     x16  0000007f7dadc7d8  x17  0000007f7d6a8a54  x18  0000007f78892ee8  x19  0000007f78891000
A/DEBUG:     x20  0000007f7409f288  x21  0000007f78892ee8  x22  0000007f7bf4e000  x23  0000007f7bf4e000
A/DEBUG:     x24  0000007f7409f288  x25  7fffffffffffffff  x26  00000000ffffffff  x27  0000007f7a52a9b0
A/DEBUG:     x28  0000007f635331e0  x29  0000007f7409f190  x30  0000007f7bec3840
A/DEBUG:     sp   0000007f7409f190  pc   0000007f7bec3850  pstate 0000000080000000
A/DEBUG: backtrace:
A/DEBUG:     #00 pc 0000000000025850  /system/lib64/libhwui.so
A/DEBUG:     #01 pc 0000000000026e5c  /system/lib64/libhwui.so
A/DEBUG:     #02 pc 0000000000026fd8  /system/lib64/libhwui.so
A/DEBUG:     #03 pc 000000000002b43c  /system/lib64/libhwui.so (android::uirenderer::renderthread::RenderThread::threadLoop()+124)
A/DEBUG:     #04 pc 000000000001579c  /system/lib64/libutils.so (android::Thread::_threadLoop(void*)+208)
A/DEBUG:     #05 pc 00000000000903cc  /system/lib64/libandroid_runtime.so (android::AndroidRuntime::javaThreadShell(void*)+96)
A/DEBUG:     #06 pc 0000000000014fec  /system/lib64/libutils.so
A/DEBUG:     #07 pc 0000000000065fb4  /system/lib64/libc.so (__pthread_start(void*)+52)
A/DEBUG:     #08 pc 000000000001ed84  /system/lib64/libc.so (__start_thread+16)

我已经在他们的github repo上打开了一个问题,但他们不会再调查任何因为它在我的自定义UI代码中出现的错误&#34;。

所以经过几个小时的调试后,我发现了这个:

  • 似乎在本机库中触发播放会以某种方式干扰android内部。
  • 向按钮操作添加随机延迟可降低崩溃的可能性。
  • 临时解决方法是禁用硬件加速(android:hardwareAccelerated="false")。

如果您想亲自尝试,可以找到代码here。 有没有人有类似的问题?是否有任何解决方法不涉及禁用硬件加速?非常感谢任何帮助!

0 个答案:

没有答案