Expand my Community achievements bar.

SOLVED

Stackoverflow crash in Android SDK 4.5

Avatar

Level 1

Hi, we're using the Adobe Mobile Library 4.5 for Android. 
There's a crash appearing repeatedly in our crash report that seems to occur within your library. 
I posted the stacktrace here: http://pastebin.com/hmERJDMC

According to our crash report tool the crash only happens on Android 4.1.2. 
Perhaps you can look into this. 

Best regards, Florian Weigl

Topics

Topics help categorize Community content and increase your ability to discover relevant content.

1 Accepted Solution

Avatar

Correct answer by
Employee

Hey Florian,

 

I took a look at the stack trace you posted, and it looks like there is a recursive lock in sqlite.  You'll notice that the following 5 lines in the stack trace are repeating:

at android.database.DefaultDatabaseErrorHandler.onCorruption(DefaultDatabaseErrorHandler.java:81) 315 at android.database.sqlite.SQLiteDatabase.onCorruption(SQLiteDatabase.java:338) 316 at android.database.sqlite.SQLiteProgram.onCorruption(SQLiteProgram.java:111) 317 at android.database.sqlite.SQLiteStatement.simpleQueryForString(SQLiteStatement.java:131) 318 at android.database.sqlite.SQLiteDatabase.isDatabaseIntegrityOk(SQLiteDatabase.java:2141)

Our SDK is set up to recover from database corruption if it is encountered, but in this case the recursive lock never returns control back to our code.  Ultimately, we never had a chance to recover.

 

We were unable to reproduce the issue here.  The most likely reason for this issue is that there is a single device with a bad disk, and it happens to be on Android 4.1.2.  

 

Hope this helps.

 

Steve Benedick

Software Engineer - Mobile

Adobe Marketing Cloud

View solution in original post

3 Replies

Avatar

Correct answer by
Employee

Hey Florian,

 

I took a look at the stack trace you posted, and it looks like there is a recursive lock in sqlite.  You'll notice that the following 5 lines in the stack trace are repeating:

at android.database.DefaultDatabaseErrorHandler.onCorruption(DefaultDatabaseErrorHandler.java:81) 315 at android.database.sqlite.SQLiteDatabase.onCorruption(SQLiteDatabase.java:338) 316 at android.database.sqlite.SQLiteProgram.onCorruption(SQLiteProgram.java:111) 317 at android.database.sqlite.SQLiteStatement.simpleQueryForString(SQLiteStatement.java:131) 318 at android.database.sqlite.SQLiteDatabase.isDatabaseIntegrityOk(SQLiteDatabase.java:2141)

Our SDK is set up to recover from database corruption if it is encountered, but in this case the recursive lock never returns control back to our code.  Ultimately, we never had a chance to recover.

 

We were unable to reproduce the issue here.  The most likely reason for this issue is that there is a single device with a bad disk, and it happens to be on Android 4.1.2.  

 

Hope this helps.

 

Steve Benedick

Software Engineer - Mobile

Adobe Marketing Cloud

Avatar

Level 1

Hi Steve, 

thanks for your reply. The crash affects several hundreds of different users of our app, so a single bad device seems unlikely. Out app also uses SQlite and there seems no problem with it. 
Perhaps you can further look into this? This crash is the second most common one for our app now. Greets!

Avatar

Employee

Hey Florian,

 

We spent a little more time looking into this issue today, and unfortunately there is nothing in the information that we have that can give us a good lead as to what's happening (whether in our SDK or not).  We know there is an SQLiteStatement.execute() method called from our SDK, and that it is properly handled in try/catch blocks.  We can't say for sure if control is ever passed back to the SDK based off the stack trace.  What we need at this point is more information.  If you have a way to reproduce it, that would work wonders.  Please open a ticket with Client Care, give them as much information as possible, and have them assign the issue to me.  Thanks.

 

Steve Benedick