mapbox / mapbox-maps-android

Interactive, thoroughly customizable maps in native Android powered by vector tiles and OpenGL.
https://www.mapbox.com/mobile-maps-sdk
Other
468 stars 131 forks source link

ANR when Android Studio debugger attached. #471

Open cafesilencio opened 3 years ago

cafesilencio commented 3 years ago

Environment

Observed behavior and steps to reproduce

I was testing the rc.3 update in order to adjust some unit tests in the Navigation SDK and I noticed that when running our example app. I get an ANR when the debugger is attached.

Expected behavior

No ANR.

Notes / preliminary analysis

I found two scenarios for reproducing. I'll link to the the test activity in the Nav. SDK below.

First Scenario: Using our "Routeline and Route Arrow Example" I started the app from Android Studio by clicking the debug button so the app starts with the debugger attached.

After the activity finished loading and the map finished I long pressed a point on the map which should draw one or more route lines. However with the debugger attached there is a long pause while the loading spinner is spinning. This pause takes far longer than usual and longer than if the debugger is not attached.

After some time the spinner is removed from the screen but the screen (map) is not moveable. The app is non-responsive.

Second Scenario: Launch the same app/activity from Android Studio without the debugger attached.

Long press a point on the map. One or more route lines appear on the map as expected.

Select an alternative route (if there is one) and notice the update in the appearance of the lines.

From Android Studio got to run -> attached debugger to android process

Go back to the app and select one of the alternative routes and try dragging the map.

At this point the app becomes non responsive.

If I detach the debugger the app usually returns to responsiveness and behaves normally.

Additional links and references

I suspect this issue may be related to: https://github.com/mapbox/mapbox-maps-android/pull/449

This is the activity I'm testing with: https://github.com/mapbox/mapbox-navigation-android/blob/main/examples/src/main/java/com/mapbox/navigation/examples/core/MapboxRouteLineAndArrowActivity.kt

Our example app. should be runnable by checking out the navigation project and running the examples module in android studio.

I should mention that @Guardiola31337 could not reproduce this.

This was in the log:

