CartoDB / mobile-sdk

CARTO Mobile SDK core project
https://carto.com/docs/carto-engine/mobile-sdk/
BSD 3-Clause "New" or "Revised" License
179 stars 65 forks source link

signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x8 , when user polygon dynamic add points quickly #545

Closed baneyue closed 2 months ago

baneyue commented 2 months ago

When using polygons and dynamically adding points quickly, the MTK CPU Android 12 tablet shows NE

The usage of layers is as follows and add points frequency of 10ms once ` // init layers projection = new EPSG3857(); dynamicTrackSource = new LocalVectorDataSource(projection, LocalSpatialIndexType.LOCAL_SPATIAL_INDEX_TYPE_KDTREE); mSprayLayer = new VectorLayer(dynamicTrackSource); mapView.getLayers().add(mSprayLayer); mSprayLayer.setVisibleZoomRange(new MapRange(10, 24)); dynamicTrackSource.setGeometrySimplifier(null);

   // add points
   val mapPosVector = MapPosVector()
   if (polygon == null) {
            if (polygonPointList.isEmpty()) {
                mapPosVector.add(leftPoint)
                mapPosVector.add(rightPoint)
                polygonPointList.add(leftPoint)
                polygonPointList.add(rightPoint)
            } else {
                val half = polygonPointList.size / 2
                polygonPointList.add(half, leftPoint)
                polygonPointList.add(half + 1, rightPoint)
                polygonPointList.forEach { mapPosVector.add(it) }
            }
            val polygon = Polygon(mapPosVector, polygonStyle)
            dynamicTrackSource?.add(polygon)
            this.polygon = polygon
        } else {
            val half = polygonPointList.size / 2
            polygonPointList.add(half, leftPoint)
            polygonPointList.add(half + 1, rightPoint)
            polygonPointList.forEach { mapPosVector.add(it) }
            polygon?.poses = mapPosVector // **the crash line**
       }

` Is it Command reordering exception in Android native ? The usual solution to this problem is to use memory barriers or atomic operations to prevent instruction rearrangement. In C or C++code, you can use atomic variables from the atomic library

