Rotating device in categories view causes crash

Reported via ACRA and F-Droid 0.103.2, but trivially reproducible on current master (about 0.104).

ANDROID_VERSION=7.1.2
USER_COMMENT=rotate mobile to landscape in cathegories view
PHONE_MODEL=Nexus 5
BRAND=google
APP_VERSION_NAME=0.103.2
STACK_TRACE=java.lang.IllegalStateException: attempt to re-open an already-closed object: SQLiteQuery: SELECT fdroid_category.rowid, fdroid_category.name FROM fdroid_category LEFT JOIN fdroid_categoryAppMetadataJoin ON (categoryId = fdroid_category.rowid)   JOIN fdroid_app AS app ON (app.rowid = fdroid_categoryAppMetadataJoin.appMetadataId)  JOIN fdroid_package AS pkg ON (pkg.preferredMetadata = app.rowid) WHERE fdroid_categoryAppMetadataJoin.appMetadataId IS NOT NULL  GROUP BY fdroid_category.rowid
	at android.database.sqlite.SQLiteClosable.acquireReference(SQLiteClosable.java:55)
	at android.database.sqlite.SQLiteQuery.fillWindow(SQLiteQuery.java:58)
	at android.database.sqlite.SQLiteCursor.fillWindow(SQLiteCursor.java:151)
	at android.database.sqlite.SQLiteCursor.onMove(SQLiteCursor.java:123)
	at android.database.AbstractCursor.moveToPosition(AbstractCursor.java:236)
	at android.database.AbstractCursor.moveToFirst(AbstractCursor.java:258)
	at android.database.CursorWrapper.moveToFirst(CursorWrapper.java:71)
	at org.fdroid.fdroid.views.main.CategoriesViewBinder.onLoadFinished(CategoriesViewBinder.java:100)
	at org.fdroid.fdroid.views.main.CategoriesViewBinder.onLoadFinished(CategoriesViewBinder.java:34)
	at android.support.v4.app.LoaderManagerImpl$LoaderInfo.callOnLoadFinished(LoaderManager.java:476)
	at android.support.v4.app.LoaderManagerImpl.initLoader(LoaderManager.java:612)
	at org.fdroid.fdroid.views.main.CategoriesViewBinder.<init>(CategoriesViewBinder.java:65)
	at org.fdroid.fdroid.views.main.MainViewController.bindCategoriesView(MainViewController.java:66)
	at org.fdroid.fdroid.views.main.MainViewAdapter.onCreateViewHolder(MainViewAdapter.java:66)
	at org.fdroid.fdroid.views.main.MainViewAdapter.onCreateViewHolder(MainViewAdapter.java:26)
	at android.support.v7.widget.RecyclerView$Adapter.createViewHolder(RecyclerView.java:6321)
	at android.support.v7.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline(RecyclerView.java:5509)
	at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5394)
	at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5390)
	at android.support.v7.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:2149)
	at android.support.v7.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1533)
	at android.support.v7.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1496)
	at android.support.v7.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:593)
	at android.support.v7.widget.RecyclerView.dispatchLayoutStep2(RecyclerView.java:3537)
	at android.support.v7.widget.RecyclerView.dispatchLayout(RecyclerView.java:3266)
	at android.support.v7.widget.RecyclerView.onLayout(RecyclerView.java:3798)
	at android.view.View.layout(View.java:17641)
	at android.view.ViewGroup.layout(ViewGroup.java:5575)
	at android.widget.RelativeLayout.onLayout(RelativeLayout.java:1079)
	at android.view.View.layout(View.java:17641)
	at android.view.ViewGroup.layout(ViewGroup.java:5575)
	at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)
	at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
	at android.view.View.layout(View.java:17641)
	at android.view.ViewGroup.layout(ViewGroup.java:5575)
	at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1741)
	at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1585)
	at android.widget.LinearLayout.onLayout(LinearLayout.java:1494)
	at android.view.View.layout(View.java:17641)
	at android.view.ViewGroup.layout(ViewGroup.java:5575)
	at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)
	at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
	at android.view.View.layout(View.java:17641)
	at android.view.ViewGroup.layout(ViewGroup.java:5575)
	at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1741)
	at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1585)
	at android.widget.LinearLayout.onLayout(LinearLayout.java:1494)
	at android.view.View.layout(View.java:17641)
	at android.view.ViewGroup.layout(ViewGroup.java:5575)
	at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)
	at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
	at com.android.internal.policy.DecorView.onLayout(DecorView.java:729)
	at android.view.View.layout(View.java:17641)
	at android.view.ViewGroup.layout(ViewGroup.java:5575)
	at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2346)
	at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2068)
	at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1254)
	at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6344)
	at android.view.Choreographer$CallbackRecord.run(Choreographer.java:874)
	at android.view.Choreographer.doCallbacks(Choreographer.java:686)
	at android.view.Choreographer.doFrame(Choreographer.java:621)
	at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:860)
	at android.os.Handler.handleCallback(Handler.java:751)
	at android.os.Handler.dispatchMessage(Handler.java:95)
	at android.os.Looper.loop(Looper.java:154)
	at android.app.ActivityThread.main(ActivityThread.java:6186)
	at java.lang.reflect.Method.invoke(Native Method)
	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:889)
	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:779)
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information