d-tarasov / ormlite-android-sqlcipher

Patched OrmLite Android library which encrypts persistent data transparently with SQLCipher

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Error: Finalizing a Cursor that has not been deactivated or closed.

lucasfmattos opened this issue · comments

I'm having a problem using the ormlite-android-sqlcipher-4:48 library and SQLCipher.for.Android.v3.1.0 to perform the encryption of SQLite file. I believe that the error happens because I'm using ForeignCollectionField with the property 'eager = false' when true not get an error. I need not always false property to reload the object. Below is the mapping and error stack.

@ForeignCollectionField(eager = false, orderColumnName = CartaoSus.PRINCIPAL, orderAscending = false)
private ForeignCollection cartaoSus;

01-15 13:03:36.055: E/Cursor(3041): Finalizing a Cursor that has not been deactivated or closed. database = /data/data/br.gov.prodemge.sres/databases/sres.db, table = null, query = SELECT * FROM TBCARTAOSUS WHERE ID_USUARIOSUS = ? ORDER BY PRINCIPAL DESC
01-15 13:03:36.055: E/Cursor(3041): net.sqlcipher.database.DatabaseObjectNotClosedException: Application did not close the cursor or database object that was opened here
01-15 13:03:36.055: E/Cursor(3041): at net.sqlcipher.database.SQLiteCursor.(SQLiteCursor.java:217)
01-15 13:03:36.055: E/Cursor(3041): at net.sqlcipher.database.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:53)
01-15 13:03:36.055: E/Cursor(3041): at net.sqlcipher.database.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1447)
01-15 13:03:36.055: E/Cursor(3041): at net.sqlcipher.database.SQLiteDatabase.rawQuery(SQLiteDatabase.java:1416)
01-15 13:03:36.055: E/Cursor(3041): at com.j256.ormlite.sqlcipher.android.compat.BasicApiCompatibility.rawQuery(BasicApiCompatibility.java:16)
01-15 13:03:36.055: E/Cursor(3041): at com.j256.ormlite.sqlcipher.android.AndroidCompiledStatement.getCursor(AndroidCompiledStatement.java:180)
01-15 13:03:36.055: E/Cursor(3041): at com.j256.ormlite.sqlcipher.android.AndroidCompiledStatement.runQuery(AndroidCompiledStatement.java:65)
01-15 13:03:36.055: E/Cursor(3041): at com.j256.ormlite.stmt.SelectIterator.(SelectIterator.java:55)
01-15 13:03:36.055: E/Cursor(3041): at com.j256.ormlite.stmt.StatementExecutor.buildIterator(StatementExecutor.java:247)
01-15 13:03:36.055: E/Cursor(3041): at com.j256.ormlite.dao.BaseDaoImpl.createIterator(BaseDaoImpl.java:964)
01-15 13:03:36.055: E/Cursor(3041): at com.j256.ormlite.dao.BaseDaoImpl.iterator(BaseDaoImpl.java:533)
01-15 13:03:36.055: E/Cursor(3041): at com.j256.ormlite.dao.LazyForeignCollection.seperateIteratorThrow(LazyForeignCollection.java:313)
01-15 13:03:36.055: E/Cursor(3041): at com.j256.ormlite.dao.LazyForeignCollection.iteratorThrow(LazyForeignCollection.java:71)
01-15 13:03:36.055: E/Cursor(3041): at com.j256.ormlite.dao.LazyForeignCollection.closeableIterator(LazyForeignCollection.java:60)
01-15 13:03:36.055: E/Cursor(3041): at com.j256.ormlite.dao.LazyForeignCollection.iterator(LazyForeignCollection.java:47)
01-15 13:03:36.055: E/Cursor(3041): at com.j256.ormlite.dao.LazyForeignCollection.iterator(LazyForeignCollection.java:28)
01-15 13:03:36.055: E/Cursor(3041): at br.gov.prodemge.sres.model.UsuarioSUS.getCodigoNumeroCartaoPrincipal(UsuarioSUS.java:791)
01-15 13:03:36.055: E/Cursor(3041): at br.gov.prodemge.sres.components.listview.AdapterListViewResultadoPesquisaCidadaoItem.getView(AdapterListViewResultadoPesquisaCidadaoItem.java:69)
01-15 13:03:36.055: E/Cursor(3041): at android.widget.AbsListView.obtainView(AbsListView.java:2012)
01-15 13:03:36.055: E/Cursor(3041): at android.widget.ListView.makeAndAddView(ListView.java:1772)
01-15 13:03:36.055: E/Cursor(3041): at android.widget.ListView.fillDown(ListView.java:672)
01-15 13:03:36.055: E/Cursor(3041): at android.widget.ListView.fillFromTop(ListView.java:732)
01-15 13:03:36.055: E/Cursor(3041): at android.widget.ListView.layoutChildren(ListView.java:1625)
01-15 13:03:36.055: E/Cursor(3041): at android.widget.AbsListView.onLayout(AbsListView.java:1863)
01-15 13:03:36.055: E/Cursor(3041): at android.view.View.layout(View.java:11278)
01-15 13:03:36.055: E/Cursor(3041): at android.view.ViewGroup.layout(ViewGroup.java:4224)
01-15 13:03:36.055: E/Cursor(3041): at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1628)
01-15 13:03:36.055: E/Cursor(3041): at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1486)
01-15 13:03:36.055: E/Cursor(3041): at android.widget.LinearLayout.onLayout(LinearLayout.java:1399)
01-15 13:03:36.055: E/Cursor(3041): at android.view.View.layout(View.java:11278)
01-15 13:03:36.055: E/Cursor(3041): at android.view.ViewGroup.layout(ViewGroup.java:4224)
01-15 13:03:36.055: E/Cursor(3041): at android.widget.FrameLayout.onLayout(FrameLayout.java:431)
01-15 13:03:36.055: E/Cursor(3041): at android.view.View.layout(View.java:11278)
01-15 13:03:36.055: E/Cursor(3041): at android.view.ViewGroup.layout(ViewGroup.java:4224)
01-15 13:03:36.055: E/Cursor(3041): at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1628)
01-15 13:03:36.055: E/Cursor(3041): at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1486)
01-15 13:03:36.055: E/Cursor(3041): at android.widget.LinearLayout.onLayout(LinearLayout.java:1399)
01-15 13:03:36.055: E/Cursor(3041): at android.view.View.layout(View.java:11278)
01-15 13:03:36.055: E/Cursor(3041): at android.view.ViewGroup.layout(ViewGroup.java:4224)
01-15 13:03:36.055: E/Cursor(3041): at android.widget.FrameLayout.onLayout(FrameLayout.java:431)
01-15 13:03:36.055: E/Cursor(3041): at android.view.View.layout(View.java:11278)
01-15 13:03:36.055: E/Cursor(3041): at android.view.ViewGroup.layout(ViewGroup.java:4224)
01-15 13:03:36.055: E/Cursor(3041): at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1489)
01-15 13:03:36.055: E/Cursor(3041): at android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2442)
01-15 13:03:36.055: E/Cursor(3041): at android.os.Handler.dispatchMessage(Handler.java:99)
01-15 13:03:36.055: E/Cursor(3041): at android.os.Looper.loop(Looper.java:137)
01-15 13:03:36.055: E/Cursor(3041): at android.app.ActivityThread.main(ActivityThread.java:4424)
01-15 13:03:36.055: E/Cursor(3041): at java.lang.reflect.Method.invokeNative(Native Method)
01-15 13:03:36.055: E/Cursor(3041): at java.lang.reflect.Method.invoke(Method.java:511)
01-15 13:03:36.055: E/Cursor(3041): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
01-15 13:03:36.055: E/Cursor(3041): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
01-15 13:03:36.055: E/Cursor(3041): at dalvik.system.NativeStart.main(Native Method)

Sorry, I'am not supporting this library. This is only clone of usual ormlite library but with SQLCipher inside (changed some imports and added few methods and properties related to password for encryption).

This bug sounds like bug in sources of ormlite for Android library. I advice you to create issue in original ormlite bug tracker and when new version will be release I'm can merge this changes in my lib.