2021-07-01 14:36:40.033 1572-16227/? E/ActivityManager: ANR in com.mapbox.navigation.examples (com.mapbox.navigation.examples/.core.MapboxRouteLineAndArrowActivity) PID: 16006 Reason: Input dispatching timed out (949047e com.mapbox.navigation.examples/com.mapbox.navigation.examples.core.MapboxRouteLineAndArrowActivity (server) is not responding. Waited 5001ms for MotionEvent) Parent: com.mapbox.navigation.examples/.core.MapboxRouteLineAndArrowActivity Load: 3.64 / 4.03 / 2.2 ----- Output from /proc/pressure/memory ----- some avg10=0.00 avg60=0.01 avg300=0.05 total=1352898 full avg10=0.00 avg60=0.00 avg300=0.00 total=195874 ----- End output from /proc/pressure/memory -----

    CPU usage from 85850ms to 0ms ago (2021-07-01 14:35:10.399 to 2021-07-01 14:36:36.249):
      9.5% 662/surfaceflinger: 5.5% user + 4% kernel / faults: 170 minor 3 major
      8.8% 1572/system_server: 4.6% user + 4.2% kernel / faults: 34491 minor 15 major
      3.5% 664/android.hardware.graphics.composer@2.4-service-sm8150: 2.1% user + 1.4% kernel / faults: 23 minor
      1.9% 286/crtc_commit:125: 0% user + 1.9% kernel
      1.8% 2094/com.android.systemui: 1.3% user + 0.4% kernel / faults: 3808 minor 3 major
      1.7% 2838/com.google.android.gms.persistent: 1.2% user + 0.5% kernel / faults: 2694 minor 7 major
      1% 267/kworker/u16:6: 0% user + 1% kernel / faults: 23 minor
      1.5% 1019/android.hardware.sensors@2.0-service.multihal: 0.9% user + 0.5% kernel
      1.4% 279/kworker/u16:9: 0% user + 1.4% kernel / faults: 11 minor
      1.3% 15824/kworker/u16:7: 0% user + 1.3% kernel / faults: 2 minor
      1.3% 1334/adbd: 0.2% user + 1.1% kernel / faults: 632 minor
      1% 2506/com.android.phone: 0.6% user + 0.3% kernel / faults: 1357 minor
      1% 3489/com.google.android.gms: 0.5% user + 0.4% kernel / faults: 13864 minor 10011 major
      0.9% 2591/com.google.android.apps.nexuslauncher: 0.7% user + 0.2% kernel / faults: 3091 minor
      0.9% 4242/com.google.android.googlequicksearchbox:search: 0.7% user + 0.1% kernel / faults: 11687 minor 166 major
      0.8% 2310/cds_ol_rx_threa: 0% user + 0.8% kernel
      0.6% 12950/com.Slack: 0.5% user + 0.1% kernel / faults: 526 minor
      0.6% 1030/vendor.google.wifi_ext@1.0-service-vendor: 0.3% user + 0.2% kernel / faults: 1175 minor
      0.6% 277/kgsl_worker_thr: 0% user + 0.6% kernel
      0.5% 264/kworker/u16:4: 0% user + 0.5% kernel
      0.5% 15856/kworker/u17:1: 0% user + 0.5% kernel
      0.3% 686/kworker/u17:2: 0% user + 0.3% kernel
      0.3% 818/irq/295-fts: 0% user + 0.3% kernel
      0.3% 813/qrtr_rx: 0% user + 0.3% kernel
      0.2% 1044/audioserver: 0.1% user + 0% kernel / faults: 61 minor 2 major
      0.2% 610/logd: 0% user + 0.1% kernel / faults: 1 minor
      0.2% 983/statsd: 0.1% user + 0% kernel / faults: 141 minor
      0.2% 1000/android.hardware.audio.service: 0% user + 0.1% kernel / faults: 1 minor 2 major
      0.2% 1973/android.hardware.input.classifier@1.0-service: 0.1% user + 0% kernel / faults: 19 minor
      0.1% 8461/com.google.android.gms.unstable: 0% user + 0% kernel / faults: 1951 minor 1759 major
      0.1% 9/rcu_preempt: 0% user + 0.1% kernel
      0.1% 27/ksoftirqd/2: 0% user + 0.1% kernel
      0.1% 2976/irq/32-90b6400.: 0% user + 0.1% kernel
      0.1% 12136/com.google.android.apps.messaging: 0.1% user + 0% kernel / faults: 2782 minor 1816 major
      0.1% 287/crtc_event:125: 0% user + 0.1% kernel
      0.1% 661/android.hardware.power-service.pixel-libperfmgr: 0% user + 0.1% kernel
      0.1% 1041/msm_irqbalance: 0% user + 0.1% kernel
      0.1% 2758/com.google.android.apps.scone: 0.1% user + 0% kernel / faults: 102 minor
      0.1% 15030/com.dropbox.android: 0.1% user + 0% kernel / faults: 324 minor 7 major
      0.1% 612/servicemanager: 0% user + 0% kernel
      0.1% 12/rcuop/0: 0% user + 0.1% kernel
      0.1% 2219/com.android.networkstack.process: 0% user + 0% kernel / faults: 366 minor 25 major
      0.1% 30/rcuop/2: 0% user + 0.1% kernel
      0.1% 1010/android.hardware.health@2.1-service: 0% user + 0% kernel
      0.1% 35/ksoftirqd/3: 0% user + 0.1% kernel
      0.1% 97/system: 0% user + 0.1% kernel
      0.1% 2308/scheduler_threa: 0% user + 0.1% kernel
2021-07-01 14:36:40.033 1572-16227/? E/ActivityManager:   0.1% 14932/com.google.android.apps.docs: 0% user + 0% kernel / faults: 58 minor
      0.1% 15685/logcat: 0% user + 0% kernel
      0% 984/netd: 0% user + 0% kernel / faults: 300 minor 1 major
      0% 2977/irq/33-90cd000.: 0% user + 0% kernel
      0% 15818/kworker/2:0: 0% user + 0% kernel
      0% 19/ksoftirqd/1: 0% user + 0% kernel
      0% 396/kworker/3:2: 0% user + 0% kernel
      0% 1174/qcrild: 0% user + 0% kernel / faults: 9 minor
      0% 8/ksoftirqd/0: 0% user + 0% kernel
      0% 263/kworker/u16:3: 0% user + 0% kernel
      0% 576/ueventd: 0% user + 0% kernel
      0% 611/lmkd: 0% user + 0% kernel
      0% 782/kworker/0:2: 0% user + 0% kernel
      0% 791/kworker/1:2: 0% user + 0% kernel
      0% 1025/rlsservice: 0% user + 0% kernel / faults: 2 minor
      0% 3905/com.google.process.gservices: 0% user + 0% kernel / faults: 558 minor 17 major
      0% 13798/com.android.chrome: 0% user + 0% kernel / faults: 49 minor
      0% 985/zygote64: 0% user + 0% kernel / faults: 716 minor
      0% 3172/com.google.android.apps.tycho:persistent: 0% user + 0% kernel / faults: 34 minor
      0% 3809/com.google.android.as: 0% user + 0% kernel / faults: 350 minor 1181 major
      0% 3854/com.google.android.googlequicksearchbox:interactor: 0% user + 0% kernel / faults: 237 minor 537 major
      0% 22/rcuop/1: 0% user + 0% kernel
      0% 38/rcuop/3: 0% user + 0% kernel
      0% 321/spi1: 0% user + 0% kernel
      0% 666/vendor.qti.hardware.display.allocator-service: 0% user + 0% kernel
      0% 1237/wificond: 0% user + 0% kernel / faults: 2 minor
      0% 14072/com.robinhood.android: 0% user + 0% kernel / faults: 14 minor
      0% 13412/com.google.android.apps.youtube.music: 0% user + 0% kernel / faults: 13 minor
      0% 13602/com.google.android.youtube: 0% user + 0% kernel / faults: 14 minor
      0% 1/init: 0% user + 0% kernel
      0% 6/kworker/u16:0: 0% user + 0% kernel
      0% 62/rcuop/6: 0% user + 0% kernel
      0% 77/kworker/u16:1: 0% user + 0% kernel
      0% 622/android.hardware.keymaster@4.0-service-qti: 0% user + 0% kernel
      0% 657/android.system.suspend@1.0-service: 0% user + 0% kernel
      0% 659/android.hardware.gatekeeper@1.0-service-qti: 0% user + 0% kernel / faults: 2 major
      0% 729/wlan_logging_th: 0% user + 0% kernel
      0% 835/f2fs_discard-25: 0% user + 0% kernel
      0% 996/iptables-restore: 0% user + 0% kernel
      0% 1001/android.hardware.bluetooth@1.0-service-qti: 0% user + 0% kernel
      0% 1250/qcrild: 0% user + 0% kernel
      0% 1329/lowi-server: 0% user + 0% kernel
      0% 2072/com.android.bluetooth: 0% user + 0% kernel / faults: 46 minor 1 major
      0% 2397/com.google.android.grilservice: 0% user + 0% kernel / faults: 2 minor
      0% 2588/wpa_supplicant: 0% user + 0% kernel / faults: 2 minor
      0% 3772/com.google.android.inputmethod.latin: 0% user + 0% kernel / faults: 14 minor 2 major
      0% 5293/com.google.android.apps.tycho:ims: 0% user + 0% kernel / faults: 144 minor 94 major
      0% 2/kthreadd: 0% user + 0% kernel
      0% 15/migration/0: 0% user + 0% kernel
      0% 18/migration/1: 0% user + 0% kernel
      0% 23/rcuos/1: 0% user + 0% kernel
      0% 44/kworker/4:0: 0% user + 0% kernel
      0% 46/rcuop/4: 0% user + 0% kernel
      0% 54/rcuop/5: 0% user + 0% kernel
      0% 75/kworker/5:1: 0% user + 0% kernel
      0% 79/kworker/6:1: 0% user + 0% kernel
      0% 80/msm_watchdog: 0% user + 0% kernel
      0% 275/panel: 0% user + 0% kernel
      0% 421/kworker/7:2: 0% user + 0% kernel
      0% 613/hwservicemanager: 0% user + 0% kernel / faults: 1 major
      0% 614/vndservicemanager: 0% user + 0% kernel
      0% 616/psimon: 0% user + 0% kernel
      0% 624/citadeld: 0% user + 0% kernel
      0% 974/ipacm: 0% user + 0% kernel
      0% 997/ip6tables-restore: 0% user + 0% kernel
      0% 1012/android.hardware.memtrack@1.0-service: 0% user + 0% kernel
      0% 1020/android.hardware.thermal@2.0-service.pixel: 0% user + 0% kernel
      0% 1022/android.hardware.vibrator-service.cs40l25: 0% user + 0% kernel / faults: 36 minor
      0% 1231/keystore: 0% user + 0% kernel / faults: 11 minor
      0% 1236/storaged: 0% user + 0% kernel
      0% 1292/gatekeeperd: 0% user + 0% kernel / faults: 18 minor 39 major
      0% 2419/org.codeaurora.ims: 0% user + 0% kernel / faults: 2 minor
