繁体   English   中英

Renderscript:加载 ScriptC 脚本失败

[英]Renderscript: Loading of ScriptC script failed

当 Google 发布预发布报告时,有 1 台设备(Huawei Mate 9)总是出现此崩溃:“加载 ScriptC 脚本失败”。 我从来没有在任何其他设备上遇到过这个问题。

首先,我遇到本机渲染脚本崩溃。

*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
Build fingerprint: 'HUAWEI/MHA-L29/HWMHA:7.0/HUAWEIMHA-L29/C567B190:user/release-keys'
Revision: '0'
ABI: 'arm64'
pid: 23408, tid: 23408, name: bcc  >>> /system/bin/bcc <<<
signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x20
x0   0000000000000000  x1   0000007bab3b6dc8  x2   0000007baac00000  x3   0000000000000005
x4   000000000000017c  x5   0000007baaf5d6b8  x6   0000007bab72a6be  x7   6871736eff736877
x8   0000000000000000  x9   0000007baba0c748  x10  000000000000017c  x11  0000000000000000
x12  0000007baba0c788  x13  0000000000000003  x14  000000000000000c  x15  2e8ba2e8ba2e8ba3
x16  0000007bad1b3e18  x17  0000007baca5521c  x18  0000000000000002  x19  0000007baba97fe8
x20  0000000000000000  x21  0000000000000000  x22  0000007bab3b6dc8  x23  0000007fe3f04078
x24  588d44aeb495b6a2  x25  0000007bab3b6dc8  x26  0000007baad7c890  x27  588d44aeb495b6a2
x28  0000007fe3f037c0  x29  0000007fe3f03670  x30  0000007bac9ff048
sp   0000007fe3f035a0  pc   0000007baca55258  pstate 0000000020000000
backtrace:
#00 pc 0000000000add258  /system/lib64/libLLVM.so (_ZN4llvm22AssumptionCacheTracker18getAssumptionCacheERNS_8FunctionE+60)
#01 pc 0000000000a87044  /system/lib64/libLLVM.so (_ZN4llvm14InlineFunctionENS_8CallSiteERNS_18InlineFunctionInfoEPNS_9AAResultsEb+21468)
#02 pc 0000000000039c4c  /vendor/lib64/libbccArm_v2.so (_ZN12rsTranslator29buildTranslatableFunctionListEPN4llvm6ModuleERNS0_9MapVectorIPNS0_8FunctionEN5RsAPI19rootFunctionProps_tENS0_8DenseMapIS5_jNS0_12DenseMapInfoIS5_EENS0_6detail12DenseMapPairIS5_jEEEENSt3__16vectorINSF_4pairIS5_S7_EENSF_9allocatorISI_EEEEEE+2344)
#03 pc 000000000003d0bc  /vendor/lib64/libbccArm_v2.so (_ZN12rsTranslator9translateEPN4llvm6ModuleES2_PFPvPKvPKcPmES5_+2448)
#04 pc 000000000003710c  /vendor/lib64/libbccArm_v2.so (_Z21translateModuleToMaliPN3bcc8RSScriptEPN4llvm6ModuleES4_+348)
#05 pc 0000000000067854  /system/lib64/libbcc.so (_ZN3bcc8RSScript11LinkRuntimeERS0_PKc+228)
#06 pc 000000000005cf78  /system/lib64/libbcc.so (_ZN3bcc16RSCompilerDriver13compileScriptERNS_8RSScriptEPKcS4_S4_S4_b+152)
#07 pc 000000000005df4c  /system/lib64/libbcc.so (_ZN3bcc16RSCompilerDriver17buildForCompatLibERNS_8RSScriptEPKcS4_S4_b+56)
#08 pc 00000000000054a4  /system/bin/bcc
#09 pc 000000000001a68c  /system/lib64/libc.so (__libc_init+88)
#10 pc 0000000000003f8c  /system/bin/bcc

然后我收到加载失败的正式消息(我在 AsyncTask 中加载渲染脚本):

FATAL EXCEPTION: AsyncTask #1
Process: com.example.renderscripttest, PID: 23315
java.lang.RuntimeException: An error occurred while executing doInBackground()
at android.os.AsyncTask$3.done(AsyncTask.java:330)
at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:354)
at java.util.concurrent.FutureTask.setException(FutureTask.java:223)
at java.util.concurrent.FutureTask.run(FutureTask.java:242)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:255)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
at java.lang.Thread.run(Thread.java:776)
Caused by: android.support.v8.renderscript.RSRuntimeException: Loading of ScriptC script failed.
at android.support.v8.renderscript.ScriptC.<init>(ScriptC.java:61)
at com.example.renderscripttest.ScriptC_CalcScript.<init>(ScriptC_CalcScript.java:42)
at com.example.renderscripttest.ScriptC_CalcScript.<init>(ScriptC_CalcScript.java:34)
at com.example.renderscripttest.MainActivity.createScript(MainActivity.java:15660)
at com.example.renderscripttest.InitGPUThread.doInBackground(InitGPUThread.java:12)
at com.example.renderscripttest.InitGPUThread.doInBackground(InitGPUThread.java:5)
at android.os.AsyncTask$2.call(AsyncTask.java:316)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
... 4 more

这是我的 gradle 设置:

compileSdkVersion 28
buildToolsVersion '27.0.3'
defaultConfig {
    applicationId "com.example.renderscripttest"
    minSdkVersion 17
    targetSdkVersion 28
    versionCode 40
    versionName "1.1.0"
    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    vectorDrawables.useSupportLibrary = true
    renderscriptTargetApi 17
    renderscriptSupportModeEnabled true
}

我该如何解决?

我收到了“加载 ScriptC 脚本失败”的崩溃报告。 在 Gigaset GS185 上运行 Oreo 8.1

经过长时间的调查,我们发现只有当应用程序移动到 SD 卡时才会出现错误。 也许谷歌也在外部存储上安装应用程序进行测试? 我认为 Android 在运行时编译 RenderScript,如果脚本在 SD 卡上,可能会失败。

对我来说,解决方案是

adb root 
adb remount
adb shell setenforce 0

您可以通过以下方式检查状态

adb shell getenforce

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM