n76 / DejaVu

Yet another network location backend for the UnifiedNLP/microG project
GNU General Public License v3.0
100 stars 18 forks source link

crashes WhatsApp (ArrayIndexOutOfBoundsException) #35

Open robertb-droid opened 3 years ago

robertb-droid commented 3 years ago

I'm using:

WhatsApp crashes very often when I try to use the "share live location" feature. This feature is practically unusable as almost all of the attempts crash at some point.

"send current location" works fine. Only "share live location" has this problem.

If I switch to other UnifiedNlp backends (I tried MLS and Radiocells), then the crashes don't happen.

Edit: with Radiocells (org.openbmap.unifiedNlpProvider) the crashes don't happen, but the exact same ArrayIndexOutOfBoundsException is produced. The difference being that Radiocells is able to handle this gracefully and instead of crashing WhatsApp, the message attempt fails and WhatsApp UI displays a "Retry" button. See my reply below.

Edit2: I've seen the same ArrayIndexOutOfBoundsException happen with MLS too, albeit much less frequently. And WhatsApp doesn't crash either. In fact you can't notice it by watching the WhatsApp UI, only by monitoring logcat.

logcat dump:

--------- beginning of crash 10-26 22:08:10.595 3122 3122 E AndroidRuntime: FATAL EXCEPTION: main 10-26 22:08:10.595 3122 3122 E AndroidRuntime: Process: com.whatsapp, PID: 3122 10-26 22:08:10.595 3122 3122 E AndroidRuntime: java.lang.ArrayIndexOutOfBoundsException: length=30; index=30 10-26 22:08:10.595 3122 3122 E AndroidRuntime: at a.b.c.f.f.a(Unknown Source:9) 10-26 22:08:10.595 3122 3122 E AndroidRuntime: at org.microg.gms.maps.mapbox.GoogleMapImpl.clear(Unknown Source:16) 10-26 22:08:10.595 3122 3122 E AndroidRuntime: at org.microg.gms.maps.mapbox.GoogleMapImpl.clear(Unknown Source:25) 10-26 22:08:10.595 3122 3122 E AndroidRuntime: at com.google.android.gms.maps.internal.IGoogleMapDelegate$Stub.onTransact(Unknown Source:846) 10-26 22:08:10.595 3122 3122 E AndroidRuntime: at org.microg.gms.maps.mapbox.GoogleMapImpl.onTransact(Unknown Source:0) 10-26 22:08:10.595 3122 3122 E AndroidRuntime: at android.os.Binder.transact(Binder.java:667) 10-26 22:08:10.595 3122 3122 E AndroidRuntime: at X.1EX.A02(:263077) 10-26 22:08:10.595 3122 3122 E AndroidRuntime: at X.1sP.clear(:330635) 10-26 22:08:10.595 3122 3122 E AndroidRuntime: at X.2aA.A03(:407683) 10-26 22:08:10.595 3122 3122 E AndroidRuntime: at X.2aA.A0S(:408227) 10-26 22:08:10.595 3122 3122 E AndroidRuntime: at X.0Yb.onAnimationStart(:177870) 10-26 22:08:10.595 3122 3122 E AndroidRuntime: at android.view.animation.Animation$1.run(Animation.java:373) 10-26 22:08:10.595 3122 3122 E AndroidRuntime: at android.os.Handler.handleCallback(Handler.java:873) 10-26 22:08:10.595 3122 3122 E AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:99) 10-26 22:08:10.595 3122 3122 E AndroidRuntime: at android.os.Looper.loop(Looper.java:193) 10-26 22:08:10.595 3122 3122 E AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:6718) 10-26 22:08:10.595 3122 3122 E AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method) 10-26 22:08:10.595 3122 3122 E AndroidRuntime: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:491) 10-26 22:08:10.595 3122 3122 E AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) 10-26 22:08:10.612 1211 2041 W ActivityManager: Force finishing activity com.whatsapp/.location.LocationPicker2 10-26 22:08:10.617 3122 3122 I Process : Sending signal. PID: 3122 SIG: 9 10-26 22:08:10.675 1211 1561 W InputDispatcher: channel 'c27227b com.whatsapp/com.whatsapp.location.LocationPicker2 (server)' ~ Consumer closed input channel or an error occurred. events=0x9 10-26 22:08:10.675 1211 1561 E InputDispatcher: channel 'c27227b com.whatsapp/com.whatsapp.location.LocationPicker2 (server)' ~ Channel is unrecoverably broken and will be disposed! 10-26 22:08:10.676 1211 1561 W InputDispatcher: channel 'f5f25e4 com.whatsapp/com.whatsapp.Conversation (server)' ~ Consumer closed input channel or an error occurred. events=0x9 10-26 22:08:10.676 1211 1561 E InputDispatcher: channel 'f5f25e4 com.whatsapp/com.whatsapp.Conversation (server)' ~ Channel is unrecoverably broken and will be disposed!

robertb-droid commented 3 years ago

With Radiocells (org.openbmap.unifiedNlpProvider) the crashes don't happen, but the exact same ArrayIndexOutOfBoundsException is produced. The difference being that Radiocells is able to handle this gracefully and instead of crashing WhatsApp, the message attempt fails and WhatsApp UI displays a "Retry" button:

--------- beginning of crash 10-26 22:08:10.595 3122 3122 E AndroidRuntime: FATAL EXCEPTION: main 10-26 22:08:10.595 3122 3122 E AndroidRuntime: Process: com.whatsapp, PID: 3122 10-26 22:08:10.595 3122 3122 E AndroidRuntime: java.lang.ArrayIndexOutOfBoundsException: length=30; index=30 10-26 22:08:10.595 3122 3122 E AndroidRuntime: at a.b.c.f.f.a(Unknown Source:9) 10-26 22:08:10.595 3122 3122 E AndroidRuntime: at org.microg.gms.maps.mapbox.GoogleMapImpl.clear(Unknown Source:16) 10-26 22:08:10.595 3122 3122 E AndroidRuntime: at org.microg.gms.maps.mapbox.GoogleMapImpl.clear(Unknown Source:25) 10-26 22:08:10.595 3122 3122 E AndroidRuntime: at com.google.android.gms.maps.internal.IGoogleMapDelegate$Stub.onTransact(Unknown Source:846) 10-26 22:08:10.595 3122 3122 E AndroidRuntime: at org.microg.gms.maps.mapbox.GoogleMapImpl.onTransact(Unknown Source:0) 10-26 22:08:10.595 3122 3122 E AndroidRuntime: at android.os.Binder.transact(Binder.java:667) 10-26 22:08:10.595 3122 3122 E AndroidRuntime: at X.1EX.A02(:263077) 10-26 22:08:10.595 3122 3122 E AndroidRuntime: at X.1sP.clear(:330635) 10-26 22:08:10.595 3122 3122 E AndroidRuntime: at X.2aA.A03(:407683) 10-26 22:08:10.595 3122 3122 E AndroidRuntime: at X.2aA.A0S(:408227) 10-26 22:08:10.595 3122 3122 E AndroidRuntime: at X.0Yb.onAnimationStart(:177870) 10-26 22:08:10.595 3122 3122 E AndroidRuntime: at android.view.animation.Animation$1.run(Animation.java:373) 10-26 22:08:10.595 3122 3122 E AndroidRuntime: at android.os.Handler.handleCallback(Handler.java:873) 10-26 22:08:10.595 3122 3122 E AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:99) 10-26 22:08:10.595 3122 3122 E AndroidRuntime: at android.os.Looper.loop(Looper.java:193) 10-26 22:08:10.595 3122 3122 E AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:6718) 10-26 22:08:10.595 3122 3122 E AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method) 10-26 22:08:10.595 3122 3122 E AndroidRuntime: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:491) 10-26 22:08:10.595 3122 3122 E AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) 10-26 22:10:44.770 4798 4798 E AndroidRuntime: FATAL EXCEPTION: main 10-26 22:10:44.770 4798 4798 E AndroidRuntime: Process: com.whatsapp, PID: 4798 10-26 22:10:44.770 4798 4798 E AndroidRuntime: java.lang.ArrayIndexOutOfBoundsException: length=30; index=30 10-26 22:10:44.770 4798 4798 E AndroidRuntime: at a.b.c.f.f.a(Unknown Source:9) 10-26 22:10:44.770 4798 4798 E AndroidRuntime: at org.microg.gms.maps.mapbox.GoogleMapImpl.clear(Unknown Source:16) 10-26 22:10:44.770 4798 4798 E AndroidRuntime: at org.microg.gms.maps.mapbox.GoogleMapImpl.clear(Unknown Source:25) 10-26 22:10:44.770 4798 4798 E AndroidRuntime: at com.google.android.gms.maps.internal.IGoogleMapDelegate$Stub.onTransact(Unknown Source:846) 10-26 22:10:44.770 4798 4798 E AndroidRuntime: at org.microg.gms.maps.mapbox.GoogleMapImpl.onTransact(Unknown Source:0) 10-26 22:10:44.770 4798 4798 E AndroidRuntime: at android.os.Binder.transact(Binder.java:667) 10-26 22:10:44.770 4798 4798 E AndroidRuntime: at X.1EX.A02(:263077) 10-26 22:10:44.770 4798 4798 E AndroidRuntime: at X.1sP.clear(:330635) 10-26 22:10:44.770 4798 4798 E AndroidRuntime: at X.2aA.A03(:407683) 10-26 22:10:44.770 4798 4798 E AndroidRuntime: at X.2aA.A0S(:408227) 10-26 22:10:44.770 4798 4798 E AndroidRuntime: at X.0Yb.onAnimationStart(:177870) 10-26 22:10:44.770 4798 4798 E AndroidRuntime: at android.view.animation.Animation$1.run(Animation.java:373) 10-26 22:10:44.770 4798 4798 E AndroidRuntime: at android.os.Handler.handleCallback(Handler.java:873) 10-26 22:10:44.770 4798 4798 E AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:99) 10-26 22:10:44.770 4798 4798 E AndroidRuntime: at android.os.Looper.loop(Looper.java:193) 10-26 22:10:44.770 4798 4798 E AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:6718) 10-26 22:10:44.770 4798 4798 E AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method) 10-26 22:10:44.770 4798 4798 E AndroidRuntime: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:491) 10-26 22:10:44.770 4798 4798 E AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) 10-26 22:10:53.415 5045 5045 E AndroidRuntime: FATAL EXCEPTION: main 10-26 22:10:53.415 5045 5045 E AndroidRuntime: Process: com.whatsapp, PID: 5045 10-26 22:10:53.415 5045 5045 E AndroidRuntime: java.lang.ArrayIndexOutOfBoundsException: length=30; index=30 10-26 22:10:53.415 5045 5045 E AndroidRuntime: at a.b.c.f.f.a(Unknown Source:9) 10-26 22:10:53.415 5045 5045 E AndroidRuntime: at org.microg.gms.maps.mapbox.GoogleMapImpl.clear(Unknown Source:16) 10-26 22:10:53.415 5045 5045 E AndroidRuntime: at org.microg.gms.maps.mapbox.GoogleMapImpl.clear(Unknown Source:25) 10-26 22:10:53.415 5045 5045 E AndroidRuntime: at com.google.android.gms.maps.internal.IGoogleMapDelegate$Stub.onTransact(Unknown Source:846) 10-26 22:10:53.415 5045 5045 E AndroidRuntime: at org.microg.gms.maps.mapbox.GoogleMapImpl.onTransact(Unknown Source:0) 10-26 22:10:53.415 5045 5045 E AndroidRuntime: at android.os.Binder.transact(Binder.java:667) 10-26 22:10:53.415 5045 5045 E AndroidRuntime: at X.1EX.A02(:263077) 10-26 22:10:53.415 5045 5045 E AndroidRuntime: at X.1sP.clear(:330635) 10-26 22:10:53.415 5045 5045 E AndroidRuntime: at X.2aA.A03(:407683) 10-26 22:10:53.415 5045 5045 E AndroidRuntime: at X.2aA.A0S(:408227) 10-26 22:10:53.415 5045 5045 E AndroidRuntime: at X.0Yb.onAnimationStart(:177870) 10-26 22:10:53.415 5045 5045 E AndroidRuntime: at android.view.animation.Animation$1.run(Animation.java:373) 10-26 22:10:53.415 5045 5045 E AndroidRuntime: at android.os.Handler.handleCallback(Handler.java:873) 10-26 22:10:53.415 5045 5045 E AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:99) 10-26 22:10:53.415 5045 5045 E AndroidRuntime: at android.os.Looper.loop(Looper.java:193) 10-26 22:10:53.415 5045 5045 E AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:6718) 10-26 22:10:53.415 5045 5045 E AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method) 10-26 22:10:53.415 5045 5045 E AndroidRuntime: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:491) 10-26 22:10:53.415 5045 5045 E AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) 10-26 22:31:17.353 9184 9262 E AndroidRuntime: FATAL EXCEPTION: AsyncTask #1 10-26 22:31:17.353 9184 9262 E AndroidRuntime: Process: org.openbmap.unifiedNlp, PID: 9184 10-26 22:31:17.353 9184 9262 E AndroidRuntime: java.lang.RuntimeException: An error occurred while executing doInBackground() 10-26 22:31:17.353 9184 9262 E AndroidRuntime: at android.os.AsyncTask$3.done(AsyncTask.java:354) 10-26 22:31:17.353 9184 9262 E AndroidRuntime: at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:383) 10-26 22:31:17.353 9184 9262 E AndroidRuntime: at java.util.concurrent.FutureTask.setException(FutureTask.java:252) 10-26 22:31:17.353 9184 9262 E AndroidRuntime: at java.util.concurrent.FutureTask.run(FutureTask.java:271) 10-26 22:31:17.353 9184 9262 E AndroidRuntime: at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:245) 10-26 22:31:17.353 9184 9262 E AndroidRuntime: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167) 10-26 22:31:17.353 9184 9262 E AndroidRuntime: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641) 10-26 22:31:17.353 9184 9262 E AndroidRuntime: at java.lang.Thread.run(Thread.java:764) 10-26 22:31:17.353 9184 9262 E AndroidRuntime: Caused by: java.lang.IllegalArgumentException: No catalog database was specified 10-26 22:31:17.353 9184 9262 E AndroidRuntime: at org.openbmap.unifiedNlp.geocoders.OfflineProvider$1.doInBackground(OfflineProvider.java:130) 10-26 22:31:17.353 9184 9262 E AndroidRuntime: at org.openbmap.unifiedNlp.geocoders.OfflineProvider$1.doInBackground(OfflineProvider.java:106) 10-26 22:31:17.353 9184 9262 E AndroidRuntime: at android.os.AsyncTask$2.call(AsyncTask.java:333) 10-26 22:31:17.353 9184 9262 E AndroidRuntime: at java.util.concurrent.FutureTask.run(FutureTask.java:266) 10-26 22:31:17.353 9184 9262 E AndroidRuntime: ... 4 more