2021-07-01 14:36:40.033 1572-16227/? E/ActivityManager:   0% 3353/com.google.android.ims: 0% user + 0% kernel / faults: 3 minor 4 major
      0% 3940/com.android.nfc: 0% user + 0% kernel / faults: 243 minor 416 major
      0% 13267/com.google.android.apps.magazines: 0% user + 0% kernel / faults: 4 minor
      0% 13916/com.android.chrome:privileged_process0: 0% user + 0% kernel / faults: 22 minor
      0% 14676/com.google.android.apps.maps: 0% user + 0% kernel / faults: 2 minor
     +0% 15933/kworker/0:0: 0% user + 0% kernel
     +0% 15959/com.google.android.carrier: 0% user + 0% kernel
     +0% 16006/com.mapbox.navigation.examples: 0% user + 0% kernel
     +0% 16091/kworker/7:0: 0% user + 0% kernel
     +0% 16101/com.google.android.dialer: 0% user + 0% kernel
     +0% 16137/com.google.android.tts: 0% user + 0% kernel
    12% TOTAL: 8.3% user + 3.4% kernel + 0.2% iowait + 0.5% irq + 0.3% softirq
    CPU usage from 71ms to 482ms later (2021-07-01 14:36:36.320 to 2021-07-01 14:36:36.731):
      99% 16101/com.google.android.dialer: 90% user + 9% kernel
        99% 16124/BG Thread #0: 90% user + 9% kernel
      36% 1572/system_server: 13% user + 23% kernel / faults: 594 minor
        33% 16227/AnrConsumer: 13% user + 19% kernel
      44% 16006/com.mapbox.navigation.examples: 40% user + 4.4% kernel / faults: 6 minor
        40% 16217/JDWP Transport : 35% user + 4.4% kernel
      26% 1334/adbd: 0% user + 26% kernel / faults: 1 minor
        19% 1475/UsbFfs-worker: 0% user + 19% kernel
        6.6% 1334/adbd: 3.3% user + 3.3% kernel
      35% 15856/kworker/u17:1: 0% user + 35% kernel
      2.4% 30/rcuop/2: 0% user + 2.4% kernel
      2.5% 264/kworker/u16:4: 0% user + 2.5% kernel
      2.5% 279/kworker/u16:9: 0% user + 2.5% kernel
      2.8% 686/kworker/u17:2: 0% user + 2.8% kernel
      3% 1019/android.hardware.sensors@2.0-service.multihal: 3% user + 0% kernel
        3% 15843/sensors@2.0-ser: 3% user + 0% kernel
      3.1% 1025/rlsservice: 3.1% user + 0% kernel
      4.4% 15824/kworker/u16:7: 0% user + 4.4% kernel
    32% TOTAL: 19% user + 12% kernel + 1.2% irq
pengdev commented 3 years ago

This could be related to https://github.com/mapbox/mapbox-maps-android/pull/455

@cafesilencio did you use Annotation plugin in that example(or under the hood in the navigation SDK)?

cc @Chaoba

cafesilencio commented 3 years ago

I got the branch from @Guardiola31337 . He told me he only updated the maps version dependency but we didn't talk about the Annotation plugin specifically so I"m going to defer to him to answer your question. I can create a fresh branch and update the maps version only. If there's something else you want me to try please let me know.

kiryldz commented 3 years ago

This could be related to #455

@cafesilencio did you use Annotation plugin in that example(or under the hood in the navigation SDK)?

cc @Chaoba

Almost sure it's not the case because: a) we have 2 seconds timeout there, it's too small even for debugging b) afair annotations are not used c) even if annotations are used and root cause is #455 - it should be visible on annotation click only.

Guardiola31337 commented 3 years ago

He told me he only updated the maps version dependency but we didn't talk about the Annotation plugin specifically so I"m going to defer to him to answer your question.

We're not integrating the Annotation plugin at this point so that shouldn't be unrelated to OP.