0

If you analize the following code, You will see that there 4 function being invoked many times (pushNextEntityUpdatedRows, pushNextUpdatedRow, pushNextEntityCreatedRows, pushNextCreatedRow), thats not a BUG, Thats how I desgined my code to work. What you should know is that I have a class (DataAccess) that extends SQLiteOpenHelper and I only instantiate that class once. Everytime the functions pushNextEntityUpdatedRows and pushNextEntityCreatedRows are invoked, a rawQuery is executed in my DataAccess class instance. I never close the connection, I only close the Cursor objects instances. I dont know What is causing this StackOverflowError. I also dont know why It always happens after 145 invocations. How to I solve it? Thanks is advance.

The stack trace is telling me this:

    java.lang.StackOverflowError
    at java.util.WeakHashMap.poll(WeakHashMap.java:550)
    at java.util.WeakHashMap.put(WeakHashMap.java:589)
    at android.database.sqlite.SQLiteConnectionPool.finishAcquireConnectionLocked(SQLiteConnectionPool.java:980)
    at android.database.sqlite.SQLiteConnectionPool.tryAcquirePrimaryConnectionLocked(SQLiteConnectionPool.java:916)
    at android.database.sqlite.SQLiteConnectionPool.waitForConnection(SQLiteConnectionPool.java:682)
    at android.database.sqlite.SQLiteConnectionPool.acquireConnection(SQLiteConnectionPool.java:400)
    at android.database.sqlite.SQLiteSession.acquireConnection(SQLiteSession.java:905)
    at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:586)
    at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58)
    at android.database.sqlite.SQLiteQuery.<init>(SQLiteQuery.java:37)
    at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:44)
    at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1436)
    at android.database.sqlite.SQLiteDatabase.rawQuery(SQLiteDatabase.java:1375)
    at mz.co.cloud.dumbo.db.LSH.getAllNewCreatedRows(LSH.java:2072)
    at mz.co.cloud.dumbo.syncmechanism.SyncDataAccessImplementation.getAllNewCreatedRows(SyncDataAccessImplementation.java:182)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextEntityCreatedRows(SyncWorker.java:1039)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1355)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextEntityCreatedRows(SyncWorker.java:1046)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1355)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextEntityCreatedRows(SyncWorker.java:1046)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1355)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextEntityCreatedRows(SyncWorker.java:1046)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1355)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextEntityCreatedRows(SyncWorker.java:1046)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1355)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextEntityCreatedRows(SyncWorker.java:1046)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1355)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextEntityCreatedRows(SyncWorker.java:1046)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1355)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextEntityCreatedRows(SyncWorker.java:1046)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1355)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextEntityCreatedRows(SyncWorker.java:1046)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1355)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextEntityCreatedRows(SyncWorker.java:1046)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1355)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextEntityCreatedRows(SyncWorker.java:1046)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1355)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextEntityCreatedRows(SyncWorker.java:1046)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1355)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextEntityCreatedRows(SyncWorker.java:1046)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1355)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextEntityCreatedRows(SyncWorker.java:1046)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1355)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextEntityCreatedRows(SyncWorker.java:1046)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1355)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextEntityCreatedRows(SyncWorker.java:1046)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1355)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextEntityCreatedRows(SyncWorker.java:1046)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1355)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1154)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1154)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1154)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1154)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1154)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1154)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1154)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1154)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1154)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1154)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1154)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1154)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1154)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1154)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1154)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1154)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1154)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1154)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1154)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1154)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1154)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1154)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1154)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1154)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1154)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1154)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1154)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1154)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1154)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1154)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1154)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1154)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1154)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1154)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1154)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1154)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1154)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1154)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1154)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1154)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1154)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1154)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1154)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1154)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1154)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1154)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1154)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1154)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1154)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1154)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1154)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1154)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1169)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1154)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1154)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1154)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1154)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1154)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1154)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1154)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1154)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextEntityCreatedRows(SyncWorker.java:1046)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1355)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextEntityCreatedRows(SyncWorker.java:1046)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextEntityUpdatedRows(SyncWorker.java:714)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextUpdatedRow(SyncWorker.java:1020)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextEntityUpdatedRows(SyncWorker.java:704)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextUpdatedRow(SyncWorker.java:1020)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextEntityUpdatedRows(SyncWorker.java:704)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextUpdatedRow(SyncWorker.java:1020)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextEntityUpdatedRows(SyncWorker.java:704)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextUpdatedRow(SyncWorker.java:1020)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextEntityUpdatedRows(SyncWorker.java:704)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextUpdatedRow(SyncWorker.java:1020)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextEntityUpdatedRows(SyncWorker.java:704)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextUpdatedRow(SyncWorker.java:1020)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextEntityUpdatedRows(SyncWorker.java:704)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextUpdatedRow(SyncWorker.java:1020)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextEntityUpdatedRows(SyncWorker.java:704)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextUpdatedRow(SyncWorker.java:1020)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextEntityUpdatedRows(SyncWorker.java:704)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextUpdatedRow(SyncWorker.java:1020)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextEntityUpdatedRows(SyncWorker.java:704)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextUpdatedRow(SyncWorker.java:1020)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextEntityUpdatedRows(SyncWorker.java:704)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextUpdatedRow(SyncWorker.java:1020)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextEntityUpdatedRows(SyncWorker.java:704)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextUpdatedRow(SyncWorker.java:1020)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextEntityUpdatedRows(SyncWorker.java:704)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextUpdatedRow(SyncWorker.java:1020)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextEntityUpdatedRows(SyncWorker.java:704)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextUpdatedRow(SyncWorker.java:1020)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextEntityUpdatedRows(SyncWorker.java:704)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextUpdatedRow(SyncWorker.java:1020)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextEntityUpdatedRows(SyncWorker.java:704)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextUpdatedRow(SyncWorker.java:1020)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextEntityUpdatedRows(SyncWorker.java:704)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextUpdatedRow(SyncWorker.java:1020)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextEntityUpdatedRows(SyncWorker.java:704)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextUpdatedRow(SyncWorker.java:1020)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextEntityUpdatedRows(SyncWorker.java:704)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextUpdatedRow(SyncWorker.java:1020)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextEntityUpdatedRows(SyncWorker.java:704)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextUpdatedRow(SyncWorker.java:1020)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextEntityUpdatedRows(SyncWorker.java:704)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextUpdatedRow(SyncWorker.java:1020)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextEntityUpdatedRows(SyncWorker.java:704)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextUpdatedRow(SyncWorker.java:1020)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextEntityUpdatedRows(SyncWorker.java:704)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextUpdatedRow(SyncWorker.java:1020)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextEntityUpdatedRows(SyncWorker.java:704)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushData(SyncWorker.java:678)
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.startWork(SyncWorker.java:197)
    at mz.co.cloud.dumbo.syncmechanism.DumboSync$1.onMessage(DumboSync.java:213)
    at com.pier.PierClient$1.run(PierClient.java:268)
    at com.pier.core.WorkQueue$PoolWorker.run(WorkQueue.java:81)
m_junior
  • 591
  • 1
  • 8
  • 19
  • 1
    You asked in the right place. – Parker Hoyes Aug 27 '15 at 08:13
  • 3
    To put it simply, a StackOverflowError is thrown when a function is called by one function, which was called by another function, which was called by another function, and this pattern goes on too many levels deep. Most commonly it's caused by calling a function within it's own function body, creating an infinite loop of function calls. – Parker Hoyes Aug 27 '15 at 08:16
  • post your code or we wont be able to help you – Jordi Castilla Aug 27 '15 at 08:30

1 Answers1

3

looks like you have a loop or recursive function somewhere which does not reach the break / end of the loop/function. Most of the time that happens when you check with an if statement for the end of a recursive function but it actually never changes the condition of the if-statement.

At some point your computer doesn't have enough "thinking space" to go any further down the rabbit hole (as each iteration takes up a certain part of the overall space to say it in a simple way). Apparently at 145 iterations you have reached the limit.

Without the code we cant really help you here, how about adding a sample code?

Cribber
  • 2,513
  • 2
  • 21
  • 60
  • 2
    What if after 100 iterations I make the function return and trigger the function again from a Timer? All I want Is to have this interation rurring forever. By forever I mean, It doesnt actually end. Is the timer going to help me? – m_junior Aug 27 '15 at 08:24
  • 2
    yes. If after 100 iterations you return, the stack is going to be smaller / "go down" again. then you can start anew. Basically you cant run 146 instances of the same function at the same time apparently. But 144 work. So yes, this would help. – Cribber Aug 27 '15 at 08:32