Your achievements

Level 1

0% to

Level 2

Tip /
Sign in

Sign in to Community

to gain points, level up, and earn exciting badges like the new
Bedrock Mission!

Learn more

View all

Sign in to view all badges

SOLVED

Crashes from Android SDK, no source code available

JakeLee
Level 1
Level 1

Hey,

 

I'm currently using Neolane on a large Android app (millions of users), and have noticed crashes caused by the Neolane library in our crash reporting system (Firebase Crashlytics). As I couldn't find the source code, I'm unable to find any further information about these crashes. 

 

It's worth noting these crashes are rare (30-40 instances across 300-400k uses in last couple of days), but I'd still like to resolve them. They seem to be related to receiving an error when registering a user, then the library being unable to handle the error (.registerDevice, then out of bounds in .initErrorMap).

 

Fatal Exception: java.lang.ArrayIndexOutOfBoundsException: length=11; index=11
       at android.util.ContainerHelpers.binarySearch(ContainerHelpers.java:28)
       at android.util.SparseArray.put(SparseArray.java:224)
       at com.neolane.android.v1.NeolaneExceptionDesc.initErrorMap(NeolaneException.java:171)
       at com.neolane.android.v1.NeolaneExceptionDesc.getErrorDesc(NeolaneException.java:155)
       at com.neolane.android.v1.NeolaneExceptionDesc.getErrorDesc(NeolaneException.java:160)
       at com.neolane.android.v1.NeolaneException.<init>(NeolaneException.java:88)
       at com.neolane.android.v1.Neolane.httpPostSendData(Neolane.java:224)
       at com.neolane.android.v1.Neolane.registerDevice(Neolane.java:301)
       at com.neolane.android.v1.NeolaneAsyncRunner$1.run(NeolaneAsyncRunner.java:45)

 

 

The library is included in a submodule's build.gradle as: 

 

implementation(name: 'neolane_sdk-1.0.26-release', ext: 'aar')

 

 

Thank you for any help / clues, let me know if any further information would be helpful.

Jake

1 Accepted Solution
Jonathon_wodnicki
Correct answer by
Community Advisor
Community Advisor

Hi,

 

This is the first I'm seeing user registration being done via sdk. Usually it's etl with the rest of recipient demographic data.

Are they connection errors? Is it possible to catch the exception from the library without it crashing?

 

Thanks,

-Jon

View solution in original post

2 Replies
Jonathon_wodnicki
Correct answer by
Community Advisor
Community Advisor

Hi,

 

This is the first I'm seeing user registration being done via sdk. Usually it's etl with the rest of recipient demographic data.

Are they connection errors? Is it possible to catch the exception from the library without it crashing?

 

Thanks,

-Jon

View solution in original post

JakeLee
Level 1
Level 1

Hey Jon,

 

The registration is done using:

NeolaneAsyncRunner(Neolane.getInstance()).registerDevice(token, id, optedIn, context, NeolaneTrackerCallback())

which seems pretty standard? 

 

I'm afraid I have no more information than the stack trace provides. Since none of our code is present in the stacktrace, and I believe the registration is done on another thread, I don't believe we can catch it. 

 

The number of crashes spiked massively in the last day, so it may be an intermittent issue like connectivity. Regardless, the crash seems to be in Neolane trying to handle the error.

 

Thanks,

Jake