Skip to content

Leak in EmailHintContainerActivity #323

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
javmarina opened this issue Sep 23, 2016 · 5 comments
Closed

Leak in EmailHintContainerActivity #323

javmarina opened this issue Sep 23, 2016 · 5 comments

Comments

@javmarina
Copy link

Step 2: Describe your environment

  • Android device: Sony Xperia Z (C6603)
  • Android OS version: 5.0.2
  • Google Play Services version: 9.6.83
  • Firebase/Play Services SDK version: 9.4.0
  • FirebaseUI version: 0.5.3

Step 3: Describe the problem:

Leak Canary reports a leak in EmailHintContainerActivity.

Steps to reproduce:

The only thing you have to do is sign in with an account and wait.

Observed Results:

  • What happened? This could be a description, logcat output, etc.

In com.javapps.iSwim:1.0:1. (my app)

* com.firebase.ui.auth.ui.email.EmailHintContainerActivity has leaked:
* GC ROOT android.app.LoadedApk$ServiceDispatcher$DeathMonitor.this$0
* references android.app.LoadedApk$ServiceDispatcher.mConnection
* references com.google.android.gms.common.internal.zzn$zzb$zza.yX
* references com.google.android.gms.common.internal.zzn$zzb.yT
* references java.util.HashSet.backingMap
* references java.util.HashMap.table
* references array java.util.HashMap$HashMapEntry[].[3]
* references java.util.HashMap$HashMapEntry.next
* references java.util.HashMap$HashMapEntry.key
* references com.google.android.gms.common.internal.zzd$zzh.xG
* references com.google.android.gms.auth.api.credentials.internal.zzg.mContext
* leaks com.firebase.ui.auth.ui.email.EmailHintContainerActivity instance

* Retaining: 34 KB.
* Reference Key: 9bc898ef-9d68-4785-b001-cdbe8fd5eb66
* Device: Sony Sony C6603 C6603
* Android Version: 5.0.2 API: 21 LeakCanary: 1.4 6b04880
* Durations: watch=5023ms, gc=508ms, heap dump=7965ms, analysis=89489ms