The crash log is as follows `


Tombstone maker: 'xCrash 3.0.0' Crash type: 'native' Start time: '2024-04-28T00:24:22.487+0500' Crash time: '2024-04-28T01:04:11.979+0500' App ID: 'com.allynav.precisionag' App version: '1.4.76.304241' Rooted: 'Yes' API level: '31' OS version: '12' Kernel version: 'Linux version 4.19.191 #2 SMP PREEMPT Tue Dec 12 19:58:25 CST 2023 (armv8l)' ABI list: 'arm64-v8a,armeabi-v7a,armeabi' Manufacturer: 'LIANSHI' Brand: 'LIANSHI' Model: 'T101Pro' Build fingerprint: 'LIANSHI/T101Pro/T101Pro:12/SP1A.210812.016/23:user/test-keys' ABI: 'arm' pid: 2225, tid: 2806, name: p1app1-MapRefre >>> com.allynav.precisionag <<< signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x8 r0 00000008 r1 f1171d44 r2 d736079c r3 d736079c r4 f1155244 r5 f1171d44 r6 60b00e50 r7 d7360260 r8 d736025c r9 00000002 r10 d736021c r11 b6128830 ip eabd5e80 sp b6128770 lr b7b94131 pc b7b9418e

backtrace:

00 pc 0041418e /data/app/~~H12pBePRlKkb70RJdAuOsg==/com.allynav.precisionag-nP-ZChQFynEhi-NyZU40rw==/lib/arm/liblsmap_sdk.so

#01 pc 001dd07f  /data/app/~~H12pBePRlKkb70RJdAuOsg==/com.allynav.precisionag-nP-ZChQFynEhi-NyZU40rw==/lib/arm/liblsmap_sdk.so
#02 pc 001aa3b9  /data/app/~~H12pBePRlKkb70RJdAuOsg==/com.allynav.precisionag-nP-ZChQFynEhi-NyZU40rw==/lib/arm/liblsmap_sdk.so
#03 pc 001a8d1d  /data/app/~~H12pBePRlKkb70RJdAuOsg==/com.allynav.precisionag-nP-ZChQFynEhi-NyZU40rw==/lib/arm/liblsmap_sdk.so
#04 pc 001a5327  /data/app/~~H12pBePRlKkb70RJdAuOsg==/com.allynav.precisionag-nP-ZChQFynEhi-NyZU40rw==/lib/arm/liblsmap_sdk.so
#05 pc 001aa90f  /data/app/~~H12pBePRlKkb70RJdAuOsg==/com.allynav.precisionag-nP-ZChQFynEhi-NyZU40rw==/lib/arm/liblsmap_sdk.so
#06 pc 0017b399  /data/app/~~H12pBePRlKkb70RJdAuOsg==/com.allynav.precisionag-nP-ZChQFynEhi-NyZU40rw==/lib/arm/liblsmap_sdk.so
#07 pc 001749db  /data/app/~~H12pBePRlKkb70RJdAuOsg==/com.allynav.precisionag-nP-ZChQFynEhi-NyZU40rw==/lib/arm/liblsmap_sdk.so
#08 pc 00204187  /data/app/~~H12pBePRlKkb70RJdAuOsg==/com.allynav.precisionag-nP-ZChQFynEhi-NyZU40rw==/lib/arm/liblsmap_sdk.so
#09 pc 00259df7  /data/app/~~H12pBePRlKkb70RJdAuOsg==/com.allynav.precisionag-nP-ZChQFynEhi-NyZU40rw==/lib/arm/liblsmap_sdk.so (Java_vectorelements_PolygonModuleJNI_Polygon_1setPoses+210)
#10 pc 0000777b  /memfd:jit-cache (deleted)

build id: /data/app/~~H12pBePRlKkb70RJdAuOsg==/com.allynav.precisionag-nP-ZChQFynEhi-NyZU40rw==/lib/arm/liblsmap_sdk.so (BuildId: 7ffca665aed17843. FileSize: 4915488. LastModified: 1981-01-01T01:01:02.000+0500. MD5: b0f1be8218936628650e79e39b318ddd) /memfd:jit-cache (deleted) (BuildId: unknown. OPEN error: errno = 2, errmsg = No such file or directory)

stack: b6128730 f1257e70 [anon:scudo:primary] b6128734 f1257e70 [anon:scudo:primary] b6128738 00000000 b612873c f11e0010 [anon:scudo:primary] b6128740 f11dff90 [anon:scudo:primary] b6128744 f11e0034 [anon:scudo:primary] b6128748 dba0d1e0 [anon:scudo:primary] b612874c f01f608f /apex/com.android.runtime/lib/bionic/libc.so (scudo_malloc+22) b6128750 00000000 b6128754 f1257e70 [anon:scudo:primary] b6128758 00000ab4 b612875c f01f198f /apex/com.android.runtime/lib/bionic/libc.so (malloc+22) b6128760 0fffffff b6128764 60b00e50 b6128768 00000011 b612876c b7b94131 /data/app/~~H12pBePRlKkb70RJdAuOsg==/com.allynav.precisionag-nP-ZChQFynEhi-NyZU40rw==/lib/arm/liblsmap_sdk.so

00 b6128770 eb8e8ae0 [anon:scudo:primary]

     b6128774  f1257e70  [anon:scudo:primary]
     b6128778  00000000
     b612877c  40210000
     b6128780  00000000
     b6128784  00000000
     b6128788  00000000
     b612878c  00000000
     b6128790  eb8cc020  [anon:scudo:primary]
     b6128794  000002ac
     b6128798  f117785c  [anon:scudo:primary]
     b612879c  dba0d1e0  [anon:scudo:primary]
     b61287a0  f0258138  [anon:.bss]
     b61287a4  b6128c60  [anon:stack_and_tls:2806]
     b61287a8  f11e005c  [anon:scudo:primary]
     b61287ac  b78f581b  /data/app/~~H12pBePRlKkb70RJdAuOsg==/com.allynav.precisionag-nP-ZChQFynEhi-NyZU40rw==/lib/arm/liblsmap_sdk.so
     ........  ........
#01  b6128a30  000002ac
     b6128a34  b78f564d  /data/app/~~H12pBePRlKkb70RJdAuOsg==/com.allynav.precisionag-nP-ZChQFynEhi-NyZU40rw==/lib/arm/liblsmap_sdk.so
     b6128a38  dba3b9b0  [anon:scudo:primary]
     b6128a3c  f108e4f4  [anon:scudo:primary]
     b6128a40  f108e4e4  [anon:scudo:primary]
     b6128a44  b7b9c980  /data/app/~~H12pBePRlKkb70RJdAuOsg==/com.allynav.precisionag-nP-ZChQFynEhi-NyZU40rw==/lib/arm/liblsmap_sdk.so
     b6128a48  dba3b9b4  [anon:scudo:primary]
     b6128a4c  f0258138  [anon:.bss]
     b6128a50  d45fcdfd  /system/framework/framework-res.apk
     b6128a54  f108e53c  [anon:scudo:primary]
     b6128a58  f108e530  [anon:scudo:primary]
     b6128a5c  f108e548  [anon:scudo:primary]
     b6128a60  f132099c  [anon:scudo:primary]
     b6128a64  f11dff90  [anon:scudo:primary]
     b6128a68  f108e500  [anon:scudo:primary]
     b6128a6c  00000000
     ........  ........
#02  b6128b38  b6128bb4  [anon:stack_and_tls:2806]
     b6128b3c  b78c4843  /data/app/~~H12pBePRlKkb70RJdAuOsg==/com.allynav.precisionag-nP-ZChQFynEhi-NyZU40rw==/lib/arm/liblsmap_sdk.so
     b6128b40  f132099c  [anon:scudo:primary]
     b6128b44  dc179bb0  [anon:scudo:primary]
     b6128b48  f12dd5f0  [anon:scudo:primary]
     b6128b4c  b7928d21  /data/app/~~H12pBePRlKkb70RJdAuOsg==/com.allynav.precisionag-nP-ZChQFynEhi-NyZU40rw==/lib/arm/liblsmap_sdk.so
#03  b6128b50  b6128bb4  [anon:stack_and_tls:2806]
     b6128b54  41561a30
     b6128b58  b949b77c  /system/fonts/NotoSansCJK-Regular.ttc
     b6128b5c  40bf44de
     b6128b60  b4eaf9b2
     b6128b64  f1246e50  [anon:scudo:primary]
     b6128b68  f0258138  [anon:.bss]
     b6128b6c  00000000
     b6128b70  0aa164f3
     b6128b74  d45fcdfd  /system/framework/framework-res.apk
     b6128b78  00000000
     b6128b7c  40210000
     b6128b80  00000000
     b6128b84  f132099c  [anon:scudo:primary]
     b6128b88  f1320990  [anon:scudo:primary]
     b6128b8c  eb8ed9a0  [anon:scudo:primary]
     ........  ........
#04  b6128bf8  00000000
     b6128bfc  f115b2e0  [anon:scudo:primary]
     b6128c00  f115b2d0  [anon:scudo:primary]
     b6128c04  d45fcdfd  /system/framework/framework-res.apk
     b6128c08  00000000
     b6128c0c  40210000
     b6128c10  00000000
     b6128c14  3fe00000
     b6128c18  dbea9ab0  [anon:scudo:primary]
     b6128c1c  b6128cb4  [anon:stack_and_tls:2806]
     b6128c20  bafe5c3c  [anon:scudo:primary]
     b6128c24  dbea9978  [anon:scudo:primary]
     b6128c28  f10d9ab0  [anon:scudo:primary]
     b6128c2c  eb8e2e10  [anon:scudo:primary]
     b6128c30  13381088  [anon:dalvik-main space (region space)]
     b6128c34  b792a911  /data/app/~~H12pBePRlKkb70RJdAuOsg==/com.allynav.precisionag-nP-ZChQFynEhi-NyZU40rw==/lib/arm/liblsmap_sdk.so
#05  b6128c38  bafe5300  [anon:scudo:primary]
     b6128c3c  b6128cb4  [anon:stack_and_tls:2806]
     b6128c40  dbea9970  [anon:scudo:primary]
     b6128c44  b78fb39b  /data/app/~~H12pBePRlKkb70RJdAuOsg==/com.allynav.precisionag-nP-ZChQFynEhi-NyZU40rw==/lib/arm/liblsmap_sdk.so
#06  b6128c48  f10d9a70  [anon:scudo:primary]
     b6128c4c  f0258138  [anon:.bss]
     b6128c50  b6128cb4  [anon:stack_and_tls:2806]
     b6128c54  f10d9a70  [anon:scudo:primary]
     b6128c58  bafe8a2c  [anon:scudo:primary

     bcabc12c  eb39114f  /apex/com.android.art/lib/libart.so (_ZN3art6Thread14CreateCallbackEPv+1002)
#15  bcabc130  00000000
     bcabc134  00005000
     bcabc138  00000022
     bcabc13c  00000000
     bcabc140  ffffffff
     bcabc144  00000000
     bcabc148  eb00033a  /apex/com.android.art/lib/libart.so
     bcabc14c  eb00eb31  /apex/com.android.art/lib/libart.so
     bcabc150  00000011
     bcabc154  0000000c
     bcabc158  b3da5ed0  [anon:scudo:primary]
     bcabc15c  00430000
     bcabc160  b645ce10  [anon:scudo:primary]
     bcabc164  eb973d30  [anon:scudo:primary]
     bcabc168  eb880c40  [anon:scudo:primary]
     bcabc16c  b645ce10  [anon:scudo:primary]
     ........  ........
#16  bcabc1a8  f024849f  /apex/com.android.runtime/lib/bionic/libc.so (_ZL15__pthread_startPv)
     bcabc1ac  f0201747  /apex/com.android.runtime/lib/bionic/libc.so (__start_thread+32)
#17  bcabc1b0  bcabc1c8  [anon:stack_and_tls:3194]
     bcabc1b4  f024849f  /apex/com.android.runtime/lib/bionic/libc.so (_ZL15__pthread_startPv)
     bcabc1b8  bcabc1c0  [anon:stack_and_tls:3194]
     bcabc1bc  00000000
     bcabc1c0  bc6f31c0  [anon:stack_and_tls:3168]
     bcabc1c4  00000000
     bcabc1c8  00000c7a
     bcabc1cc  000008b1
     bcabc1d0  00000001
     bcabc1d4  bc9b7000
     bcabc1d8  001051c0
     bcabc1dc  00001000
     bcabc1e0  00000000
     bcabc1e4  00000000
     bcabc1e8  00000003
     bcabc1ec  00000000

total threads (exclude the crashed thread): 76 dumped threads: 76 +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++

java stacktrace: at vectorelements.PolygonModuleJNI.Polygon_setPoses(Native method) at vectorelements.Polygon.setPoses(Polygon.java:143) at com.allynav.precisionag.Mapvis.MapTrackController.addPoint(MapTrackController.kt:468) at com.allynav.precisionag.Mapvis.MapRefresh.run(MapRefresh.java:440) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641) at java.lang.Thread.run(Thread.java:920)

memory info: Process Summary (From: android.os.Debug.MemoryInfo) Pss(KB)

       Java Heap:    14664
     Native Heap:    54772
            Code:    33972
           Stack:     1776
        Graphics:    34712
   Private Other:    49824
          System:    28722
           TOTAL:   218442           TOTAL SWAP:     1832

foreground: yes

`

crash.txt