Once again, it's not SQLite that's using the HashMap. SQLite is entirely in C. It's some of the Android support surrounding it. A SQLite operation is not immediately active at the time of the failure, and the database should not be compromised.
What one wonders is whether the problem occurs only in debug mode or might occur in production mode as well. On Nov 9, 10:31 am, Bret Foreman <[email protected]> wrote: > After looking more closely, I'm starting to think it's not a good idea > to handle this exception. Right after this error occurs, PID 493 goes > into a fatal memory allocation loop. The threading in my application > is fairly complex so I don't think I can package up an example for a > bug report. The fact that SQLite is using a HashMap in code that is > supposed to be thread-safe seems like enough of a bug right there. > > On Nov 9, 8:20 am, Bret Foreman <[email protected]> wrote: > > > This problem has raised its head again, even with the testing monkey > > throttled back. It just becomes more infrequent at lower transaction > > rates, which is what one would expect from a concurrency issue. I can > > catch the exception, of course, but the real questions are 1) What DB > > operation is causing it to happen and 2) What to do when the exception > > occurs. It's hard to tell from the stack trace whether the DB was > > reading, in which case I can swallow the exception and return some > > default value, or writing, in which case I need to retry. Here's the > > exception. Anyone have any ideas? > > > 11-08 23:41:20.821: ERROR/JavaBinder(493): > > java.util.ConcurrentModificationException > > 11-08 23:41:20.821: ERROR/JavaBinder(493): at java.util.HashMap > > $HashIterator.nextEntry(HashMap.java:795) > > 11-08 23:41:20.821: ERROR/JavaBinder(493): at java.util.HashMap > > $KeyIterator.next(HashMap.java:822) > > 11-08 23:41:20.821: ERROR/JavaBinder(493): at > > android.database.sqlite.SQLiteDatabase.getDbStats(SQLiteDatabase.java: > > 2133) > > 11-08 23:41:20.821: ERROR/JavaBinder(493): at > > android.database.sqlite.SQLiteDebug.getDatabaseInfo(SQLiteDebug.java: > > 150) > > 11-08 23:41:20.821: ERROR/JavaBinder(493): at > > android.app.ActivityThread$ApplicationThread.dump(ActivityThread.java: > > 1793) > > 11-08 23:41:20.821: ERROR/JavaBinder(493): at > > android.os.Binder.dump(Binder.java:222) > > 11-08 23:41:20.821: ERROR/JavaBinder(493): at > > android.os.Binder.onTransact(Binder.java:201) > > 11-08 23:41:20.821: ERROR/JavaBinder(493): at > > android.app.ApplicationThreadNative.onTransact(ApplicationThreadNative.java: > > 407) > > 11-08 23:41:20.821: ERROR/JavaBinder(493): at > > android.os.Binder.execTransact(Binder.java:288) > > 11-08 23:41:20.821: ERROR/JavaBinder(493): at > > dalvik.system.NativeStart.run(Native Method) -- You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/android-developers?hl=en

