[Mono-bugs] [Bug 638716] New: DeleteLocalRef warning for CharSequence

bugzilla_noreply at novell.com bugzilla_noreply at novell.com
Sat Sep 11 09:11:19 EDT 2010


https://bugzilla.novell.com/show_bug.cgi?id=638716

https://bugzilla.novell.com/show_bug.cgi?id=638716#c0


           Summary: DeleteLocalRef warning for CharSequence
    Classification: Mono
           Product: MonoDroid
           Version: SVN
          Platform: Other
        OS/Version: Other
            Status: NEW
          Severity: Normal
          Priority: P5 - None
         Component: Class Libraries
        AssignedTo: mkestner at novell.com
        ReportedBy: jankit at novell.com
         QAContact: mono-bugs at lists.ximian.com
          Found By: ---
           Blocker: ---


Change the Button sample's OnCreate method to:

---------
                protected override void OnCreate (Bundle bundle)
                {   
#if MONODROID_TIMING
                        Logger.Log(LogLevel.Info, "MonoDroid-Timing",
"ButtonActivity.OnCreate: time: " + (DateTime.Now - new DateTime (1970, 1,
1)).TotalMilliseconds);
#endif
                        base.OnCreate (bundle);

                        // Create your application here
                        Android.Widget.Button button = new
Android.Widget.Button (this);

                        button.Text = string.Format ("{0} clicks!!", count);
                        button.Click += delegate { button.Text = string.Format
("{0} clicks!!", ++count); };

                        j_timer = new Java.Util.Timer (); 
                        j_timer.Schedule (new FooTimerTask (s => RunOnUiThread
(() => button.Text =  string.Format ("{0} clicks!!", ++count))), 100, 1); 

                        SetContentView (button);
                }
----------

And add this class:
----------
        class FooTimerTask : TimerTask
        {   
                Action<string> action;

                public FooTimerTask (Action<string> action)
                {   
                        this.action = action;
                }   

                public override void Run ()
                {   
                        action ("ignore");
                }   
        }
-----------

When this is run, log shows lots of :

W/dalvikvm( 5352): JNI WARNING: DeleteLocalRef(0x481eea78) failed to find entry
(valid=1)
W/dalvikvm( 5352): JNI WARNING: DeleteLocalRef(0x481dd0e8) failed to find entry
(valid=1)
W/dalvikvm( 5352): JNI WARNING: DeleteLocalRef(0x481f8c20) failed to find entry
(valid=1)
W/dalvikvm( 5352): JNI WARNING: DeleteLocalRef(0x481dd138) failed to find entry
(valid=1)
W/dalvikvm( 5352): JNI WARNING: DeleteLocalRef(0x481eead8) failed to find entry
(valid=1)

I printed Environment.StackTrace in JNIEnv.DeleteLocalRef and got:

W/dalvikvm( 5352): JNI WARNING: DeleteLocalRef(0x4812b588) failed to find entry
(valid=1)
I/DeleteLocalRef( 5352):    at System.Environment.get_StackTrace()
I/DeleteLocalRef( 5352):    at Android.Runtime.JNIEnv.DeleteLocalRef(IntPtr
jobject)
I/DeleteLocalRef( 5352):    at Java.Lang.CharSequence.Finalize()

And this at the end (app crashes):

W/dalvikvm( 5352): ReferenceTable overflow (max=51200)
W/dalvikvm( 5352): Last 10 entries in JNI global reference table:
W/dalvikvm( 5352): 51190: 0x4817df00 cls=Lmono/java/lang/IRunnableAdapter; (12
bytes)
W/dalvikvm( 5352): 51191: 0x4817de00 cls=Lmono/java/lang/IRunnableAdapter; (12
bytes)
W/dalvikvm( 5352): 51192: 0x4817de10 cls=Lmono/java/lang/IRunnableAdapter; (12
bytes)
W/dalvikvm( 5352): 51193: 0x4817de20 cls=Lmono/java/lang/IRunnableAdapter; (12
bytes)
W/dalvikvm( 5352): 51194: 0x4817de30 cls=Lmono/java/lang/IRunnableAdapter; (12
bytes)
W/dalvikvm( 5352): 51195: 0x4817de40 cls=Lmono/java/lang/IRunnableAdapter; (12
bytes)
W/dalvikvm( 5352): 51196: 0x4817db20 cls=Lmono/java/lang/IRunnableAdapter; (12
bytes)
W/dalvikvm( 5352): 51197: 0x4817db30 cls=Lmono/java/lang/IRunnableAdapter; (12
bytes)
W/dalvikvm( 5352): 51198: 0x4817db40 cls=Lmono/java/lang/IRunnableAdapter; (12
bytes)
W/dalvikvm( 5352): 51199: 0x4817db50 cls=Lmono/java/lang/IRunnableAdapter; (12
bytes)
W/dalvikvm( 5352): JNI global reference table summary (51200 entries):
W/dalvikvm( 5352):   107 of Ljava/lang/Class; 172B (68 unique)
W/dalvikvm( 5352):     2 of Ldalvik/system/VMRuntime; 12B (1 unique)
W/dalvikvm( 5352):     1 of Ljava/lang/String; 28B
W/dalvikvm( 5352):    10 of Ljava/lang/ref/WeakReference; 28B (10 unique)
W/dalvikvm( 5352):     1 of Landroid/app/ActivityThread$ApplicationThread; 28B
W/dalvikvm( 5352):     1 of
Landroid/app/ActivityThread$PackageInfo$ServiceDispatcher$InnerConnection; 28B
W/dalvikvm( 5352):     1 of Landroid/widget/Button; 548B
W/dalvikvm( 5352):     2 of Landroid/view/ViewRoot$W; 28B (2 unique)
W/dalvikvm( 5352):     1 of Landroid/view/accessibility/AccessibilityManager$1;
28B
W/dalvikvm( 5352):     1 of Landroid/view/inputmethod/InputMethodManager$1; 28B
W/dalvikvm( 5352):     1 of
Landroid/view/inputmethod/InputMethodManager$ControlledInputConnectionWrapper;
36B
W/dalvikvm( 5352):     1 of Lmono/samples/button/ButtonActivity; 180B
W/dalvikvm( 5352):     1 of Lmono/android/view/view/OnClickListenerAdapter; 12B
W/dalvikvm( 5352):     1 of Ljava/util/Timer; 20B
W/dalvikvm( 5352):     1 of Lmono/samples/button/FooTimerTask; 44B
W/dalvikvm( 5352): 48614 of Lmono/java/lang/IRunnableAdapter; 12B (48614
unique)
W/dalvikvm( 5352):  2454 of Lmono/java/lang/IRunnableAdapter; 20B (2454 unique)
W/dalvikvm( 5352): Memory held directly by native code is 645472 bytes
E/dalvikvm( 5352): Failed adding to JNI global ref table (51200 entries)
E/dalvikvm( 5352): VM aborting
D/Zygote  ( 2182): Process 5352 terminated by signal (7)
------

Filed bug #638714 for the IRunnableAdapter issue.

-- 
Configure bugmail: https://bugzilla.novell.com/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.


More information about the mono-bugs mailing list