* Details:
* Instance of android.app.LoadedApk$ServiceDispatcher$DeathMonitor
|   mName = android.content.ComponentName@314728624 (0x12c260b0)
|   mService = android.os.BinderProxy@314588032 (0x12c03b80)
|   this$0 = android.app.LoadedApk$ServiceDispatcher@314980624 (0x12c63910)
* Instance of android.app.LoadedApk$ServiceDispatcher
|   mActiveConnections = android.util.ArrayMap@316031584 (0x12d64260)
|   mActivityThread = android.app.ActivityThread$H@315132640 (0x12c88ae0)
|   mConnection = com.google.android.gms.common.internal.zzn$zzb$zza@315109696 (0x12c83140)
|   mContext = com.javapps.iSwim.iSwim@315234528 (0x12ca18e0)
|   mIServiceConnection = android.app.LoadedApk$ServiceDispatcher$InnerConnection@316031648 (0x12d642a0)
|   mLocation = android.app.ServiceConnectionLeaked@316031776 (0x12d64320)
|   mUnbindLocation = null
|   mDied = false
|   mFlags = 129
|   mForgotten = false
* Instance of com.google.android.gms.common.internal.zzn$zzb$zza
|   yX = com.google.android.gms.common.internal.zzn$zzb@314980528 (0x12c638b0)
* Instance of com.google.android.gms.common.internal.zzn$zzb
|   xL = android.os.BinderProxy@314588032 (0x12c03b80)
|   yR = android.content.ComponentName@314728624 (0x12c260b0)
|   yS = com.google.android.gms.common.internal.zzn$zzb$zza@315109696 (0x12c83140)
|   yT = java.util.HashSet@315109712 (0x12c83150)
|   yV = com.google.android.gms.common.internal.zzn$zza@316031232 (0x12d64100)
|   yW = com.google.android.gms.common.internal.zzn@316087232 (0x12d71bc0)
|   mState = 1
|   yU = true
* Instance of java.util.HashSet
|   static $staticOverhead = byte[8]@1874111721 (0x6fb4ace9)
|   static serialVersionUID = -5024744406713321676
|   backingMap = java.util.HashMap@314980576 (0x12c638e0)
* Instance of java.util.HashMap
|   static MINIMUM_CAPACITY = 4
|   static serialPersistentFields = java.io.ObjectStreamField[1]@1884607184 (0x7054d2d0)
|   static EMPTY_TABLE = java.util.HashMap$HashMapEntry[2]@1884607576 (0x7054d458)
|   static serialVersionUID = 362498820763181265
|   static $staticOverhead = byte[48]@1874107441 (0x6fb49c31)
|   static MAXIMUM_CAPACITY = 1073741824
|   static DEFAULT_LOAD_FACTOR = 0.75
|   entryForNullKey = null
|   entrySet = null
|   keySet = java.util.HashMap$KeySet@319055840 (0x130467e0)
|   table = java.util.HashMap$HashMapEntry[4]@316031456 (0x12d641e0)
|   values = null
|   modCount = 2
|   size = 2
|   threshold = 3
|   keySet = null
|   valuesCollection = null
* Array of java.util.HashMap$HashMapEntry[]
|   [0] = null
|   [1] = null
|   [2] = null
|   [3] = java.util.HashMap$HashMapEntry@322543456 (0x13399f60)
* Instance of java.util.HashMap$HashMapEntry
|   key = com.google.android.gms.common.internal.zzd$zzh@314589584 (0x12c04190)
|   next = java.util.HashMap$HashMapEntry@316031520 (0x12d64220)
|   value = java.util.HashSet@315109712 (0x12c83150)
|   hash = 2057782123
* Instance of java.util.HashMap$HashMapEntry
|   key = com.google.android.gms.common.internal.zzd$zzh@315109664 (0x12c83120)
|   next = null
|   value = java.util.HashSet@315109712 (0x12c83150)
|   hash = -1508424321
* Instance of com.google.android.gms.common.internal.zzd$zzh
|   xG = com.google.android.gms.auth.api.credentials.internal.zzg@314752768 (0x12c2bf00)
|   xJ = 0
* Instance of com.google.android.gms.auth.api.credentials.internal.zzg
|   do = null
|   aL = null
|   dT = java.util.Collections$UnmodifiableSet@318960768 (0x1302f480)
|   tN = com.google.android.gms.common.internal.zzg@318929792 (0x13027b80)
|   mContext = com.firebase.ui.auth.ui.email.EmailHintContainerActivity@319111552 (0x13054180)
|   mHandler = com.google.android.gms.common.internal.zzd$zzd@315233216 (0x12ca13c0)
|   tz = com.google.android.gms.common.GoogleApiAvailability@316017984 (0x12d60d40)
|   xA = com.google.android.gms.common.internal.zzk$2@318960816 (0x1302f4b0)
|   xC = java.lang.String@315097600 (0x12c80200)
|   xD = java.util.concurrent.atomic.AtomicInteger@318960864 (0x1302f4e0)
|   xr = com.google.android.gms.common.internal.zzn@316087232 (0x12d71bc0)
|   xs = java.lang.Object@318960848 (0x1302f4d0)
|   xt = com.google.android.gms.common.internal.zzu$zza$zza@319055856 (0x130467f0)
|   xu = com.google.android.gms.internal.zzpw$zza@315236032 (0x12ca1ec0)
|   xv = com.google.android.gms.auth.api.credentials.internal.zzk$zza$zza@319055952 (0x13046850)
|   xw = java.util.ArrayList@315233184 (0x12ca13a0)
|   xx = com.google.android.gms.common.internal.zzd$zzh@315109664 (0x12c83120)
|   xz = com.google.android.gms.common.internal.zzk$1@318960800 (0x1302f4a0)
|   zzahv = android.os.Looper@315132544 (0x12c88a80)
|   zzail = java.lang.Object@318960832 (0x1302f4c0)
|   xn = 0
|   xo = 1474654235521
|   xq = 0
|   xB = 68
|   xm = 0
|   xp = 0
|   xy = 3
* Instance of com.firebase.ui.auth.ui.email.EmailHintContainerActivity
|   static $staticOverhead = byte[8]@319082497 (0x1304d001)
|   static RC_HINT = 13
|   mAcquireEmailHelper = com.firebase.ui.auth.ui.AcquireEmailHelper@318960240 (0x1302f270)
|   mActivityHelper = com.firebase.ui.auth.ui.ActivityHelper@315208000 (0x12c9b140)
|   mDelegate = android.support.v7.app.AppCompatDelegateImplV14@322698112 (0x133bfb80)
|   mResources = null
|   mEatKeyUpEvent = false
|   mThemeId = 2131427392
|   mFragments = android.support.v4.app.FragmentController@316174304 (0x12d86fe0)
|   mHandler = android.support.v4.app.FragmentActivity$1@315099040 (0x12c807a0)
|   mMediaController = null
|   mPendingFragmentActivityResults = android.support.v4.util.SparseArrayCompat@315207968 (0x12c9b120)
|   mCreated = true
|   mNextCandidateRequestIndex = 0
|   mOptionsMenuInvalidated = false
|   mReallyStopped = true
|   mRequestedPermissionsFromFragment = false
|   mResumed = false
|   mRetaining = false
|   mStopped = true
|   mStartedActivityFromFragment = false
|   mStartedIntentSenderFromFragment = false
|   mActionBar = null
|   mActivityInfo = android.content.pm.ActivityInfo@318943488 (0x1302b100)
|   mActivityTransitionState = android.app.ActivityTransitionState@315119488 (0x12c85780)
|   mAllLoaderManagers = android.util.ArrayMap@316448256 (0x12dc9e00)
|   mApplication = com.javapps.iSwim.iSwim@315234528 (0x12ca18e0)
|   mComponent = android.content.ComponentName@316137808 (0x12d7e150)
|   mContainer = android.app.Activity$1@316174240 (0x12d86fa0)
|   mCurrentConfig = android.content.res.Configuration@315158256 (0x12c8eef0)
|   mDecor = null
|   mDefaultKeySsb = null
|   mEmbeddedID = null
|   mEnterTransitionListener = android.app.SharedElementCallback$1@1884760064 (0x70572800)
|   mExitTransitionListener = android.app.SharedElementCallback$1@1884760064 (0x70572800)
|   mFragments = android.app.FragmentManagerImpl@315157920 (0x12c8eda0)
|   mHandler = android.os.Handler@315099008 (0x12c80780)
|   mInstanceTracker = android.os.StrictMode$InstanceTracker@316174272 (0x12d86fc0)
|   mInstrumentation = android.app.Instrumentation@314724928 (0x12c25240)
|   mIntent = android.content.Intent@315134016 (0x12c89040)
|   mLastNonConfigurationInstances = null
|   mLoaderManager = null
|   mMainThread = android.app.ActivityThread@314982656 (0x12c64100)
|   mManagedCursors = java.util.ArrayList@315098944 (0x12c80740)
|   mManagedDialogs = null
|   mMenuInflater = null
|   mParent = null
|   mResultData = null
|   mSearchManager = null
|   mTitle = java.lang.String@319534048 (0x130bb3e0)
|   mToken = android.os.BinderProxy@315082976 (0x12c7c8e0)
|   mTranslucentCallback = null
|   mUiThread = java.lang.Thread@1945690896 (0x73f8e310)
|   mVoiceInteractor = null
|   mWindow = com.android.internal.policy.impl.PhoneWindow@316466048 (0x12dce380)
|   mWindowManager = android.view.WindowManagerImpl@315099488 (0x12c80960)
|   mCalled = true
|   mChangeCanvasToTranslucent = false
|   mChangingConfigurations = false
|   mCheckedForLoaderManager = true
|   mConfigChangeFlags = 0
|   mDefaultKeyMode = 0
|   mDestroyed = true
|   mDoReportFullyDrawn = false
|   mEnableDefaultActionBarUp = false
|   mFinished = true
|   mIdent = 374302525
|   mLoadersStarted = false
|   mResultCode = 0
|   mResumed = false
|   mStartedActivity = false
|   mStopped = true
|   mTemporaryPause = false
|   mTitleColor = 0
|   mTitleReady = true
|   mVisibleBehind = false
|   mVisibleFromClient = true
|   mVisibleFromServer = true
|   mWindowAdded = true
|   mInflater = com.android.internal.policy.impl.PhoneLayoutInflater@318927584 (0x130272e0)
|   mOverrideConfiguration = null
|   mResources = android.content.res.Resources@314972064 (0x12c617a0)
|   mTheme = android.content.res.Resources$Theme@315100224 (0x12c80c40)
|   mThemeResource = 2131427392
|   mBase = android.app.ContextImpl@314751744 (0x12c2bb00)
* Excluded Refs:
| Field: android.app.ActivityThread$ActivityClientRecord.nextIdle
| Field: android.view.inputmethod.InputMethodManager.mNextServedView
| Field: android.view.inputmethod.InputMethodManager.mServedView
| Field: android.view.inputmethod.InputMethodManager.mServedInputConnection
| Field: android.view.inputmethod.InputMethodManager.mCurRootView
| Field: android.animation.LayoutTransition$1.val$parent
| Field: android.view.textservice.SpellCheckerSession$1.this$0
| Field: android.support.v7.internal.widget.ActivityChooserModel.mActivityChoserModelPolicy
| Field: android.widget.ActivityChooserModel.mActivityChoserModelPolicy
| Field: android.accounts.AccountManager$AmsTask$Response.this$1
| Field: android.media.MediaScannerConnection.mContext
| Field: android.os.UserManager.mContext
| Field: android.appwidget.AppWidgetHost$Callbacks.this$0
| Field: android.media.AudioManager$1.this$0
| Field: android.widget.Editor$Blink.this$0
| Field: android.view.Choreographer$FrameDisplayEventReceiver.mMessageQueue (always)
| Static field: android.media.session.MediaSessionLegacyHelper.sInstance
| Static field: android.text.TextLine.sCached
| Thread:FinalizerWatchdogDaemon (always)
| Thread:main (always)
| Thread:LeakCanary-Heap-Dump (always)
| Class:java.lang.ref.WeakReference (always)
| Class:java.lang.ref.SoftReference (always)
| Class:java.lang.ref.PhantomReference (always)
| Class:java.lang.ref.Finalizer (always)
| Class:java.lang.ref.FinalizerReference (always)

Expected Results:

  • What did you expect to happen?

No leak at all

Additional information

Leak Canary 1.4

@javmarina
Copy link
Author

I also have a heap dump so tell me if you need it

@samtstern
Copy link
Contributor

@javmarina thanks for this report! We clearly need to do a run through with LeakCanary before the next major release, this is not the first report we've had.

@javmarina
Copy link
Author

Thank you so much!
I know these leaks are not terrible issues but it's nice to give help where possible and see how this library gets better every day.

@amandle
Copy link
Contributor

amandle commented Sep 30, 2016

This should be resolved by #334, closing the issue

@amandle amandle closed this as completed Sep 30, 2016
@javmarina
Copy link
Author

Thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants