GitHub user lvfen reopened a pull request:

    https://github.com/apache/incubator-weex/pull/999

    fix api 21 PaintDrawable Crash

    PaintDrawable will crash on Api 21
    
    crash stack:
    
    SIGSEGV(SEGV_MAPERR):
    #00 pc 000b0a4e /system/vendor/lib/egl/libGLESv2_adreno.so 
[armeabi-v7a::98aa079c3b61e1d8483bc6915a4ea80f]
    #1 pc 000b12b3 /system/vendor/lib/egl/libGLESv2_adreno.so 
(oxili_tile_texture+282) [armeabi-v7a::98aa079c3b61e1d8483bc6915a4ea80f]
    #2 pc 00087d9b /system/vendor/lib/egl/libGLESv2_adreno.so 
[armeabi-v7a::98aa079c3b61e1d8483bc6915a4ea80f]
    #3 pc 00089b31 /system/vendor/lib/egl/libGLESv2_adreno.so 
(rb_texture_update_hw_subimage+4220) 
[armeabi-v7a::98aa079c3b61e1d8483bc6915a4ea80f]
    #4 pc 0008ad35 /system/vendor/lib/egl/libGLESv2_adreno.so 
(rb_texture_loadimage+218) [armeabi-v7a::98aa079c3b61e1d8483bc6915a4ea80f]
    #5 pc 00065dab /system/vendor/lib/egl/libGLESv2_adreno.so 
(TexImageLoad+234) [armeabi-v7a::98aa079c3b61e1d8483bc6915a4ea80f]
    #6 pc 00066157 /system/vendor/lib/egl/libGLESv2_adreno.so 
(core_glTexImage2D+230) [armeabi-v7a::98aa079c3b61e1d8483bc6915a4ea80f]
    #7 pc 00044391 /system/vendor/lib/egl/libGLESv2_adreno.so (glTexImage2D+50) 
[armeabi-v7a::98aa079c3b61e1d8483bc6915a4ea80f]
    #8 pc 00038dc7 /system/lib/libhwui.so 
[armeabi-v7a::6020227c8682c7c307281ce48eb729d9]
    #9 pc 0003944f /system/lib/libhwui.so 
[armeabi-v7a::6020227c8682c7c307281ce48eb729d9]
    #10 pc 00039629 /system/lib/libhwui.so 
[armeabi-v7a::6020227c8682c7c307281ce48eb729d9]
    #11 pc 00039693 /system/lib/libhwui.so 
[armeabi-v7a::6020227c8682c7c307281ce48eb729d9]
    #12 pc 0003495b /system/lib/libhwui.so 
[armeabi-v7a::6020227c8682c7c307281ce48eb729d9]
    #13 pc 00034aa9 /system/lib/libhwui.so 
[armeabi-v7a::6020227c8682c7c307281ce48eb729d9]
    #14 pc 000350f3 /system/lib/libhwui.so 
[armeabi-v7a::6020227c8682c7c307281ce48eb729d9]
    #15 pc 000280a3 /system/lib/libhwui.so 
[armeabi-v7a::6020227c8682c7c307281ce48eb729d9]
    #16 pc 0002873b /system/lib/libhwui.so 
[armeabi-v7a::6020227c8682c7c307281ce48eb729d9]
    #17 pc 0001d105 /system/lib/libhwui.so 
[armeabi-v7a::6020227c8682c7c307281ce48eb729d9]
    #18 pc 0001b609 /system/lib/libhwui.so 
[armeabi-v7a::6020227c8682c7c307281ce48eb729d9]
    #19 pc 0001b1d3 /system/lib/libhwui.so 
[armeabi-v7a::6020227c8682c7c307281ce48eb729d9]
    #20 pc 0002a677 /system/lib/libhwui.so 
[armeabi-v7a::6020227c8682c7c307281ce48eb729d9]
    #21 pc 0003a295 /system/lib/libhwui.so 
[armeabi-v7a::6020227c8682c7c307281ce48eb729d9]
    #22 pc 0003b1a1 /system/lib/libhwui.so 
[armeabi-v7a::6020227c8682c7c307281ce48eb729d9]
    #23 pc 0003cc9f /system/lib/libhwui.so 
(_ZN7android10uirenderer12renderthread12RenderThread10threadLoopEv+66) 
[armeabi-v7a::6020227c8682c7c307281ce48eb729d9]
    #24 pc 0000ef55 /system/lib/libutils.so 
(_ZN7android6Thread11_threadLoopEPv+112) 
[armeabi-v7a::811cebf104cff63eacd6d977257b90fa]
    #25 pc 0005a3ad /system/lib/libandroid_runtime.so 
(_ZN7android14AndroidRuntime15javaThreadShellEPv+72) 
[armeabi-v7a::159e1a4d880205218eff8fcd5e2ab8c2]
    #26 pc 0000eac5 /system/lib/libutils.so 
[armeabi-v7a::811cebf104cff63eacd6d977257b90fa]
    #27 pc 000137a3 /system/lib/libc.so (_ZL15__pthread_startPv+30) 
[armeabi-v7a::30577c4046d655391344f729791da864]
    #28 pc 00011883 /system/lib/libc.so (__start_thread+6) 
[armeabi-v7a::30577c4046d655391344f729791da864]
    
    when close hardware layer, crash stack change to :
    SIGSEGV(SEGV_MAPERR):
    #00 pc 00197f78 /system/lib/libskia.so 
(_Z31S32_opaque_D32_nofilter_DX_neonRK17SkBitmapProcStatePKjiPj+143) 
[armeabi-v7a::fa6bef525f3435afbefe01e62dc3a290]
    #1 pc 000b2f8f /system/lib/libskia.so 
(_ZN18SkBitmapProcShader23BitmapProcShaderContext9shadeSpanEiiPji+134) 
[armeabi-v7a::fa6bef525f3435afbefe01e62dc3a290]
    #2 pc 000bca31 /system/lib/libskia.so 
(_ZN23SkARGB32_Shader_Blitter5blitVEiiih+526) 
[armeabi-v7a::fa6bef525f3435afbefe01e62dc3a290]
    #3 pc 000b93fd /system/lib/libskia.so 
(_ZN9SkBlitter12blitAntiRectEiiiihh+28) 
[armeabi-v7a::fa6bef525f3435afbefe01e62dc3a290]
    #4 pc 000ec6f3 /system/lib/libskia.so (_ZN12SuperBlitter8blitRectEiiii+226) 
[armeabi-v7a::fa6bef525f3435afbefe01e62dc3a290]
    #5 pc 000eeaad /system/lib/libskia.so 
[armeabi-v7a::fa6bef525f3435afbefe01e62dc3a290]
    #6 pc 000eefcb /system/lib/libskia.so 
(_Z12sk_fill_pathRK6SkPathPK7SkIRectP9SkBlitteriiiRK8SkRegion+294) 
[armeabi-v7a::fa6bef525f3435afbefe01e62dc3a290]
    #7 pc 000ecb07 /system/lib/libskia.so 
(_ZN6SkScan12AntiFillPathERK6SkPathRK8SkRegionP9SkBlitterb+790) 
[armeabi-v7a::fa6bef525f3435afbefe01e62dc3a290]
    #8 pc 000ecbe5 /system/lib/libskia.so 
(_ZN6SkScan12AntiFillPathERK6SkPathRK12SkRasterClipP9SkBlitter+32) 
[armeabi-v7a::fa6bef525f3435afbefe01e62dc3a290]
    #9 pc 000c75cb /system/lib/libskia.so 
(_ZNK6SkDraw8drawPathERK6SkPathRK7SkPaintPK8SkMatrixbb+502) 
[armeabi-v7a::fa6bef525f3435afbefe01e62dc3a290]
    #10 pc 000c1315 /system/lib/libskia.so 
(_ZN8SkCanvas8drawPathERK6SkPathRK7SkPaint+260) 
[armeabi-v7a::fa6bef525f3435afbefe01e62dc3a290]
    #11 pc 0008eef7 /system/lib/libandroid_runtime.so 
(_ZN7android10SkiaCanvas8drawPathERK6SkPathRK7SkPaint+8) 
[armeabi-v7a::159e1a4d880205218eff8fcd5e2ab8c2]
    #12 pc 00084b79 /system/lib/libandroid_runtime.so 
[armeabi-v7a::159e1a4d880205218eff8fcd5e2ab8c2]
    #13 pc 000b0d97 /data/dalvik-cache/arm/system@framew...@boot.oat 
[armeabi::31ad7c6b6fcc4c281410db7b971b660f]
    java:
    java.lang.Thread.parkFor(Thread.java:1220)
    sun.misc.Unsafe.park(Unsafe.java:299)
    java.util.concurrent.locks.LockSupport.park(LockSupport.java:157)
    
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2016)
    java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:410)
    
java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1035)
    
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1097)
    
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
    java.lang.Thread.run(Thread.java:818)
    java pending exception:
    [Native crash above happened with a java pending exception as following]
    java.lang.StackOverflowError: stack size 8MB
    android.graphics.Canvas.drawPath(Canvas.java:1217)
    android.graphics.drawable.shapes.RoundRectShape.draw(RoundRectShape.java:79)
    android.graphics.drawable.ShapeDrawable.onDraw(ShapeDrawable.java:220)
    android.graphics.drawable.ShapeDrawable.draw(ShapeDrawable.java:247)
    android.widget.ImageView.onDraw(ImageView.java:1148)
    com.taobao.weex.ui.view.WXImageView.onDraw(WXImageView.java:203)
    android.view.View.draw(View.java:15128)
    android.view.View.draw(View.java:15036)
    android.view.ViewGroup.drawChild(ViewGroup.java:3405)
    android.view.ViewGroup.dispatchDraw(ViewGroup.java:3199)
    com.taobao.weex.ui.view.WXFrameLayout.dispatchDraw(WXFrameLayout.java:109)
    android.view.View.draw(View.java:15031)
    android.view.ViewGroup.drawChild(ViewGroup.java:3405)
    android.view.ViewGroup.dispatchDraw(ViewGroup.java:3199)
    com.taobao.weex.ui.view.WXFrameLayout.dispatchDraw(WXFrameLayout.java:109)
    android.view.View.draw(View.java:15031)
    android.view.ViewGroup.drawChild(ViewGroup.java:3405)
    android.view.ViewGroup.dispatchDraw(ViewGroup.java:3199)
    com.taobao.weex.ui.view.WXFrameLayout.dispatchDraw(WXFrameLayout.java:109)
    android.view.View.draw(View.java:15131)
    android.widget.FrameLayout.draw(FrameLayout.java:592)
    android.view.View.draw(View.java:15036)
    android.view.ViewGroup.drawChild(ViewGroup.java:3405)
    android.view.ViewGroup.dispatchDraw(ViewGroup.java:3199)
    com.taobao.weex.ui.view.WXFrameLayout.dispatchDraw(WXFrameLayout.java:109)
    android.view.View.draw(View.java:15131)
    android.widget.FrameLayout.draw(FrameLayout.java:592)
    android.view.View.draw(View.java:15036)
    android.view.ViewGroup.drawChild(ViewGroup.java:3405)
    android.support.v7.widget.RecyclerView.drawChild(RecyclerView.java:4477)
    android.view.ViewGroup.dispatchDraw(ViewGroup.java:3199)
    android.view.View.draw(View.java:15131)
    android.support.v7.widget.RecyclerView.draw(RecyclerView.java:3869)
    android.view.View.draw(View.java:15036)
    android.view.ViewGroup.drawChild(ViewGroup.java:3405)
    android.view.ViewGroup.dispatchDraw(ViewGroup.java:3199)
    android.view.View.draw(View.java:15031)
    android.view.ViewGroup.drawChild(ViewGroup.java:3405)
    android.view.ViewGroup.dispatchDraw(ViewGroup.java:3199)
    android.view.View.draw(View.java:15031)
    android.view.ViewGroup.drawChild(ViewGroup.java:3405)
    android.view.ViewGroup.dispatchDraw(ViewGroup.java:3199)
    com.taobao.weex.ui.view.WXFrameLayout.dispatchDraw(WXFrameLayout.java:109)
    android.view.View.draw(View.java:15131)
    android.widget.FrameLayout.draw(FrameLayout.java:592)
    android.view.View.draw(View.java:15036)
    android.view.ViewGroup.drawChild(ViewGroup.java:3405)
    android.view.ViewGroup.dispatchDraw(ViewGroup.java:3199)
    android.view.View.draw(View.java:15131)
    android.widget.FrameLayout.draw(FrameLayout.java:592)
    android.view.View.draw(View.java:15036)
    android.view.ViewGroup.drawChild(ViewGroup.java:3405)
    android.view.ViewGroup.dispatchDraw(ViewGroup.java:3199)
    android.view.View.draw(View.java:15131)
    android.view.View.draw(View.java:15036)
    android.view.ViewGroup.drawChild(ViewGroup.java:3405)
    android.view.ViewGroup.dispatchDraw(ViewGroup.java:3199)
    android.view.View.draw(View.java:15031)
    android.view.ViewGroup.drawChild(ViewGroup.java:3405)
    android.view.ViewGroup.dispatchDraw(ViewGroup.java:3199)
    android.view.View.draw(View.java:15031)
    android.view.ViewGroup.drawChild(ViewGroup.java:3405)
    android.view.ViewGroup.dispatchDraw(ViewGroup.java:3199)
    android.view.View.draw(View.java:15031)
    android.view.ViewGroup.drawChild(ViewGroup.java:3405)
    android.view.ViewGroup.dispatchDraw(ViewGroup.java:3199)
    android.view.View.draw(View.java:15031)
    android.view.ViewGroup.drawChild(ViewGroup.java:3405)
    android.view.ViewGroup.dispatchDraw(ViewGroup.java:3199)
    android.view.View.draw(View.java:15031)
    android.view.ViewGroup.drawChild(ViewGroup.java:3405)
    android.view.ViewGroup.dispatchDraw(ViewGroup.java:3199)
    android.view.View.draw(View.java:15031)
    android.view.ViewGroup.drawChild(ViewGroup.java:3405)
    android.view.ViewGroup.dispatchDraw(ViewGr
    [Java stack is truncated for it exceeds the max size.]
    
    By searching the source code, here we find this problem can be bypassed:
    SkDraw::drawPath(const SkPath& origSrcPath, const SkPaint& origPaint, const 
SkMatrix* prePathMatrix, bool pathIsMutable, bool drawCoverage)
    
    if (doFill) {
        if (paint->isAntiAlias()) {
            proc = SkScan::AntiFillPath;
        } else {
            proc = SkScan::FillPath;
        }
    } else {    // hairline
        if (paint->isAntiAlias()) {
            proc = SkScan::AntiHairPath;
        } else {
            proc = SkScan::HairPath;
        }
    }
    so we set antiAlias false to skip AntiFillPath and solve this crash

You can merge this pull request into a Git repository by running:

    $ git pull https://github.com/lvfen/incubator-weex master

Alternatively you can review and apply these changes as the patch at:

    https://github.com/apache/incubator-weex/pull/999.patch

To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:

    This closes #999
    
----
commit 6bcb5a46212fa42185ab94e7bbbb43d95d9a1b71
Author: lvfen <284437334@...>
Date:   2018-01-23T07:22:57Z

    fix api 21 PaintDrawable Crash

----


---

Reply via email to