Fix misuse of ALLOC_DONT_TRACK.

The internal String creation function doesn't allow ALLOC_DONT_TRACK.
This changes the call to use ALLOC_DEFAULT and then explicitly release
the tracked allocation.

For bug 2558142.

Change-Id: I57dfa4824578c3a3a33f6836b75f51391cc73746
diff --git a/vm/native/dalvik_system_VMDebug.c b/vm/native/dalvik_system_VMDebug.c
index 612c9b5..34398d0 100644
--- a/vm/native/dalvik_system_VMDebug.c
+++ b/vm/native/dalvik_system_VMDebug.c
@@ -49,25 +49,27 @@
         return NULL;
     }
 
+    Thread* self = dvmThreadSelf();
+
     /*
      * Create the individual String objects and add them to the array.
-     *
-     * We can use ALLOC_DONT_TRACK here because the objects are being
-     * added to a tracked array object as they're created.
      */
     StringObject** contents = (StringObject**) stringArray->contents;
     size_t i;
     for (i = 0; i < count; i++) {
-        contents[i] = dvmCreateStringFromCstr(strings[i], ALLOC_DONT_TRACK);
+        contents[i] = dvmCreateStringFromCstr(strings[i], ALLOC_DEFAULT);
         if (contents[i] == NULL) {
             /* probably OOM; drop out now */
             assert(dvmCheckException(dvmThreadSelf()));
-            dvmReleaseTrackedAlloc((Object*)stringArray, NULL);
+            dvmReleaseTrackedAlloc((Object*)stringArray, self);
             return NULL;
         }
+
+        /* stored in tracked array, okay to release */
+        dvmReleaseTrackedAlloc((Object*)contents[i], self);
     }
 
-    dvmReleaseTrackedAlloc((Object*)stringArray, NULL);
+    dvmReleaseTrackedAlloc((Object*)stringArray, self);
     return stringArray;
 }