错误 A/libc:SkPath 中 0x00000018(代码=1)处的致命信号 11(SIGSEGV)
Posted
技术标签:
【中文标题】错误 A/libc:SkPath 中 0x00000018(代码=1)处的致命信号 11(SIGSEGV)【英文标题】:Error A/libc: Fatal signal 11 (SIGSEGV) at 0x00000018 (code=1) in SkPath 【发布时间】:2016-12-14 09:54:34 【问题描述】:点击应用程序中的按钮时出现以下错误:
A/libc: Fatal signal 11 (SIGSEGV) at 0x00000018 (code=1), thread 11024
signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 00000018
eax 00000000 ebx b7d117e8 ecx 00000001 edx b84242d8
esi b84242d8 edi 00000000
xcs 00000073 xds 0000007b xes 0000007b xfs 00000000 xss 0000007b
eip b7b92bbc ebp bf844ca8 esp bf844c70 flags 00010286
backtrace:
#00 pc 000acbbc /system/lib/libskia.so (SkPath::SkPath(SkPath const&)+76)
#01 pc 000ae775 /system/lib/libandroid_runtime.so (android::SkPathGlue::init2(_JNIEnv*, _jobject*, SkPath*)+53)
#02 pc 0001aaa0 /system/lib/libdvm.so (dvmPlatformInvoke+80)
#03 pc 00060408 /system/lib/libdvm.so (dvmCallJNIMethod(unsigned int const*, JValue*, Method const*, Thread*)+232)
#04 pc 00049a51 /system/lib/libdvm.so (dvmCheckCallJNIMethod(unsigned int const*, JValue*, Method const*, Thread*)+65)
#05 pc 000c53c8 /system/lib/libdvm.so
#06 pc 00028ff6 /system/lib/libdvm.so (dvmMterpStd(Thread*)+70)
#07 pc 000261c0 /system/lib/libdvm.so (dvmInterpret(Thread*, Method const*, JValue*)+160)
#08 pc 00090ada /system/lib/libdvm.so (dvmInvokeMethod(Object*, Method const*, ArrayObject*, ArrayObject*, ClassObject*, bool)+938)
#09 pc 000a1a5a /system/lib/libdvm.so (Dalvik_java_lang_reflect_Method_invokeNative(unsigned int const*, JValue*)+282)
#10 pc 000c53c8 /system/lib/libdvm.so
#11 pc 00028ff6 /system/lib/libdvm.so (dvmMterpStd(Thread*)+70)
#12 pc 000261c0 /system/lib/libdvm.so (dvmInterpret(Thread*, Method const*, JValue*)+160)
#13 pc 00091139 /system/lib/libdvm.so (dvmCallMethodV(Thread*, Method const*, Object*, bool, JValue*, char*)+601)
#14 pc 0006231a /system/lib/libdvm.so (CallStaticVoidMethodV(_JNIEnv*, _jclass*, _jmethodID*, char*)+106)
#15 pc 000421f4 /system/lib/libdvm.so (Check_CallStaticVoidMethodV(_JNIEnv*, _jclass*, _jmethodID*, char*)+436)
#16 pc 00051dba /system/lib/libandroid_runtime.so (_JNIEnv::CallStaticVoidMethod(_jclass*, _jmethodID*, ...)+42)
#17 pc 00053029 /system/lib/libandroid_runtime.so (android::AndroidRuntime::start(char const*, char const*)+969)
#18 pc 000011f7 /system/bin/app_process (main+599)
#19 pc 00016e7f /system/lib/libc.so (__libc_init+95)
这就是我所得到的,堆栈跟踪中我的应用程序中没有方法调用。所以很难弄清楚是什么导致了这次崩溃。有很多类似这样的***问题,但不完全是这样。
我在这里记录这个,以便它可以帮助遇到这个确切错误的人。
【问题讨论】:
【参考方案1】:如果仔细观察,错误发生在 Skia 库中 SkPath
的原生库中。那是我的第一个也是唯一的线索。所以我在每个引用Path
的语句上都放了一个调试点。我终于弄清楚是什么导致了这个问题。就是下面这行:
final Path path = new Path(oldPath);
这会崩溃,因为 oldPath
是 null
。因此崩溃了。
【讨论】:
以上是关于错误 A/libc:SkPath 中 0x00000018(代码=1)处的致命信号 11(SIGSEGV)的主要内容,如果未能解决你的问题,请参考以下文章