Skip to content

GitLab

  • Menu
Projects Groups Snippets
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in / Register
  • briar briar
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 779
    • Issues 779
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 15
    • Merge requests 15
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Monitor
    • Monitor
    • Incidents
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Wiki
    • Wiki
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • briar
  • briarbriar
  • Issues
  • #1643
Closed
Open
Created Oct 28, 2019 by Torsten Grote@groteOwner

Possible Controller Memory Leaks

Not sure I understand these traces correctly, but they seem to indicate that our controllers are leaking their listeners?

019-10-28 15:47:18.340 D/LeakCanary: ┬
2019-10-28 15:47:18.340 D/LeakCanary: ├─ android.view.inputmethod.InputMethodManager
2019-10-28 15:47:18.340 D/LeakCanary: │    Leaking: NO (InputMethodManager↓ is not leaking and a class is never leaking)
2019-10-28 15:47:18.341 D/LeakCanary: │    GC Root: System class
2019-10-28 15:47:18.341 D/LeakCanary: │    ↓ static InputMethodManager.sInstance
2019-10-28 15:47:18.341 D/LeakCanary: ├─ android.view.inputmethod.InputMethodManager
2019-10-28 15:47:18.341 D/LeakCanary: │    Leaking: NO (FabSpeedDial↓ is not leaking and InputMethodManager is a singleton)
2019-10-28 15:47:18.341 D/LeakCanary: │    ↓ InputMethodManager.mNextServedView
2019-10-28 15:47:18.341 D/LeakCanary: ├─ io.github.kobakei.materialfabspeeddial.FabSpeedDial
2019-10-28 15:47:18.341 D/LeakCanary: │    Leaking: NO (NavDrawerActivity↓ is not leaking and View attached)
2019-10-28 15:47:18.341 D/LeakCanary: │    mContext instance of org.briarproject.briar.android.navdrawer.NavDrawerActivity with mDestroyed = false
2019-10-28 15:47:18.341 D/LeakCanary: │    View.parent androidx.coordinatorlayout.widget.CoordinatorLayout attached as well
2019-10-28 15:47:18.341 D/LeakCanary: │    View#mParent is set
2019-10-28 15:47:18.341 D/LeakCanary: │    View#mAttachInfo is not null (view attached)
2019-10-28 15:47:18.341 D/LeakCanary: │    View.mWindowAttachCount = 1
2019-10-28 15:47:18.341 D/LeakCanary: │    ↓ FabSpeedDial.mContext
2019-10-28 15:47:18.341 D/LeakCanary: ├─ org.briarproject.briar.android.navdrawer.NavDrawerActivity
2019-10-28 15:47:18.341 D/LeakCanary: │    Leaking: NO (Activity#mDestroyed is false)
2019-10-28 15:47:18.341 D/LeakCanary: │    ↓ NavDrawerActivity.activityComponent
2019-10-28 15:47:18.341 D/LeakCanary: │                        ~~~~~~~~~~~~~~~~~
2019-10-28 15:47:18.341 D/LeakCanary: ├─ org.briarproject.briar.android.activity.DaggerActivityComponent
2019-10-28 15:47:18.341 D/LeakCanary: │    Leaking: UNKNOWN
2019-10-28 15:47:18.341 D/LeakCanary: │    ↓ DaggerActivityComponent.provideFeedControllerProvider
2019-10-28 15:47:18.341 D/LeakCanary: │                              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2019-10-28 15:47:18.341 D/LeakCanary: ├─ dagger.internal.DoubleCheck
2019-10-28 15:47:18.341 D/LeakCanary: │    Leaking: UNKNOWN
2019-10-28 15:47:18.341 D/LeakCanary: │    ↓ DoubleCheck.instance
2019-10-28 15:47:18.341 D/LeakCanary: │                  ~~~~~~~~
2019-10-28 15:47:18.341 D/LeakCanary: ├─ org.briarproject.briar.android.blog.FeedControllerImpl
2019-10-28 15:47:18.341 D/LeakCanary: │    Leaking: UNKNOWN
2019-10-28 15:47:18.341 D/LeakCanary: │    ↓ FeedControllerImpl.listener
2019-10-28 15:47:18.341 D/LeakCanary: │                         ~~~~~~~~
2019-10-28 15:47:18.341 D/LeakCanary: ╰→ org.briarproject.briar.android.blog.FeedFragment
2019-10-28 15:47:18.341 D/LeakCanary: ​     Leaking: YES (Fragment#mFragmentManager is null and ObjectWatcher was watching this)
2019-10-28 15:47:18.341 D/LeakCanary: ​     key = a5208355-72cd-4f49-80f3-3f6684261091
2019-10-28 15:47:18.341 D/LeakCanary: ​     watchDurationMillis = 2266
2019-10-28 15:47:18.341 D/LeakCanary: ​     retainedDurationMillis = -1
2019-10-28 15:47:18.341 D/LeakCanary: , retainedHeapByteSize=2548), ApplicationLeak(className=org.briarproject.briar.android.privategroup.list.GroupListFragment, leakTrace=
2019-10-28 15:47:18.341 D/LeakCanary: ┬
2019-10-28 15:47:18.341 D/LeakCanary: ├─ android.view.inputmethod.InputMethodManager
2019-10-28 15:47:18.341 D/LeakCanary: │    Leaking: NO (InputMethodManager↓ is not leaking and a class is never leaking)
2019-10-28 15:47:18.341 D/LeakCanary: │    GC Root: System class
2019-10-28 15:47:18.341 D/LeakCanary: │    ↓ static InputMethodManager.sInstance
2019-10-28 15:47:18.341 D/LeakCanary: ├─ android.view.inputmethod.InputMethodManager
2019-10-28 15:47:18.341 D/LeakCanary: │    Leaking: NO (FabSpeedDial↓ is not leaking and InputMethodManager is a singleton)
2019-10-28 15:47:18.341 D/LeakCanary: │    ↓ InputMethodManager.mNextServedView
2019-10-28 15:47:18.341 D/LeakCanary: ├─ io.github.kobakei.materialfabspeeddial.FabSpeedDial
2019-10-28 15:47:18.341 D/LeakCanary: │    Leaking: NO (NavDrawerActivity↓ is not leaking and View attached)
2019-10-28 15:47:18.341 D/LeakCanary: │    mContext instance of org.briarproject.briar.android.navdrawer.NavDrawerActivity with mDestroyed = false
2019-10-28 15:47:18.341 D/LeakCanary: │    View.parent androidx.coordinatorlayout.widget.CoordinatorLayout attached as well
2019-10-28 15:47:18.341 D/LeakCanary: │    View#mParent is set
2019-10-28 15:47:18.341 D/LeakCanary: │    View#mAttachInfo is not null (view attached)
2019-10-28 15:47:18.341 D/LeakCanary: │    View.mWindowAttachCount = 1
2019-10-28 15:47:18.341 D/LeakCanary: │    ↓ FabSpeedDial.mContext
2019-10-28 15:47:18.341 D/LeakCanary: ├─ org.briarproject.briar.android.navdrawer.NavDrawerActivity
2019-10-28 15:47:18.341 D/LeakCanary: │    Leaking: NO (Activity#mDestroyed is false)
2019-10-28 15:47:18.341 D/LeakCanary: │    ↓ NavDrawerActivity.activityComponent
2019-10-28 15:47:18.341 D/LeakCanary: │                        ~~~~~~~~~~~~~~~~~
2019-10-28 15:47:18.341 D/LeakCanary: ├─ org.briarproject.briar.android.activity.DaggerActivityComponent
2019-10-28 15:47:18.341 D/LeakCanary: │    Leaking: UNKNOWN
2019-10-28 15:47:18.341 D/LeakCanary: │    ↓ DaggerActivityComponent.provideGroupListControllerProvider
2019-10-28 15:47:18.341 D/LeakCanary: │                              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2019-10-28 15:47:18.341 D/LeakCanary: ├─ dagger.internal.DoubleCheck
2019-10-28 15:47:18.341 D/LeakCanary: │    Leaking: UNKNOWN
2019-10-28 15:47:18.341 D/LeakCanary: │    ↓ DoubleCheck.instance
2019-10-28 15:47:18.341 D/LeakCanary: │                  ~~~~~~~~
2019-10-28 15:47:18.341 D/LeakCanary: ├─ org.briarproject.briar.android.privategroup.list.GroupListControllerImpl
2019-10-28 15:47:18.341 D/LeakCanary: │    Leaking: UNKNOWN
2019-10-28 15:47:18.341 D/LeakCanary: │    ↓ GroupListControllerImpl.listener
2019-10-28 15:47:18.341 D/LeakCanary: │                              ~~~~~~~~
2019-10-28 15:47:18.341 D/LeakCanary: ╰→ org.briarproject.briar.android.privategroup.list.GroupListFragment
2019-10-28 15:47:18.341 D/LeakCanary: ​     Leaking: YES (Fragment#mFragmentManager is null and ObjectWatcher was watching this)
2019-10-28 15:47:18.341 D/LeakCanary: ​     key = dd89f2de-3b6e-40e3-9d63-2484dea5702a
2019-10-28 15:47:18.341 D/LeakCanary: ​     watchDurationMillis = 30199
2019-10-28 15:47:18.341 D/LeakCanary: ​     retainedDurationMillis = 25198
2019-10-28 15:47:18.341 D/LeakCanary: , retainedHeapByteSize=181665)], libraryLeaks=[])
Assignee
Assign to
Time tracking