[Mono-bugs] [Bug 638714] New: LocalReference to IRunnableAdapter not getting released

bugzilla_noreply at novell.com bugzilla_noreply at novell.com
Sat Sep 11 08:54:14 EDT 2010


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

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


           Summary: LocalReference to IRunnableAdapter not getting
                    released
    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: ---


When an Action is used with Activity.RunOnUiThread (action), the corresponding
IRunnableAdapter's local ref doesn't get released.

To reproduce, change the Button sample's OnCreate method to (adds the timer):

----------
                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); };
                        // ** Add these two lines
                        j_timer = new Java.Util.Timer (); 
                        j_timer.Schedule (new FooTimerTask (s => RunOnUiThread
(() => count++)), 100, 1); 
                        // ***

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

After running for some time, the application crashes with this in the log:

------------
W/dalvikvm( 5239): ReferenceTable overflow (max=51200)
W/dalvikvm( 5239): Last 10 entries in JNI global reference table:
W/dalvikvm( 5239): 51190: 0x481ccab0 cls=Lmono/java/lang/IRunnableAdapter; (12
bytes)
W/dalvikvm( 5239): 51191: 0x481ccac0 cls=Lmono/java/lang/IRunnableAdapter; (12
bytes)
W/dalvikvm( 5239): 51192: 0x481ccad0 cls=Lmono/java/lang/IRunnableAdapter; (12
bytes)
W/dalvikvm( 5239): 51193: 0x481ccae0 cls=Lmono/java/lang/IRunnableAdapter; (12
bytes)
W/dalvikvm( 5239): 51194: 0x481ccaf0 cls=Lmono/java/lang/IRunnableAdapter; (12
bytes)
W/dalvikvm( 5239): 51195: 0x481ccb00 cls=Lmono/java/lang/IRunnableAdapter; (12
bytes)
W/dalvikvm( 5239): 51196: 0x481ccb10 cls=Lmono/java/lang/IRunnableAdapter; (12
bytes)
W/dalvikvm( 5239): 51197: 0x481ccb20 cls=Lmono/java/lang/IRunnableAdapter; (12
bytes)
W/dalvikvm( 5239): 51198: 0x481ccb30 cls=Lmono/java/lang/IRunnableAdapter; (12
bytes)
W/dalvikvm( 5239): 51199: 0x481ccb40 cls=Lmono/java/lang/IRunnableAdapter; (12
bytes)
W/dalvikvm( 5239): JNI global reference table summary (51200 entries):
W/dalvikvm( 5239):   107 of Ljava/lang/Class; 172B (68 unique)
W/dalvikvm( 5239):     2 of Ldalvik/system/VMRuntime; 12B (1 unique)
W/dalvikvm( 5239):     1 of Ljava/lang/String; 28B
W/dalvikvm( 5239):    13 of Ljava/lang/ref/WeakReference; 28B (13 unique)
W/dalvikvm( 5239):     1 of Landroid/app/ActivityThread$ApplicationThread; 28B
W/dalvikvm( 5239):     1 of Landroid/app/ActivityThread$ProviderRecord; 28B
W/dalvikvm( 5239):     1 of
Landroid/app/ActivityThread$PackageInfo$ServiceDispatcher$InnerConnection; 28B
W/dalvikvm( 5239):     1 of Landroid/database/ContentObserver$Transport; 28B
W/dalvikvm( 5239):     1 of Landroid/widget/Button; 548B
W/dalvikvm( 5239):     2 of Landroid/view/ViewRoot$W; 28B (2 unique)
W/dalvikvm( 5239):     1 of Landroid/view/accessibility/AccessibilityManager$1;
28B
W/dalvikvm( 5239):     1 of Landroid/view/inputmethod/InputMethodManager$1; 28B
W/dalvikvm( 5239):     1 of
Landroid/view/inputmethod/InputMethodManager$ControlledInputConnectionWrapper;
36B
W/dalvikvm( 5239):     1 of Lmono/samples/button/ButtonActivity; 180B
W/dalvikvm( 5239):     1 of Lmono/android/view/view/OnClickListenerAdapter; 12B
W/dalvikvm( 5239):     1 of Ljava/util/Timer; 20B
W/dalvikvm( 5239):     1 of Lmono/samples/button/FooTimerTask; 44B
W/dalvikvm( 5239): 50954 of Lmono/java/lang/IRunnableAdapter; 12B (50954
unique)
W/dalvikvm( 5239):   109 of Lmono/java/lang/IRunnableAdapter; 20B (109 unique)
W/dalvikvm( 5239): Memory held directly by native code is 626792 bytes
E/dalvikvm( 5239): Failed adding to JNI global ref table (51200 entries)
E/dalvikvm( 5239): VM aborting
--------------

-- 
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