From 2cc1df04381cb13c7d66aa8de0cc32312482d045 Mon Sep 17 00:00:00 2001 From: Vasu Nori Date: Tue, 23 Mar 2010 10:17:48 -0700 Subject: [PATCH] print finalizer warning before closing the cursor in finalize this will let us know which cursor is being finalized. if the heapworker gets wedbed due to the close bug:2536922 then we will never see the warning and never know which cursor caused this problem Change-Id: I595cc1014ff7a1114079b33665c092c6a2f3a907 --- core/java/android/database/sqlite/SQLiteCursor.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/core/java/android/database/sqlite/SQLiteCursor.java b/core/java/android/database/sqlite/SQLiteCursor.java index 3f0fcb1d98dbb..6e5b3e1685162 100644 --- a/core/java/android/database/sqlite/SQLiteCursor.java +++ b/core/java/android/database/sqlite/SQLiteCursor.java @@ -579,10 +579,12 @@ public class SQLiteCursor extends AbstractWindowedCursor { try { // if the cursor hasn't been closed yet, close it first if (mWindow != null) { - close(); + int len = mQuery.mSql.length(); Log.e(TAG, "Finalizing a Cursor that has not been deactivated or closed. " + "database = " + mDatabase.getPath() + ", table = " + mEditTable + - ", query = " + mQuery.mSql, mStackTrace); + ", query = " + mQuery.mSql.substring(0, (len > 100) ? 100 : len), + mStackTrace); + close(); SQLiteDebug.notifyActiveCursorFinalized(); } else { if (Config.LOGV) {