[LeakScope] 22 Android lifecycle/memory violations detected #72

Description

LeakScope: Android Lifecycle & Memory Leak Violations

About this report: This issue was automatically generated by LeakScope, a static analysis tool for Android lifecycle violations and memory leaks built on the Soot framework. This is part of an ongoing academic research study targeting ICSE 2027. No immediate action is required — we would greatly appreciate your feedback on whether these findings are accurate.

Summary

LeakScope detected 22 potential issue(s) across 2 detector type(s):

SeverityCount
🔴 High16
🟡 Medium0
🟢 Low (improvement opportunity)6
DetectorCountSeverityDescription
FragmentViewFieldRetentionLeak16🔴 HighFragment stores View references in instance fields not cleared in onDestroyView()
ViewBindingOpportunity6🟢 LowManual findViewById() calls — ViewBinding migration opportunity

Detailed Findings

🔴 FragmentViewFieldRetentionLeak

Fragment stores View references in instance fields not cleared in onDestroyView()

Finding #1StatusIndicatorFragment

Fragment View Field Retention Leak Detected
Class: com.cometchat.javasampleapp.fragments.shared.views.StatusIndicatorFragment
Issue:
- Fragment stores View references in instance fields
- These fields are not cleared when the view is destroyed
- onDestroyView() is missing
Leaked Fields:
• parentView : android.widget.LinearLayout (assigned in onCreateView)
Why this is dangerous:
- Fragment views are destroyed/recreated on config changes
- Retained View references prevent garbage collection
- Leaked Views hold references to Activity Context
- Can cause OutOfMemoryError with repeated Fragment transactions
Recommended Fix:
Override onDestroyView() and clear all View/Binding fields:
@Override
public void onDestroyView() {
super.onDestroyView();
parentView = null;
}

Finding #2LocalizeFragment

Fragment View Field Retention Leak Detected
Class: com.cometchat.javasampleapp.fragments.shared.resources.LocalizeFragment
Issue:
- Fragment stores View references in instance fields
- These fields are not cleared when the view is destroyed
- onDestroyView() is missing
Leaked Fields:
• parentView : android.widget.LinearLayout (assigned in onCreateView)
Why this is dangerous:
- Fragment views are destroyed/recreated on config changes
- Retained View references prevent garbage collection
- Leaked Views hold references to Activity Context
- Can cause OutOfMemoryError with repeated Fragment transactions
Recommended Fix:
Override onDestroyView() and clear all View/Binding fields:
@Override
public void onDestroyView() {
super.onDestroyView();
parentView = null;
}

Finding #3SchedulerBubbleFragment

Fragment View Field Retention Leak Detected
Class: com.cometchat.javasampleapp.fragments.shared.views.SchedulerBubbleFragment
Issue:
- Fragment stores View references in instance fields
- These fields are not cleared when the view is destroyed
- onDestroyView() is missing
Leaked Fields:
• schedulerBubble : com.cometchat.chatuikit.shared.views.CometChatSchedulerBubble.CometChatSchedulerBubble (assigned in onCreateView)
• cardView : com.google.android.material.card.MaterialCardView (assigned in onCreateView)
Why this is dangerous:
- Fragment views are destroyed/recreated on config changes
- Retained View references prevent garbage collection
- Leaked Views hold references to Activity Context
- Can cause OutOfMemoryError with repeated Fragment transactions
Recommended Fix:
Override onDestroyView() and clear all View/Binding fields:
@Override
public void onDestroyView() {
super.onDestroyView();
schedulerBubble = null;
cardView = null;
}

Finding #4ListItemFragment

Fragment View Field Retention Leak Detected
Class: com.cometchat.javasampleapp.fragments.shared.views.ListItemFragment
Issue:
- Fragment stores View references in instance fields
- These fields are not cleared when the view is destroyed
- onDestroyView() is missing
Leaked Fields:
• parentView : android.widget.LinearLayout (assigned in onCreateView)
Why this is dangerous:
- Fragment views are destroyed/recreated on config changes
- Retained View references prevent garbage collection
- Leaked Views hold references to Activity Context
- Can cause OutOfMemoryError with repeated Fragment transactions
Recommended Fix:
Override onDestroyView() and clear all View/Binding fields:
@Override
public void onDestroyView() {
super.onDestroyView();
parentView = null;
}

Finding #5AvatarFragment

Fragment View Field Retention Leak Detected
Class: com.cometchat.javasampleapp.fragments.shared.views.AvatarFragment
Issue:
- Fragment stores View references in instance fields
- These fields are not cleared when the view is destroyed
- onDestroyView() is missing
Leaked Fields:
• avatar : com.cometchat.chatuikit.shared.views.CometChatAvatar.CometChatAvatar (assigned in onCreateView)
• parentView : android.widget.LinearLayout (assigned in onCreateView)
• cornerRadiusLayout : com.google.android.material.textfield.TextInputLayout (assigned in onCreateView)
Why this is dangerous:
- Fragment views are destroyed/recreated on config changes
- Retained View references prevent garbage collection
- Leaked Views hold references to Activity Context
- Can cause OutOfMemoryError with repeated Fragment transactions
Recommended Fix:
Override onDestroyView() and clear all View/Binding fields:
@Override
public void onDestroyView() {
super.onDestroyView();
avatar = null;
… (truncated for brevity)

Finding #6CallLogHistoryFragment

Fragment View Field Retention Leak Detected
Class: com.cometchat.javasampleapp.fragments.calls.CallLogHistoryFragment
Issue:
- Fragment stores View references in instance fields
- These fields are not cleared when the view is destroyed
- onDestroyView() is missing
Leaked Fields:
• cometChatCallLogHistory : com.cometchat.chatuikit.calls.callhistory.CometChatCallLogHistory (assigned in onCreateView)
Why this is dangerous:
- Fragment views are destroyed/recreated on config changes
- Retained View references prevent garbage collection
- Leaked Views hold references to Activity Context
- Can cause OutOfMemoryError with repeated Fragment transactions
Recommended Fix:
Override onDestroyView() and clear all View/Binding fields:
@Override
public void onDestroyView() {
super.onDestroyView();
cometChatCallLogHistory = null;
}

Finding #7CallLogParticipantsFragment

Fragment View Field Retention Leak Detected
Class: com.cometchat.javasampleapp.fragments.calls.CallLogParticipantsFragment
Issue:
- Fragment stores View references in instance fields
- These fields are not cleared when the view is destroyed
- onDestroyView() is missing
Leaked Fields:
• cometChatCallLogParticipants : com.cometchat.chatuikit.calls.callparticipants.CometChatCallLogParticipants (assigned in onCreateView)
Why this is dangerous:
- Fragment views are destroyed/recreated on config changes
- Retained View references prevent garbage collection
- Leaked Views hold references to Activity Context
- Can cause OutOfMemoryError with repeated Fragment transactions
Recommended Fix:
Override onDestroyView() and clear all View/Binding fields:
@Override
public void onDestroyView() {
super.onDestroyView();
cometChatCallLogParticipants = null;
}

Finding #8CallLogDetailsFragment

Fragment View Field Retention Leak Detected
Class: com.cometchat.javasampleapp.fragments.calls.CallLogDetailsFragment
Issue:
- Fragment stores View references in instance fields
- These fields are not cleared when the view is destroyed
- onDestroyView() is missing
Leaked Fields:
• cometChatCallLogDetails : com.cometchat.chatuikit.calls.calldetails.CometChatCallLogDetails (assigned in onCreateView)
Why this is dangerous:
- Fragment views are destroyed/recreated on config changes
- Retained View references prevent garbage collection
- Leaked Views hold references to Activity Context
- Can cause OutOfMemoryError with repeated Fragment transactions
Recommended Fix:
Override onDestroyView() and clear all View/Binding fields:
@Override
public void onDestroyView() {
super.onDestroyView();
cometChatCallLogDetails = null;
}

Finding #9MessageReceiptFragment

Fragment View Field Retention Leak Detected
Class: com.cometchat.javasampleapp.fragments.shared.views.MessageReceiptFragment
Issue:
- Fragment stores View references in instance fields
- These fields are not cleared when the view is destroyed
- onDestroyView() is missing
Leaked Fields:
• messageReceiptRead : com.cometchat.chatuikit.shared.views.CometChatReceipt.CometChatReceipt (assigned in onCreateView)
• parentView : android.widget.LinearLayout (assigned in onCreateView)
• messageReceiptDeliver : com.cometchat.chatuikit.shared.views.CometChatReceipt.CometChatReceipt (assigned in onCreateView)
• messageReceiptSent : com.cometchat.chatuikit.shared.views.CometChatReceipt.CometChatReceipt (assigned in onCreateView)
• messageReceiptProgress : com.cometchat.chatuikit.shared.views.CometChatReceipt.CometChatReceipt (assigned in onCreateView)
• messageReceiptError : com.cometchat.chatuikit.shared.views.CometChatReceipt.CometChatReceipt (assigned in onCreateView)
Wh
… (truncated for brevity)

Finding #10CallLogRecordingFragment

Fragment View Field Retention Leak Detected
Class: com.cometchat.javasampleapp.fragments.calls.CallLogRecordingFragment
Issue:
- Fragment stores View references in instance fields
- These fields are not cleared when the view is destroyed
- onDestroyView() is missing
Leaked Fields:
• cometChatCallLogRecordings : com.cometchat.chatuikit.calls.callrecordings.CometChatCallLogRecordings (assigned in onCreateView)
Why this is dangerous:
- Fragment views are destroyed/recreated on config changes
- Retained View references prevent garbage collection
- Leaked Views hold references to Activity Context
- Can cause OutOfMemoryError with repeated Fragment transactions
Recommended Fix:
Override onDestroyView() and clear all View/Binding fields:
@Override
public void onDestroyView() {
super.onDestroyView();
cometChatCallLogRecordings = null;
}

Finding #11BadgeCountFragment

Fragment View Field Retention Leak Detected
Class: com.cometchat.javasampleapp.fragments.shared.views.BadgeCountFragment
Issue:
- Fragment stores View references in instance fields
- These fields are not cleared when the view is destroyed
- onDestroyView() is missing
Leaked Fields:
• badgeCountLayout : com.google.android.material.textfield.TextInputLayout (assigned in onCreateView)
• badgeCountEdt : com.google.android.material.textfield.TextInputEditText (assigned in onCreateView)
• parentView : android.widget.LinearLayout (assigned in onCreateView)
Why this is dangerous:
- Fragment views are destroyed/recreated on config changes
- Retained View references prevent garbage collection
- Leaked Views hold references to Activity Context
- Can cause OutOfMemoryError with repeated Fragment transactions
Recommended Fix:
Override onDestroyView() and clear all View/Binding fields:
@Override
public void onDestroyView() {
super.onDestroyView();
badgeCountLayout = null
… (truncated for brevity)

Finding #12FormBubbleFragment

Fragment View Field Retention Leak Detected
Class: com.cometchat.javasampleapp.fragments.shared.views.FormBubbleFragment
Issue:
- Fragment stores View references in instance fields
- These fields are not cleared when the view is destroyed
- onDestroyView() is missing
Leaked Fields:
• parentLayout : android.widget.LinearLayout (assigned in onCreateView)
• formBubble : com.cometchat.chatuikit.shared.views.CometChatFormbubble.CometChatFormBubble (assigned in onCreateView)
Why this is dangerous:
- Fragment views are destroyed/recreated on config changes
- Retained View references prevent garbage collection
- Leaked Views hold references to Activity Context
- Can cause OutOfMemoryError with repeated Fragment transactions
Recommended Fix:
Override onDestroyView() and clear all View/Binding fields:
@Override
public void onDestroyView() {
super.onDestroyView();
parentLayout = null;
formBubble = null;
}

Finding #13MessageComposerFragment

Fragment View Field Retention Leak Detected
Class: com.cometchat.javasampleapp.fragments.messages.MessageComposerFragment
Issue:
- Fragment stores View references in instance fields
- These fields are not cleared when the view is destroyed
- onDestroyView() is missing
Leaked Fields:
• parentView : android.widget.RelativeLayout (assigned in onCreateView)
Why this is dangerous:
- Fragment views are destroyed/recreated on config changes
- Retained View references prevent garbage collection
- Leaked Views hold references to Activity Context
- Can cause OutOfMemoryError with repeated Fragment transactions
Recommended Fix:
Override onDestroyView() and clear all View/Binding fields:
@Override
public void onDestroyView() {
super.onDestroyView();
parentView = null;
}

Finding #14SoundManagerFragment

Fragment View Field Retention Leak Detected
Class: com.cometchat.javasampleapp.fragments.shared.resources.SoundManagerFragment
Issue:
- Fragment stores View references in instance fields
- These fields are not cleared when the view is destroyed
- onDestroyView() is missing
Leaked Fields:
• parentView : android.widget.LinearLayout (assigned in onCreateView)
Why this is dangerous:
- Fragment views are destroyed/recreated on config changes
- Retained View references prevent garbage collection
- Leaked Views hold references to Activity Context
- Can cause OutOfMemoryError with repeated Fragment transactions
Recommended Fix:
Override onDestroyView() and clear all View/Binding fields:
@Override
public void onDestroyView() {
super.onDestroyView();
parentView = null;
}

Finding #15ThemeFragment

Fragment View Field Retention Leak Detected
Class: com.cometchat.javasampleapp.fragments.shared.resources.ThemeFragment
Issue:
- Fragment stores View references in instance fields
- These fields are not cleared when the view is destroyed
- onDestroyView() is missing
Leaked Fields:
• parentView : android.widget.LinearLayout (assigned in onCreateView)
Why this is dangerous:
- Fragment views are destroyed/recreated on config changes
- Retained View references prevent garbage collection
- Leaked Views hold references to Activity Context
- Can cause OutOfMemoryError with repeated Fragment transactions
Recommended Fix:
Override onDestroyView() and clear all View/Binding fields:
@Override
public void onDestroyView() {
super.onDestroyView();
parentView = null;
}

Finding #16CardBubbleFragment

Fragment View Field Retention Leak Detected
Class: com.cometchat.javasampleapp.fragments.shared.views.CardBubbleFragment
Issue:
- Fragment stores View references in instance fields
- These fields are not cleared when the view is destroyed
- onDestroyView() is missing
Leaked Fields:
• parentLayout : android.widget.LinearLayout (assigned in onCreateView)
• cardBubble : com.cometchat.chatuikit.shared.views.CometChatCardBubble.CometChatCardBubble (assigned in onCreateView)
• scrollView : android.widget.ScrollView (assigned in onCreateView)
Why this is dangerous:
- Fragment views are destroyed/recreated on config changes
- Retained View references prevent garbage collection
- Leaked Views hold references to Activity Context
- Can cause OutOfMemoryError with repeated Fragment transactions
Recommended Fix:
Override onDestroyView() and clear all View/Binding fields:
@Override
public void onDestroyView() {
super.onDestroyView();
parentLayout = null;
cardBubble =
… (truncated for brevity)

🟢 ViewBindingOpportunity

Manual findViewById() calls — ViewBinding migration opportunity

Finding #17CreateUserActivity

View Binding Migration Opportunity
Class: com.cometchat.javasampleapp.activity.CreateUserActivity
Type: Activity
Current Pattern: Manual view lookup
findViewById() Calls:
• findViewById in setUpUI
• findViewById in setUpUI
• findViewById in setUpUI
• findViewById in setUpUI
• findViewById in onCreate
• findViewById in onCreate
• findViewById in onCreate
• findViewById in onCreate
• findViewById in onCreate
Benefits of View Binding:
- Eliminates boilerplate findViewById() calls
- Compile-time type safety for view references
- Reduced null pointer exceptions
- Cleaner, more maintainable code
Note: This is a code modernization suggestion, not a memory leak

Finding #18LoginActivity

View Binding Migration Opportunity
Class: com.cometchat.javasampleapp.activity.LoginActivity
Type: Activity
Current Pattern: Manual view lookup
findViewById() Calls:
• findViewById in setUpUI
• findViewById in setUpUI
• findViewById in setUpUI
• findViewById in setUpUI
• findViewById in lambda$onCreate$1$com-cometchat-javasampleapp-activity-LoginActivity
• findViewById in onCreate
• findViewById in onCreate
• findViewById in onCreate
• findViewById in onCreate
• findViewById in onCreate
Benefits of View Binding:
- Eliminates boilerplate findViewById() calls
- Compile-time type safety for view references
- Reduced null pointer exceptions
- Cleaner, more maintainable code
Note: This is a code modernization suggestion, not a memory leak

Finding #19ComponentListActivity

View Binding Migration Opportunity
Class: com.cometchat.javasampleapp.activity.ComponentListActivity
Type: Activity
Current Pattern: Manual view lookup
findViewById() Calls:
• findViewById in setUpUI
• findViewById in setUpUI
• findViewById in setUpUI
• findViewById in setUpUI
• findViewById in setUpUI
• findViewById in setUpUI
• findViewById in setUpUI
• findViewById in setUpUI
• findViewById in setUpUI
• findViewById in setUpUI
• findViewById in setUpUI
• findViewById in setUpUI
• findViewById in setUpUI
• findViewById in setUpUI
• findViewById in setUpUI
• findViewById in setUpUI
• findViewById in setUpUI
• findViewById in setUpUI
• findViewById in setUpUI
• findViewById in setUpUI
• findViewById in setUpUI
• findViewById in setUpUI
• findViewById in setUpUI
• findViewById in setUpUI
• findViewById in setUpUI
• findViewById in setUpUI
• findViewById in setUpUI
• findViewBy
… (truncated for brevity)

Finding #20HomeActivity

View Binding Migration Opportunity
Class: com.cometchat.javasampleapp.activity.HomeActivity
Type: Activity
Current Pattern: Manual view lookup
findViewById() Calls:
• findViewById in onCreate
• findViewById in onCreate
• findViewById in onCreate
• findViewById in onCreate
• findViewById in onCreate
• findViewById in onCreate
• findViewById in onCreate
• findViewById in onCreate
• findViewById in onCreate
• findViewById in onCreate
Benefits of View Binding:
- Eliminates boilerplate findViewById() calls
- Compile-time type safety for view references
- Reduced null pointer exceptions
- Cleaner, more maintainable code
Note: This is a code modernization suggestion, not a memory leak

Finding #21MainActivity

View Binding Migration Opportunity
Class: com.cometchat.javasampleapp.activity.MainActivity
Type: Activity
Current Pattern: Manual view lookup
findViewById() Calls:
• findViewById in lambda$onCreate$1$com-cometchat-javasampleapp-activity-MainActivity
• findViewById in lambda$onCreate$2$com-cometchat-javasampleapp-activity-MainActivity
• findViewById in lambda$onCreate$3$com-cometchat-javasampleapp-activity-MainActivity
• findViewById in lambda$onCreate$4$com-cometchat-javasampleapp-activity-MainActivity
• findViewById in onCreate
• findViewById in onCreate
• findViewById in onCreate
• findViewById in onCreate
• findViewById in onCreate
• findViewById in onCreate
• findViewById in onCreate
• findViewById in onCreate
• findViewById in onCreate
• findViewById in onCreate
• findViewById in onCreate
• findViewById in onCreate
• findViewById in onCreate
• findViewById in onCreate
• findViewById in onCreate
• find
… (truncated for brevity)

Finding #22ComponentLaunchActivity

View Binding Migration Opportunity
Class: com.cometchat.javasampleapp.activity.ComponentLaunchActivity
Type: Activity
Current Pattern: Manual view lookup
findViewById() Calls:
• findViewById in onCreate
Benefits of View Binding:
- Eliminates boilerplate findViewById() calls
- Compile-time type safety for view references
- Reduced null pointer exceptions
- Cleaner, more maintainable code
Note: This is a code modernization suggestion, not a memory leak

How to respond to this issue:

  • If a finding is a true positive: consider applying the recommended fix and closing this issue.
  • If a finding is a false positive: please leave a comment explaining why — your feedback directly improves our research.
  • If you have questions: reply here or open a discussion.

This report was generated by LeakScope as part of the ICSE 2027 research artifact. Tool analyzes compiled APKs using Soot static analysis on cometchat-sample-app-android-java.

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions

      , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
       blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
      }
      } catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
      })();
      (function(){
      try {
      var __m = "github.com";
      var __re = new RegExp('^' + "github\\.com" + '
      
      Skip to content

      [LeakScope] 22 Android lifecycle/memory violations detected #72

      Description

      LeakScope: Android Lifecycle & Memory Leak Violations

      About this report: This issue was automatically generated by LeakScope, a static analysis tool for Android lifecycle violations and memory leaks built on the Soot framework. This is part of an ongoing academic research study targeting ICSE 2027. No immediate action is required — we would greatly appreciate your feedback on whether these findings are accurate.

      Summary

      LeakScope detected 22 potential issue(s) across 2 detector type(s):

      SeverityCount
      🔴 High16
      🟡 Medium0
      🟢 Low (improvement opportunity)6
      DetectorCountSeverityDescription
      FragmentViewFieldRetentionLeak16🔴 HighFragment stores View references in instance fields not cleared in onDestroyView()
      ViewBindingOpportunity6🟢 LowManual findViewById() calls — ViewBinding migration opportunity

      Detailed Findings

      🔴 FragmentViewFieldRetentionLeak

      Fragment stores View references in instance fields not cleared in onDestroyView()

      Finding #1StatusIndicatorFragment

      Fragment View Field Retention Leak Detected
      Class: com.cometchat.javasampleapp.fragments.shared.views.StatusIndicatorFragment
      Issue:
      - Fragment stores View references in instance fields
      - These fields are not cleared when the view is destroyed
      - onDestroyView() is missing
      Leaked Fields:
      • parentView : android.widget.LinearLayout (assigned in onCreateView)
      Why this is dangerous:
      - Fragment views are destroyed/recreated on config changes
      - Retained View references prevent garbage collection
      - Leaked Views hold references to Activity Context
      - Can cause OutOfMemoryError with repeated Fragment transactions
      Recommended Fix:
      Override onDestroyView() and clear all View/Binding fields:
      @Override
      public void onDestroyView() {
      super.onDestroyView();
      parentView = null;
      }
      

      Finding #2LocalizeFragment

      Fragment View Field Retention Leak Detected
      Class: com.cometchat.javasampleapp.fragments.shared.resources.LocalizeFragment
      Issue:
      - Fragment stores View references in instance fields
      - These fields are not cleared when the view is destroyed
      - onDestroyView() is missing
      Leaked Fields:
      • parentView : android.widget.LinearLayout (assigned in onCreateView)
      Why this is dangerous:
      - Fragment views are destroyed/recreated on config changes
      - Retained View references prevent garbage collection
      - Leaked Views hold references to Activity Context
      - Can cause OutOfMemoryError with repeated Fragment transactions
      Recommended Fix:
      Override onDestroyView() and clear all View/Binding fields:
      @Override
      public void onDestroyView() {
      super.onDestroyView();
      parentView = null;
      }
      

      Finding #3SchedulerBubbleFragment

      Fragment View Field Retention Leak Detected
      Class: com.cometchat.javasampleapp.fragments.shared.views.SchedulerBubbleFragment
      Issue:
      - Fragment stores View references in instance fields
      - These fields are not cleared when the view is destroyed
      - onDestroyView() is missing
      Leaked Fields:
      • schedulerBubble : com.cometchat.chatuikit.shared.views.CometChatSchedulerBubble.CometChatSchedulerBubble (assigned in onCreateView)
      • cardView : com.google.android.material.card.MaterialCardView (assigned in onCreateView)
      Why this is dangerous:
      - Fragment views are destroyed/recreated on config changes
      - Retained View references prevent garbage collection
      - Leaked Views hold references to Activity Context
      - Can cause OutOfMemoryError with repeated Fragment transactions
      Recommended Fix:
      Override onDestroyView() and clear all View/Binding fields:
      @Override
      public void onDestroyView() {
      super.onDestroyView();
      schedulerBubble = null;
      cardView = null;
      }
      

      Finding #4ListItemFragment

      Fragment View Field Retention Leak Detected
      Class: com.cometchat.javasampleapp.fragments.shared.views.ListItemFragment
      Issue:
      - Fragment stores View references in instance fields
      - These fields are not cleared when the view is destroyed
      - onDestroyView() is missing
      Leaked Fields:
      • parentView : android.widget.LinearLayout (assigned in onCreateView)
      Why this is dangerous:
      - Fragment views are destroyed/recreated on config changes
      - Retained View references prevent garbage collection
      - Leaked Views hold references to Activity Context
      - Can cause OutOfMemoryError with repeated Fragment transactions
      Recommended Fix:
      Override onDestroyView() and clear all View/Binding fields:
      @Override
      public void onDestroyView() {
      super.onDestroyView();
      parentView = null;
      }
      

      Finding #5AvatarFragment

      Fragment View Field Retention Leak Detected
      Class: com.cometchat.javasampleapp.fragments.shared.views.AvatarFragment
      Issue:
      - Fragment stores View references in instance fields
      - These fields are not cleared when the view is destroyed
      - onDestroyView() is missing
      Leaked Fields:
      • avatar : com.cometchat.chatuikit.shared.views.CometChatAvatar.CometChatAvatar (assigned in onCreateView)
      • parentView : android.widget.LinearLayout (assigned in onCreateView)
      • cornerRadiusLayout : com.google.android.material.textfield.TextInputLayout (assigned in onCreateView)
      Why this is dangerous:
      - Fragment views are destroyed/recreated on config changes
      - Retained View references prevent garbage collection
      - Leaked Views hold references to Activity Context
      - Can cause OutOfMemoryError with repeated Fragment transactions
      Recommended Fix:
      Override onDestroyView() and clear all View/Binding fields:
      @Override
      public void onDestroyView() {
      super.onDestroyView();
      avatar = null;
      … (truncated for brevity)
      

      Finding #6CallLogHistoryFragment

      Fragment View Field Retention Leak Detected
      Class: com.cometchat.javasampleapp.fragments.calls.CallLogHistoryFragment
      Issue:
      - Fragment stores View references in instance fields
      - These fields are not cleared when the view is destroyed
      - onDestroyView() is missing
      Leaked Fields:
      • cometChatCallLogHistory : com.cometchat.chatuikit.calls.callhistory.CometChatCallLogHistory (assigned in onCreateView)
      Why this is dangerous:
      - Fragment views are destroyed/recreated on config changes
      - Retained View references prevent garbage collection
      - Leaked Views hold references to Activity Context
      - Can cause OutOfMemoryError with repeated Fragment transactions
      Recommended Fix:
      Override onDestroyView() and clear all View/Binding fields:
      @Override
      public void onDestroyView() {
      super.onDestroyView();
      cometChatCallLogHistory = null;
      }
      

      Finding #7CallLogParticipantsFragment

      Fragment View Field Retention Leak Detected
      Class: com.cometchat.javasampleapp.fragments.calls.CallLogParticipantsFragment
      Issue:
      - Fragment stores View references in instance fields
      - These fields are not cleared when the view is destroyed
      - onDestroyView() is missing
      Leaked Fields:
      • cometChatCallLogParticipants : com.cometchat.chatuikit.calls.callparticipants.CometChatCallLogParticipants (assigned in onCreateView)
      Why this is dangerous:
      - Fragment views are destroyed/recreated on config changes
      - Retained View references prevent garbage collection
      - Leaked Views hold references to Activity Context
      - Can cause OutOfMemoryError with repeated Fragment transactions
      Recommended Fix:
      Override onDestroyView() and clear all View/Binding fields:
      @Override
      public void onDestroyView() {
      super.onDestroyView();
      cometChatCallLogParticipants = null;
      }
      

      Finding #8CallLogDetailsFragment

      Fragment View Field Retention Leak Detected
      Class: com.cometchat.javasampleapp.fragments.calls.CallLogDetailsFragment
      Issue:
      - Fragment stores View references in instance fields
      - These fields are not cleared when the view is destroyed
      - onDestroyView() is missing
      Leaked Fields:
      • cometChatCallLogDetails : com.cometchat.chatuikit.calls.calldetails.CometChatCallLogDetails (assigned in onCreateView)
      Why this is dangerous:
      - Fragment views are destroyed/recreated on config changes
      - Retained View references prevent garbage collection
      - Leaked Views hold references to Activity Context
      - Can cause OutOfMemoryError with repeated Fragment transactions
      Recommended Fix:
      Override onDestroyView() and clear all View/Binding fields:
      @Override
      public void onDestroyView() {
      super.onDestroyView();
      cometChatCallLogDetails = null;
      }
      

      Finding #9MessageReceiptFragment

      Fragment View Field Retention Leak Detected
      Class: com.cometchat.javasampleapp.fragments.shared.views.MessageReceiptFragment
      Issue:
      - Fragment stores View references in instance fields
      - These fields are not cleared when the view is destroyed
      - onDestroyView() is missing
      Leaked Fields:
      • messageReceiptRead : com.cometchat.chatuikit.shared.views.CometChatReceipt.CometChatReceipt (assigned in onCreateView)
      • parentView : android.widget.LinearLayout (assigned in onCreateView)
      • messageReceiptDeliver : com.cometchat.chatuikit.shared.views.CometChatReceipt.CometChatReceipt (assigned in onCreateView)
      • messageReceiptSent : com.cometchat.chatuikit.shared.views.CometChatReceipt.CometChatReceipt (assigned in onCreateView)
      • messageReceiptProgress : com.cometchat.chatuikit.shared.views.CometChatReceipt.CometChatReceipt (assigned in onCreateView)
      • messageReceiptError : com.cometchat.chatuikit.shared.views.CometChatReceipt.CometChatReceipt (assigned in onCreateView)
      Wh
      … (truncated for brevity)
      

      Finding #10CallLogRecordingFragment

      Fragment View Field Retention Leak Detected
      Class: com.cometchat.javasampleapp.fragments.calls.CallLogRecordingFragment
      Issue:
      - Fragment stores View references in instance fields
      - These fields are not cleared when the view is destroyed
      - onDestroyView() is missing
      Leaked Fields:
      • cometChatCallLogRecordings : com.cometchat.chatuikit.calls.callrecordings.CometChatCallLogRecordings (assigned in onCreateView)
      Why this is dangerous:
      - Fragment views are destroyed/recreated on config changes
      - Retained View references prevent garbage collection
      - Leaked Views hold references to Activity Context
      - Can cause OutOfMemoryError with repeated Fragment transactions
      Recommended Fix:
      Override onDestroyView() and clear all View/Binding fields:
      @Override
      public void onDestroyView() {
      super.onDestroyView();
      cometChatCallLogRecordings = null;
      }
      

      Finding #11BadgeCountFragment

      Fragment View Field Retention Leak Detected
      Class: com.cometchat.javasampleapp.fragments.shared.views.BadgeCountFragment
      Issue:
      - Fragment stores View references in instance fields
      - These fields are not cleared when the view is destroyed
      - onDestroyView() is missing
      Leaked Fields:
      • badgeCountLayout : com.google.android.material.textfield.TextInputLayout (assigned in onCreateView)
      • badgeCountEdt : com.google.android.material.textfield.TextInputEditText (assigned in onCreateView)
      • parentView : android.widget.LinearLayout (assigned in onCreateView)
      Why this is dangerous:
      - Fragment views are destroyed/recreated on config changes
      - Retained View references prevent garbage collection
      - Leaked Views hold references to Activity Context
      - Can cause OutOfMemoryError with repeated Fragment transactions
      Recommended Fix:
      Override onDestroyView() and clear all View/Binding fields:
      @Override
      public void onDestroyView() {
      super.onDestroyView();
      badgeCountLayout = null
      … (truncated for brevity)
      

      Finding #12FormBubbleFragment

      Fragment View Field Retention Leak Detected
      Class: com.cometchat.javasampleapp.fragments.shared.views.FormBubbleFragment
      Issue:
      - Fragment stores View references in instance fields
      - These fields are not cleared when the view is destroyed
      - onDestroyView() is missing
      Leaked Fields:
      • parentLayout : android.widget.LinearLayout (assigned in onCreateView)
      • formBubble : com.cometchat.chatuikit.shared.views.CometChatFormbubble.CometChatFormBubble (assigned in onCreateView)
      Why this is dangerous:
      - Fragment views are destroyed/recreated on config changes
      - Retained View references prevent garbage collection
      - Leaked Views hold references to Activity Context
      - Can cause OutOfMemoryError with repeated Fragment transactions
      Recommended Fix:
      Override onDestroyView() and clear all View/Binding fields:
      @Override
      public void onDestroyView() {
      super.onDestroyView();
      parentLayout = null;
      formBubble = null;
      }
      

      Finding #13MessageComposerFragment

      Fragment View Field Retention Leak Detected
      Class: com.cometchat.javasampleapp.fragments.messages.MessageComposerFragment
      Issue:
      - Fragment stores View references in instance fields
      - These fields are not cleared when the view is destroyed
      - onDestroyView() is missing
      Leaked Fields:
      • parentView : android.widget.RelativeLayout (assigned in onCreateView)
      Why this is dangerous:
      - Fragment views are destroyed/recreated on config changes
      - Retained View references prevent garbage collection
      - Leaked Views hold references to Activity Context
      - Can cause OutOfMemoryError with repeated Fragment transactions
      Recommended Fix:
      Override onDestroyView() and clear all View/Binding fields:
      @Override
      public void onDestroyView() {
      super.onDestroyView();
      parentView = null;
      }
      

      Finding #14SoundManagerFragment

      Fragment View Field Retention Leak Detected
      Class: com.cometchat.javasampleapp.fragments.shared.resources.SoundManagerFragment
      Issue:
      - Fragment stores View references in instance fields
      - These fields are not cleared when the view is destroyed
      - onDestroyView() is missing
      Leaked Fields:
      • parentView : android.widget.LinearLayout (assigned in onCreateView)
      Why this is dangerous:
      - Fragment views are destroyed/recreated on config changes
      - Retained View references prevent garbage collection
      - Leaked Views hold references to Activity Context
      - Can cause OutOfMemoryError with repeated Fragment transactions
      Recommended Fix:
      Override onDestroyView() and clear all View/Binding fields:
      @Override
      public void onDestroyView() {
      super.onDestroyView();
      parentView = null;
      }
      

      Finding #15ThemeFragment

      Fragment View Field Retention Leak Detected
      Class: com.cometchat.javasampleapp.fragments.shared.resources.ThemeFragment
      Issue:
      - Fragment stores View references in instance fields
      - These fields are not cleared when the view is destroyed
      - onDestroyView() is missing
      Leaked Fields:
      • parentView : android.widget.LinearLayout (assigned in onCreateView)
      Why this is dangerous:
      - Fragment views are destroyed/recreated on config changes
      - Retained View references prevent garbage collection
      - Leaked Views hold references to Activity Context
      - Can cause OutOfMemoryError with repeated Fragment transactions
      Recommended Fix:
      Override onDestroyView() and clear all View/Binding fields:
      @Override
      public void onDestroyView() {
      super.onDestroyView();
      parentView = null;
      }
      

      Finding #16CardBubbleFragment

      Fragment View Field Retention Leak Detected
      Class: com.cometchat.javasampleapp.fragments.shared.views.CardBubbleFragment
      Issue:
      - Fragment stores View references in instance fields
      - These fields are not cleared when the view is destroyed
      - onDestroyView() is missing
      Leaked Fields:
      • parentLayout : android.widget.LinearLayout (assigned in onCreateView)
      • cardBubble : com.cometchat.chatuikit.shared.views.CometChatCardBubble.CometChatCardBubble (assigned in onCreateView)
      • scrollView : android.widget.ScrollView (assigned in onCreateView)
      Why this is dangerous:
      - Fragment views are destroyed/recreated on config changes
      - Retained View references prevent garbage collection
      - Leaked Views hold references to Activity Context
      - Can cause OutOfMemoryError with repeated Fragment transactions
      Recommended Fix:
      Override onDestroyView() and clear all View/Binding fields:
      @Override
      public void onDestroyView() {
      super.onDestroyView();
      parentLayout = null;
      cardBubble =
      … (truncated for brevity)
      

      🟢 ViewBindingOpportunity

      Manual findViewById() calls — ViewBinding migration opportunity

      Finding #17CreateUserActivity

      View Binding Migration Opportunity
      Class: com.cometchat.javasampleapp.activity.CreateUserActivity
      Type: Activity
      Current Pattern: Manual view lookup
      findViewById() Calls:
      • findViewById in setUpUI
      • findViewById in setUpUI
      • findViewById in setUpUI
      • findViewById in setUpUI
      • findViewById in onCreate
      • findViewById in onCreate
      • findViewById in onCreate
      • findViewById in onCreate
      • findViewById in onCreate
      Benefits of View Binding:
      - Eliminates boilerplate findViewById() calls
      - Compile-time type safety for view references
      - Reduced null pointer exceptions
      - Cleaner, more maintainable code
      Note: This is a code modernization suggestion, not a memory leak
      

      Finding #18LoginActivity

      View Binding Migration Opportunity
      Class: com.cometchat.javasampleapp.activity.LoginActivity
      Type: Activity
      Current Pattern: Manual view lookup
      findViewById() Calls:
      • findViewById in setUpUI
      • findViewById in setUpUI
      • findViewById in setUpUI
      • findViewById in setUpUI
      • findViewById in lambda$onCreate$1$com-cometchat-javasampleapp-activity-LoginActivity
      • findViewById in onCreate
      • findViewById in onCreate
      • findViewById in onCreate
      • findViewById in onCreate
      • findViewById in onCreate
      Benefits of View Binding:
      - Eliminates boilerplate findViewById() calls
      - Compile-time type safety for view references
      - Reduced null pointer exceptions
      - Cleaner, more maintainable code
      Note: This is a code modernization suggestion, not a memory leak
      

      Finding #19ComponentListActivity

      View Binding Migration Opportunity
      Class: com.cometchat.javasampleapp.activity.ComponentListActivity
      Type: Activity
      Current Pattern: Manual view lookup
      findViewById() Calls:
      • findViewById in setUpUI
      • findViewById in setUpUI
      • findViewById in setUpUI
      • findViewById in setUpUI
      • findViewById in setUpUI
      • findViewById in setUpUI
      • findViewById in setUpUI
      • findViewById in setUpUI
      • findViewById in setUpUI
      • findViewById in setUpUI
      • findViewById in setUpUI
      • findViewById in setUpUI
      • findViewById in setUpUI
      • findViewById in setUpUI
      • findViewById in setUpUI
      • findViewById in setUpUI
      • findViewById in setUpUI
      • findViewById in setUpUI
      • findViewById in setUpUI
      • findViewById in setUpUI
      • findViewById in setUpUI
      • findViewById in setUpUI
      • findViewById in setUpUI
      • findViewById in setUpUI
      • findViewById in setUpUI
      • findViewById in setUpUI
      • findViewById in setUpUI
      • findViewBy
      … (truncated for brevity)
      

      Finding #20HomeActivity

      View Binding Migration Opportunity
      Class: com.cometchat.javasampleapp.activity.HomeActivity
      Type: Activity
      Current Pattern: Manual view lookup
      findViewById() Calls:
      • findViewById in onCreate
      • findViewById in onCreate
      • findViewById in onCreate
      • findViewById in onCreate
      • findViewById in onCreate
      • findViewById in onCreate
      • findViewById in onCreate
      • findViewById in onCreate
      • findViewById in onCreate
      • findViewById in onCreate
      Benefits of View Binding:
      - Eliminates boilerplate findViewById() calls
      - Compile-time type safety for view references
      - Reduced null pointer exceptions
      - Cleaner, more maintainable code
      Note: This is a code modernization suggestion, not a memory leak
      

      Finding #21MainActivity

      View Binding Migration Opportunity
      Class: com.cometchat.javasampleapp.activity.MainActivity
      Type: Activity
      Current Pattern: Manual view lookup
      findViewById() Calls:
      • findViewById in lambda$onCreate$1$com-cometchat-javasampleapp-activity-MainActivity
      • findViewById in lambda$onCreate$2$com-cometchat-javasampleapp-activity-MainActivity
      • findViewById in lambda$onCreate$3$com-cometchat-javasampleapp-activity-MainActivity
      • findViewById in lambda$onCreate$4$com-cometchat-javasampleapp-activity-MainActivity
      • findViewById in onCreate
      • findViewById in onCreate
      • findViewById in onCreate
      • findViewById in onCreate
      • findViewById in onCreate
      • findViewById in onCreate
      • findViewById in onCreate
      • findViewById in onCreate
      • findViewById in onCreate
      • findViewById in onCreate
      • findViewById in onCreate
      • findViewById in onCreate
      • findViewById in onCreate
      • findViewById in onCreate
      • findViewById in onCreate
      • find
      … (truncated for brevity)
      

      Finding #22ComponentLaunchActivity

      View Binding Migration Opportunity
      Class: com.cometchat.javasampleapp.activity.ComponentLaunchActivity
      Type: Activity
      Current Pattern: Manual view lookup
      findViewById() Calls:
      • findViewById in onCreate
      Benefits of View Binding:
      - Eliminates boilerplate findViewById() calls
      - Compile-time type safety for view references
      - Reduced null pointer exceptions
      - Cleaner, more maintainable code
      Note: This is a code modernization suggestion, not a memory leak
      

      How to respond to this issue:

      • If a finding is a true positive: consider applying the recommended fix and closing this issue.
      • If a finding is a false positive: please leave a comment explaining why — your feedback directly improves our research.
      • If you have questions: reply here or open a discussion.

      This report was generated by LeakScope as part of the ICSE 2027 research artifact. Tool analyzes compiled APKs using Soot static analysis on cometchat-sample-app-android-java.

      Activity

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

      Metadata

      Metadata

      Assignees

      No one assigned

        Labels

        No labels
        No labels

        Type

        No type

        Projects

        No projects

          Milestone

          No milestone

          Relationships

          None yet

          Development

          No branches or pull requests

          Issue actions

          , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
          Skip to content

          [LeakScope] 22 Android lifecycle/memory violations detected #72

          Description

          LeakScope: Android Lifecycle & Memory Leak Violations

          About this report: This issue was automatically generated by LeakScope, a static analysis tool for Android lifecycle violations and memory leaks built on the Soot framework. This is part of an ongoing academic research study targeting ICSE 2027. No immediate action is required — we would greatly appreciate your feedback on whether these findings are accurate.

          Summary

          LeakScope detected 22 potential issue(s) across 2 detector type(s):

          SeverityCount
          🔴 High16
          🟡 Medium0
          🟢 Low (improvement opportunity)6
          DetectorCountSeverityDescription
          FragmentViewFieldRetentionLeak16🔴 HighFragment stores View references in instance fields not cleared in onDestroyView()
          ViewBindingOpportunity6🟢 LowManual findViewById() calls — ViewBinding migration opportunity

          Detailed Findings

          🔴 FragmentViewFieldRetentionLeak

          Fragment stores View references in instance fields not cleared in onDestroyView()

          Finding #1StatusIndicatorFragment

          Fragment View Field Retention Leak Detected
          Class: com.cometchat.javasampleapp.fragments.shared.views.StatusIndicatorFragment
          Issue:
          - Fragment stores View references in instance fields
          - These fields are not cleared when the view is destroyed
          - onDestroyView() is missing
          Leaked Fields:
          • parentView : android.widget.LinearLayout (assigned in onCreateView)
          Why this is dangerous:
          - Fragment views are destroyed/recreated on config changes
          - Retained View references prevent garbage collection
          - Leaked Views hold references to Activity Context
          - Can cause OutOfMemoryError with repeated Fragment transactions
          Recommended Fix:
          Override onDestroyView() and clear all View/Binding fields:
          @Override
          public void onDestroyView() {
          super.onDestroyView();
          parentView = null;
          }
          

          Finding #2LocalizeFragment

          Fragment View Field Retention Leak Detected
          Class: com.cometchat.javasampleapp.fragments.shared.resources.LocalizeFragment
          Issue:
          - Fragment stores View references in instance fields
          - These fields are not cleared when the view is destroyed
          - onDestroyView() is missing
          Leaked Fields:
          • parentView : android.widget.LinearLayout (assigned in onCreateView)
          Why this is dangerous:
          - Fragment views are destroyed/recreated on config changes
          - Retained View references prevent garbage collection
          - Leaked Views hold references to Activity Context
          - Can cause OutOfMemoryError with repeated Fragment transactions
          Recommended Fix:
          Override onDestroyView() and clear all View/Binding fields:
          @Override
          public void onDestroyView() {
          super.onDestroyView();
          parentView = null;
          }
          

          Finding #3SchedulerBubbleFragment

          Fragment View Field Retention Leak Detected
          Class: com.cometchat.javasampleapp.fragments.shared.views.SchedulerBubbleFragment
          Issue:
          - Fragment stores View references in instance fields
          - These fields are not cleared when the view is destroyed
          - onDestroyView() is missing
          Leaked Fields:
          • schedulerBubble : com.cometchat.chatuikit.shared.views.CometChatSchedulerBubble.CometChatSchedulerBubble (assigned in onCreateView)
          • cardView : com.google.android.material.card.MaterialCardView (assigned in onCreateView)
          Why this is dangerous:
          - Fragment views are destroyed/recreated on config changes
          - Retained View references prevent garbage collection
          - Leaked Views hold references to Activity Context
          - Can cause OutOfMemoryError with repeated Fragment transactions
          Recommended Fix:
          Override onDestroyView() and clear all View/Binding fields:
          @Override
          public void onDestroyView() {
          super.onDestroyView();
          schedulerBubble = null;
          cardView = null;
          }
          

          Finding #4ListItemFragment

          Fragment View Field Retention Leak Detected
          Class: com.cometchat.javasampleapp.fragments.shared.views.ListItemFragment
          Issue:
          - Fragment stores View references in instance fields
          - These fields are not cleared when the view is destroyed
          - onDestroyView() is missing
          Leaked Fields:
          • parentView : android.widget.LinearLayout (assigned in onCreateView)
          Why this is dangerous:
          - Fragment views are destroyed/recreated on config changes
          - Retained View references prevent garbage collection
          - Leaked Views hold references to Activity Context
          - Can cause OutOfMemoryError with repeated Fragment transactions
          Recommended Fix:
          Override onDestroyView() and clear all View/Binding fields:
          @Override
          public void onDestroyView() {
          super.onDestroyView();
          parentView = null;
          }
          

          Finding #5AvatarFragment

          Fragment View Field Retention Leak Detected
          Class: com.cometchat.javasampleapp.fragments.shared.views.AvatarFragment
          Issue:
          - Fragment stores View references in instance fields
          - These fields are not cleared when the view is destroyed
          - onDestroyView() is missing
          Leaked Fields:
          • avatar : com.cometchat.chatuikit.shared.views.CometChatAvatar.CometChatAvatar (assigned in onCreateView)
          • parentView : android.widget.LinearLayout (assigned in onCreateView)
          • cornerRadiusLayout : com.google.android.material.textfield.TextInputLayout (assigned in onCreateView)
          Why this is dangerous:
          - Fragment views are destroyed/recreated on config changes
          - Retained View references prevent garbage collection
          - Leaked Views hold references to Activity Context
          - Can cause OutOfMemoryError with repeated Fragment transactions
          Recommended Fix:
          Override onDestroyView() and clear all View/Binding fields:
          @Override
          public void onDestroyView() {
          super.onDestroyView();
          avatar = null;
          … (truncated for brevity)
          

          Finding #6CallLogHistoryFragment

          Fragment View Field Retention Leak Detected
          Class: com.cometchat.javasampleapp.fragments.calls.CallLogHistoryFragment
          Issue:
          - Fragment stores View references in instance fields
          - These fields are not cleared when the view is destroyed
          - onDestroyView() is missing
          Leaked Fields:
          • cometChatCallLogHistory : com.cometchat.chatuikit.calls.callhistory.CometChatCallLogHistory (assigned in onCreateView)
          Why this is dangerous:
          - Fragment views are destroyed/recreated on config changes
          - Retained View references prevent garbage collection
          - Leaked Views hold references to Activity Context
          - Can cause OutOfMemoryError with repeated Fragment transactions
          Recommended Fix:
          Override onDestroyView() and clear all View/Binding fields:
          @Override
          public void onDestroyView() {
          super.onDestroyView();
          cometChatCallLogHistory = null;
          }
          

          Finding #7CallLogParticipantsFragment

          Fragment View Field Retention Leak Detected
          Class: com.cometchat.javasampleapp.fragments.calls.CallLogParticipantsFragment
          Issue:
          - Fragment stores View references in instance fields
          - These fields are not cleared when the view is destroyed
          - onDestroyView() is missing
          Leaked Fields:
          • cometChatCallLogParticipants : com.cometchat.chatuikit.calls.callparticipants.CometChatCallLogParticipants (assigned in onCreateView)
          Why this is dangerous:
          - Fragment views are destroyed/recreated on config changes
          - Retained View references prevent garbage collection
          - Leaked Views hold references to Activity Context
          - Can cause OutOfMemoryError with repeated Fragment transactions
          Recommended Fix:
          Override onDestroyView() and clear all View/Binding fields:
          @Override
          public void onDestroyView() {
          super.onDestroyView();
          cometChatCallLogParticipants = null;
          }
          

          Finding #8CallLogDetailsFragment

          Fragment View Field Retention Leak Detected
          Class: com.cometchat.javasampleapp.fragments.calls.CallLogDetailsFragment
          Issue:
          - Fragment stores View references in instance fields
          - These fields are not cleared when the view is destroyed
          - onDestroyView() is missing
          Leaked Fields:
          • cometChatCallLogDetails : com.cometchat.chatuikit.calls.calldetails.CometChatCallLogDetails (assigned in onCreateView)
          Why this is dangerous:
          - Fragment views are destroyed/recreated on config changes
          - Retained View references prevent garbage collection
          - Leaked Views hold references to Activity Context
          - Can cause OutOfMemoryError with repeated Fragment transactions
          Recommended Fix:
          Override onDestroyView() and clear all View/Binding fields:
          @Override
          public void onDestroyView() {
          super.onDestroyView();
          cometChatCallLogDetails = null;
          }
          

          Finding #9MessageReceiptFragment

          Fragment View Field Retention Leak Detected
          Class: com.cometchat.javasampleapp.fragments.shared.views.MessageReceiptFragment
          Issue:
          - Fragment stores View references in instance fields
          - These fields are not cleared when the view is destroyed
          - onDestroyView() is missing
          Leaked Fields:
          • messageReceiptRead : com.cometchat.chatuikit.shared.views.CometChatReceipt.CometChatReceipt (assigned in onCreateView)
          • parentView : android.widget.LinearLayout (assigned in onCreateView)
          • messageReceiptDeliver : com.cometchat.chatuikit.shared.views.CometChatReceipt.CometChatReceipt (assigned in onCreateView)
          • messageReceiptSent : com.cometchat.chatuikit.shared.views.CometChatReceipt.CometChatReceipt (assigned in onCreateView)
          • messageReceiptProgress : com.cometchat.chatuikit.shared.views.CometChatReceipt.CometChatReceipt (assigned in onCreateView)
          • messageReceiptError : com.cometchat.chatuikit.shared.views.CometChatReceipt.CometChatReceipt (assigned in onCreateView)
          Wh
          … (truncated for brevity)
          

          Finding #10CallLogRecordingFragment

          Fragment View Field Retention Leak Detected
          Class: com.cometchat.javasampleapp.fragments.calls.CallLogRecordingFragment
          Issue:
          - Fragment stores View references in instance fields
          - These fields are not cleared when the view is destroyed
          - onDestroyView() is missing
          Leaked Fields:
          • cometChatCallLogRecordings : com.cometchat.chatuikit.calls.callrecordings.CometChatCallLogRecordings (assigned in onCreateView)
          Why this is dangerous:
          - Fragment views are destroyed/recreated on config changes
          - Retained View references prevent garbage collection
          - Leaked Views hold references to Activity Context
          - Can cause OutOfMemoryError with repeated Fragment transactions
          Recommended Fix:
          Override onDestroyView() and clear all View/Binding fields:
          @Override
          public void onDestroyView() {
          super.onDestroyView();
          cometChatCallLogRecordings = null;
          }
          

          Finding #11BadgeCountFragment

          Fragment View Field Retention Leak Detected
          Class: com.cometchat.javasampleapp.fragments.shared.views.BadgeCountFragment
          Issue:
          - Fragment stores View references in instance fields
          - These fields are not cleared when the view is destroyed
          - onDestroyView() is missing
          Leaked Fields:
          • badgeCountLayout : com.google.android.material.textfield.TextInputLayout (assigned in onCreateView)
          • badgeCountEdt : com.google.android.material.textfield.TextInputEditText (assigned in onCreateView)
          • parentView : android.widget.LinearLayout (assigned in onCreateView)
          Why this is dangerous:
          - Fragment views are destroyed/recreated on config changes
          - Retained View references prevent garbage collection
          - Leaked Views hold references to Activity Context
          - Can cause OutOfMemoryError with repeated Fragment transactions
          Recommended Fix:
          Override onDestroyView() and clear all View/Binding fields:
          @Override
          public void onDestroyView() {
          super.onDestroyView();
          badgeCountLayout = null
          … (truncated for brevity)
          

          Finding #12FormBubbleFragment

          Fragment View Field Retention Leak Detected
          Class: com.cometchat.javasampleapp.fragments.shared.views.FormBubbleFragment
          Issue:
          - Fragment stores View references in instance fields
          - These fields are not cleared when the view is destroyed
          - onDestroyView() is missing
          Leaked Fields:
          • parentLayout : android.widget.LinearLayout (assigned in onCreateView)
          • formBubble : com.cometchat.chatuikit.shared.views.CometChatFormbubble.CometChatFormBubble (assigned in onCreateView)
          Why this is dangerous:
          - Fragment views are destroyed/recreated on config changes
          - Retained View references prevent garbage collection
          - Leaked Views hold references to Activity Context
          - Can cause OutOfMemoryError with repeated Fragment transactions
          Recommended Fix:
          Override onDestroyView() and clear all View/Binding fields:
          @Override
          public void onDestroyView() {
          super.onDestroyView();
          parentLayout = null;
          formBubble = null;
          }
          

          Finding #13MessageComposerFragment

          Fragment View Field Retention Leak Detected
          Class: com.cometchat.javasampleapp.fragments.messages.MessageComposerFragment
          Issue:
          - Fragment stores View references in instance fields
          - These fields are not cleared when the view is destroyed
          - onDestroyView() is missing
          Leaked Fields:
          • parentView : android.widget.RelativeLayout (assigned in onCreateView)
          Why this is dangerous:
          - Fragment views are destroyed/recreated on config changes
          - Retained View references prevent garbage collection
          - Leaked Views hold references to Activity Context
          - Can cause OutOfMemoryError with repeated Fragment transactions
          Recommended Fix:
          Override onDestroyView() and clear all View/Binding fields:
          @Override
          public void onDestroyView() {
          super.onDestroyView();
          parentView = null;
          }
          

          Finding #14SoundManagerFragment

          Fragment View Field Retention Leak Detected
          Class: com.cometchat.javasampleapp.fragments.shared.resources.SoundManagerFragment
          Issue:
          - Fragment stores View references in instance fields
          - These fields are not cleared when the view is destroyed
          - onDestroyView() is missing
          Leaked Fields:
          • parentView : android.widget.LinearLayout (assigned in onCreateView)
          Why this is dangerous:
          - Fragment views are destroyed/recreated on config changes
          - Retained View references prevent garbage collection
          - Leaked Views hold references to Activity Context
          - Can cause OutOfMemoryError with repeated Fragment transactions
          Recommended Fix:
          Override onDestroyView() and clear all View/Binding fields:
          @Override
          public void onDestroyView() {
          super.onDestroyView();
          parentView = null;
          }
          

          Finding #15ThemeFragment

          Fragment View Field Retention Leak Detected
          Class: com.cometchat.javasampleapp.fragments.shared.resources.ThemeFragment
          Issue:
          - Fragment stores View references in instance fields
          - These fields are not cleared when the view is destroyed
          - onDestroyView() is missing
          Leaked Fields:
          • parentView : android.widget.LinearLayout (assigned in onCreateView)
          Why this is dangerous:
          - Fragment views are destroyed/recreated on config changes
          - Retained View references prevent garbage collection
          - Leaked Views hold references to Activity Context
          - Can cause OutOfMemoryError with repeated Fragment transactions
          Recommended Fix:
          Override onDestroyView() and clear all View/Binding fields:
          @Override
          public void onDestroyView() {
          super.onDestroyView();
          parentView = null;
          }
          

          Finding #16CardBubbleFragment

          Fragment View Field Retention Leak Detected
          Class: com.cometchat.javasampleapp.fragments.shared.views.CardBubbleFragment
          Issue:
          - Fragment stores View references in instance fields
          - These fields are not cleared when the view is destroyed
          - onDestroyView() is missing
          Leaked Fields:
          • parentLayout : android.widget.LinearLayout (assigned in onCreateView)
          • cardBubble : com.cometchat.chatuikit.shared.views.CometChatCardBubble.CometChatCardBubble (assigned in onCreateView)
          • scrollView : android.widget.ScrollView (assigned in onCreateView)
          Why this is dangerous:
          - Fragment views are destroyed/recreated on config changes
          - Retained View references prevent garbage collection
          - Leaked Views hold references to Activity Context
          - Can cause OutOfMemoryError with repeated Fragment transactions
          Recommended Fix:
          Override onDestroyView() and clear all View/Binding fields:
          @Override
          public void onDestroyView() {
          super.onDestroyView();
          parentLayout = null;
          cardBubble =
          … (truncated for brevity)
          

          🟢 ViewBindingOpportunity

          Manual findViewById() calls — ViewBinding migration opportunity

          Finding #17CreateUserActivity

          View Binding Migration Opportunity
          Class: com.cometchat.javasampleapp.activity.CreateUserActivity
          Type: Activity
          Current Pattern: Manual view lookup
          findViewById() Calls:
          • findViewById in setUpUI
          • findViewById in setUpUI
          • findViewById in setUpUI
          • findViewById in setUpUI
          • findViewById in onCreate
          • findViewById in onCreate
          • findViewById in onCreate
          • findViewById in onCreate
          • findViewById in onCreate
          Benefits of View Binding:
          - Eliminates boilerplate findViewById() calls
          - Compile-time type safety for view references
          - Reduced null pointer exceptions
          - Cleaner, more maintainable code
          Note: This is a code modernization suggestion, not a memory leak
          

          Finding #18LoginActivity

          View Binding Migration Opportunity
          Class: com.cometchat.javasampleapp.activity.LoginActivity
          Type: Activity
          Current Pattern: Manual view lookup
          findViewById() Calls:
          • findViewById in setUpUI
          • findViewById in setUpUI
          • findViewById in setUpUI
          • findViewById in setUpUI
          • findViewById in lambda$onCreate$1$com-cometchat-javasampleapp-activity-LoginActivity
          • findViewById in onCreate
          • findViewById in onCreate
          • findViewById in onCreate
          • findViewById in onCreate
          • findViewById in onCreate
          Benefits of View Binding:
          - Eliminates boilerplate findViewById() calls
          - Compile-time type safety for view references
          - Reduced null pointer exceptions
          - Cleaner, more maintainable code
          Note: This is a code modernization suggestion, not a memory leak
          

          Finding #19ComponentListActivity

          View Binding Migration Opportunity
          Class: com.cometchat.javasampleapp.activity.ComponentListActivity
          Type: Activity
          Current Pattern: Manual view lookup
          findViewById() Calls:
          • findViewById in setUpUI
          • findViewById in setUpUI
          • findViewById in setUpUI
          • findViewById in setUpUI
          • findViewById in setUpUI
          • findViewById in setUpUI
          • findViewById in setUpUI
          • findViewById in setUpUI
          • findViewById in setUpUI
          • findViewById in setUpUI
          • findViewById in setUpUI
          • findViewById in setUpUI
          • findViewById in setUpUI
          • findViewById in setUpUI
          • findViewById in setUpUI
          • findViewById in setUpUI
          • findViewById in setUpUI
          • findViewById in setUpUI
          • findViewById in setUpUI
          • findViewById in setUpUI
          • findViewById in setUpUI
          • findViewById in setUpUI
          • findViewById in setUpUI
          • findViewById in setUpUI
          • findViewById in setUpUI
          • findViewById in setUpUI
          • findViewById in setUpUI
          • findViewBy
          … (truncated for brevity)
          

          Finding #20HomeActivity

          View Binding Migration Opportunity
          Class: com.cometchat.javasampleapp.activity.HomeActivity
          Type: Activity
          Current Pattern: Manual view lookup
          findViewById() Calls:
          • findViewById in onCreate
          • findViewById in onCreate
          • findViewById in onCreate
          • findViewById in onCreate
          • findViewById in onCreate
          • findViewById in onCreate
          • findViewById in onCreate
          • findViewById in onCreate
          • findViewById in onCreate
          • findViewById in onCreate
          Benefits of View Binding:
          - Eliminates boilerplate findViewById() calls
          - Compile-time type safety for view references
          - Reduced null pointer exceptions
          - Cleaner, more maintainable code
          Note: This is a code modernization suggestion, not a memory leak
          

          Finding #21MainActivity

          View Binding Migration Opportunity
          Class: com.cometchat.javasampleapp.activity.MainActivity
          Type: Activity
          Current Pattern: Manual view lookup
          findViewById() Calls:
          • findViewById in lambda$onCreate$1$com-cometchat-javasampleapp-activity-MainActivity
          • findViewById in lambda$onCreate$2$com-cometchat-javasampleapp-activity-MainActivity
          • findViewById in lambda$onCreate$3$com-cometchat-javasampleapp-activity-MainActivity
          • findViewById in lambda$onCreate$4$com-cometchat-javasampleapp-activity-MainActivity
          • findViewById in onCreate
          • findViewById in onCreate
          • findViewById in onCreate
          • findViewById in onCreate
          • findViewById in onCreate
          • findViewById in onCreate
          • findViewById in onCreate
          • findViewById in onCreate
          • findViewById in onCreate
          • findViewById in onCreate
          • findViewById in onCreate
          • findViewById in onCreate
          • findViewById in onCreate
          • findViewById in onCreate
          • findViewById in onCreate
          • find
          … (truncated for brevity)
          

          Finding #22ComponentLaunchActivity

          View Binding Migration Opportunity
          Class: com.cometchat.javasampleapp.activity.ComponentLaunchActivity
          Type: Activity
          Current Pattern: Manual view lookup
          findViewById() Calls:
          • findViewById in onCreate
          Benefits of View Binding:
          - Eliminates boilerplate findViewById() calls
          - Compile-time type safety for view references
          - Reduced null pointer exceptions
          - Cleaner, more maintainable code
          Note: This is a code modernization suggestion, not a memory leak
          

          How to respond to this issue:

          • If a finding is a true positive: consider applying the recommended fix and closing this issue.
          • If a finding is a false positive: please leave a comment explaining why — your feedback directly improves our research.
          • If you have questions: reply here or open a discussion.

          This report was generated by LeakScope as part of the ICSE 2027 research artifact. Tool analyzes compiled APKs using Soot static analysis on cometchat-sample-app-android-java.

          Activity

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

          Metadata

          Metadata

          Assignees

          No one assigned

            Labels

            No labels
            No labels

            Type

            No type

            Projects

            No projects

              Milestone

              No milestone

              Relationships

              None yet

              Development

              No branches or pull requests

              Issue actions

              , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
              Skip to content

              [LeakScope] 22 Android lifecycle/memory violations detected #72

              Description

              LeakScope: Android Lifecycle & Memory Leak Violations

              About this report: This issue was automatically generated by LeakScope, a static analysis tool for Android lifecycle violations and memory leaks built on the Soot framework. This is part of an ongoing academic research study targeting ICSE 2027. No immediate action is required — we would greatly appreciate your feedback on whether these findings are accurate.

              Summary

              LeakScope detected 22 potential issue(s) across 2 detector type(s):

              SeverityCount
              🔴 High16
              🟡 Medium0
              🟢 Low (improvement opportunity)6
              DetectorCountSeverityDescription
              FragmentViewFieldRetentionLeak16🔴 HighFragment stores View references in instance fields not cleared in onDestroyView()
              ViewBindingOpportunity6🟢 LowManual findViewById() calls — ViewBinding migration opportunity

              Detailed Findings

              🔴 FragmentViewFieldRetentionLeak

              Fragment stores View references in instance fields not cleared in onDestroyView()

              Finding #1StatusIndicatorFragment

              Fragment View Field Retention Leak Detected
              Class: com.cometchat.javasampleapp.fragments.shared.views.StatusIndicatorFragment
              Issue:
              - Fragment stores View references in instance fields
              - These fields are not cleared when the view is destroyed
              - onDestroyView() is missing
              Leaked Fields:
              • parentView : android.widget.LinearLayout (assigned in onCreateView)
              Why this is dangerous:
              - Fragment views are destroyed/recreated on config changes
              - Retained View references prevent garbage collection
              - Leaked Views hold references to Activity Context
              - Can cause OutOfMemoryError with repeated Fragment transactions
              Recommended Fix:
              Override onDestroyView() and clear all View/Binding fields:
              @Override
              public void onDestroyView() {
              super.onDestroyView();
              parentView = null;
              }
              

              Finding #2LocalizeFragment

              Fragment View Field Retention Leak Detected
              Class: com.cometchat.javasampleapp.fragments.shared.resources.LocalizeFragment
              Issue:
              - Fragment stores View references in instance fields
              - These fields are not cleared when the view is destroyed
              - onDestroyView() is missing
              Leaked Fields:
              • parentView : android.widget.LinearLayout (assigned in onCreateView)
              Why this is dangerous:
              - Fragment views are destroyed/recreated on config changes
              - Retained View references prevent garbage collection
              - Leaked Views hold references to Activity Context
              - Can cause OutOfMemoryError with repeated Fragment transactions
              Recommended Fix:
              Override onDestroyView() and clear all View/Binding fields:
              @Override
              public void onDestroyView() {
              super.onDestroyView();
              parentView = null;
              }
              

              Finding #3SchedulerBubbleFragment

              Fragment View Field Retention Leak Detected
              Class: com.cometchat.javasampleapp.fragments.shared.views.SchedulerBubbleFragment
              Issue:
              - Fragment stores View references in instance fields
              - These fields are not cleared when the view is destroyed
              - onDestroyView() is missing
              Leaked Fields:
              • schedulerBubble : com.cometchat.chatuikit.shared.views.CometChatSchedulerBubble.CometChatSchedulerBubble (assigned in onCreateView)
              • cardView : com.google.android.material.card.MaterialCardView (assigned in onCreateView)
              Why this is dangerous:
              - Fragment views are destroyed/recreated on config changes
              - Retained View references prevent garbage collection
              - Leaked Views hold references to Activity Context
              - Can cause OutOfMemoryError with repeated Fragment transactions
              Recommended Fix:
              Override onDestroyView() and clear all View/Binding fields:
              @Override
              public void onDestroyView() {
              super.onDestroyView();
              schedulerBubble = null;
              cardView = null;
              }
              

              Finding #4ListItemFragment

              Fragment View Field Retention Leak Detected
              Class: com.cometchat.javasampleapp.fragments.shared.views.ListItemFragment
              Issue:
              - Fragment stores View references in instance fields
              - These fields are not cleared when the view is destroyed
              - onDestroyView() is missing
              Leaked Fields:
              • parentView : android.widget.LinearLayout (assigned in onCreateView)
              Why this is dangerous:
              - Fragment views are destroyed/recreated on config changes
              - Retained View references prevent garbage collection
              - Leaked Views hold references to Activity Context
              - Can cause OutOfMemoryError with repeated Fragment transactions
              Recommended Fix:
              Override onDestroyView() and clear all View/Binding fields:
              @Override
              public void onDestroyView() {
              super.onDestroyView();
              parentView = null;
              }
              

              Finding #5AvatarFragment

              Fragment View Field Retention Leak Detected
              Class: com.cometchat.javasampleapp.fragments.shared.views.AvatarFragment
              Issue:
              - Fragment stores View references in instance fields
              - These fields are not cleared when the view is destroyed
              - onDestroyView() is missing
              Leaked Fields:
              • avatar : com.cometchat.chatuikit.shared.views.CometChatAvatar.CometChatAvatar (assigned in onCreateView)
              • parentView : android.widget.LinearLayout (assigned in onCreateView)
              • cornerRadiusLayout : com.google.android.material.textfield.TextInputLayout (assigned in onCreateView)
              Why this is dangerous:
              - Fragment views are destroyed/recreated on config changes
              - Retained View references prevent garbage collection
              - Leaked Views hold references to Activity Context
              - Can cause OutOfMemoryError with repeated Fragment transactions
              Recommended Fix:
              Override onDestroyView() and clear all View/Binding fields:
              @Override
              public void onDestroyView() {
              super.onDestroyView();
              avatar = null;
              … (truncated for brevity)
              

              Finding #6CallLogHistoryFragment

              Fragment View Field Retention Leak Detected
              Class: com.cometchat.javasampleapp.fragments.calls.CallLogHistoryFragment
              Issue:
              - Fragment stores View references in instance fields
              - These fields are not cleared when the view is destroyed
              - onDestroyView() is missing
              Leaked Fields:
              • cometChatCallLogHistory : com.cometchat.chatuikit.calls.callhistory.CometChatCallLogHistory (assigned in onCreateView)
              Why this is dangerous:
              - Fragment views are destroyed/recreated on config changes
              - Retained View references prevent garbage collection
              - Leaked Views hold references to Activity Context
              - Can cause OutOfMemoryError with repeated Fragment transactions
              Recommended Fix:
              Override onDestroyView() and clear all View/Binding fields:
              @Override
              public void onDestroyView() {
              super.onDestroyView();
              cometChatCallLogHistory = null;
              }
              

              Finding #7CallLogParticipantsFragment

              Fragment View Field Retention Leak Detected
              Class: com.cometchat.javasampleapp.fragments.calls.CallLogParticipantsFragment
              Issue:
              - Fragment stores View references in instance fields
              - These fields are not cleared when the view is destroyed
              - onDestroyView() is missing
              Leaked Fields:
              • cometChatCallLogParticipants : com.cometchat.chatuikit.calls.callparticipants.CometChatCallLogParticipants (assigned in onCreateView)
              Why this is dangerous:
              - Fragment views are destroyed/recreated on config changes
              - Retained View references prevent garbage collection
              - Leaked Views hold references to Activity Context
              - Can cause OutOfMemoryError with repeated Fragment transactions
              Recommended Fix:
              Override onDestroyView() and clear all View/Binding fields:
              @Override
              public void onDestroyView() {
              super.onDestroyView();
              cometChatCallLogParticipants = null;
              }
              

              Finding #8CallLogDetailsFragment

              Fragment View Field Retention Leak Detected
              Class: com.cometchat.javasampleapp.fragments.calls.CallLogDetailsFragment
              Issue:
              - Fragment stores View references in instance fields
              - These fields are not cleared when the view is destroyed
              - onDestroyView() is missing
              Leaked Fields:
              • cometChatCallLogDetails : com.cometchat.chatuikit.calls.calldetails.CometChatCallLogDetails (assigned in onCreateView)
              Why this is dangerous:
              - Fragment views are destroyed/recreated on config changes
              - Retained View references prevent garbage collection
              - Leaked Views hold references to Activity Context
              - Can cause OutOfMemoryError with repeated Fragment transactions
              Recommended Fix:
              Override onDestroyView() and clear all View/Binding fields:
              @Override
              public void onDestroyView() {
              super.onDestroyView();
              cometChatCallLogDetails = null;
              }
              

              Finding #9MessageReceiptFragment

              Fragment View Field Retention Leak Detected
              Class: com.cometchat.javasampleapp.fragments.shared.views.MessageReceiptFragment
              Issue:
              - Fragment stores View references in instance fields
              - These fields are not cleared when the view is destroyed
              - onDestroyView() is missing
              Leaked Fields:
              • messageReceiptRead : com.cometchat.chatuikit.shared.views.CometChatReceipt.CometChatReceipt (assigned in onCreateView)
              • parentView : android.widget.LinearLayout (assigned in onCreateView)
              • messageReceiptDeliver : com.cometchat.chatuikit.shared.views.CometChatReceipt.CometChatReceipt (assigned in onCreateView)
              • messageReceiptSent : com.cometchat.chatuikit.shared.views.CometChatReceipt.CometChatReceipt (assigned in onCreateView)
              • messageReceiptProgress : com.cometchat.chatuikit.shared.views.CometChatReceipt.CometChatReceipt (assigned in onCreateView)
              • messageReceiptError : com.cometchat.chatuikit.shared.views.CometChatReceipt.CometChatReceipt (assigned in onCreateView)
              Wh
              … (truncated for brevity)
              

              Finding #10CallLogRecordingFragment

              Fragment View Field Retention Leak Detected
              Class: com.cometchat.javasampleapp.fragments.calls.CallLogRecordingFragment
              Issue:
              - Fragment stores View references in instance fields
              - These fields are not cleared when the view is destroyed
              - onDestroyView() is missing
              Leaked Fields:
              • cometChatCallLogRecordings : com.cometchat.chatuikit.calls.callrecordings.CometChatCallLogRecordings (assigned in onCreateView)
              Why this is dangerous:
              - Fragment views are destroyed/recreated on config changes
              - Retained View references prevent garbage collection
              - Leaked Views hold references to Activity Context
              - Can cause OutOfMemoryError with repeated Fragment transactions
              Recommended Fix:
              Override onDestroyView() and clear all View/Binding fields:
              @Override
              public void onDestroyView() {
              super.onDestroyView();
              cometChatCallLogRecordings = null;
              }
              

              Finding #11BadgeCountFragment

              Fragment View Field Retention Leak Detected
              Class: com.cometchat.javasampleapp.fragments.shared.views.BadgeCountFragment
              Issue:
              - Fragment stores View references in instance fields
              - These fields are not cleared when the view is destroyed
              - onDestroyView() is missing
              Leaked Fields:
              • badgeCountLayout : com.google.android.material.textfield.TextInputLayout (assigned in onCreateView)
              • badgeCountEdt : com.google.android.material.textfield.TextInputEditText (assigned in onCreateView)
              • parentView : android.widget.LinearLayout (assigned in onCreateView)
              Why this is dangerous:
              - Fragment views are destroyed/recreated on config changes
              - Retained View references prevent garbage collection
              - Leaked Views hold references to Activity Context
              - Can cause OutOfMemoryError with repeated Fragment transactions
              Recommended Fix:
              Override onDestroyView() and clear all View/Binding fields:
              @Override
              public void onDestroyView() {
              super.onDestroyView();
              badgeCountLayout = null
              … (truncated for brevity)
              

              Finding #12FormBubbleFragment

              Fragment View Field Retention Leak Detected
              Class: com.cometchat.javasampleapp.fragments.shared.views.FormBubbleFragment
              Issue:
              - Fragment stores View references in instance fields
              - These fields are not cleared when the view is destroyed
              - onDestroyView() is missing
              Leaked Fields:
              • parentLayout : android.widget.LinearLayout (assigned in onCreateView)
              • formBubble : com.cometchat.chatuikit.shared.views.CometChatFormbubble.CometChatFormBubble (assigned in onCreateView)
              Why this is dangerous:
              - Fragment views are destroyed/recreated on config changes
              - Retained View references prevent garbage collection
              - Leaked Views hold references to Activity Context
              - Can cause OutOfMemoryError with repeated Fragment transactions
              Recommended Fix:
              Override onDestroyView() and clear all View/Binding fields:
              @Override
              public void onDestroyView() {
              super.onDestroyView();
              parentLayout = null;
              formBubble = null;
              }
              

              Finding #13MessageComposerFragment

              Fragment View Field Retention Leak Detected
              Class: com.cometchat.javasampleapp.fragments.messages.MessageComposerFragment
              Issue:
              - Fragment stores View references in instance fields
              - These fields are not cleared when the view is destroyed
              - onDestroyView() is missing
              Leaked Fields:
              • parentView : android.widget.RelativeLayout (assigned in onCreateView)
              Why this is dangerous:
              - Fragment views are destroyed/recreated on config changes
              - Retained View references prevent garbage collection
              - Leaked Views hold references to Activity Context
              - Can cause OutOfMemoryError with repeated Fragment transactions
              Recommended Fix:
              Override onDestroyView() and clear all View/Binding fields:
              @Override
              public void onDestroyView() {
              super.onDestroyView();
              parentView = null;
              }
              

              Finding #14SoundManagerFragment

              Fragment View Field Retention Leak Detected
              Class: com.cometchat.javasampleapp.fragments.shared.resources.SoundManagerFragment
              Issue:
              - Fragment stores View references in instance fields
              - These fields are not cleared when the view is destroyed
              - onDestroyView() is missing
              Leaked Fields:
              • parentView : android.widget.LinearLayout (assigned in onCreateView)
              Why this is dangerous:
              - Fragment views are destroyed/recreated on config changes
              - Retained View references prevent garbage collection
              - Leaked Views hold references to Activity Context
              - Can cause OutOfMemoryError with repeated Fragment transactions
              Recommended Fix:
              Override onDestroyView() and clear all View/Binding fields:
              @Override
              public void onDestroyView() {
              super.onDestroyView();
              parentView = null;
              }
              

              Finding #15ThemeFragment

              Fragment View Field Retention Leak Detected
              Class: com.cometchat.javasampleapp.fragments.shared.resources.ThemeFragment
              Issue:
              - Fragment stores View references in instance fields
              - These fields are not cleared when the view is destroyed
              - onDestroyView() is missing
              Leaked Fields:
              • parentView : android.widget.LinearLayout (assigned in onCreateView)
              Why this is dangerous:
              - Fragment views are destroyed/recreated on config changes
              - Retained View references prevent garbage collection
              - Leaked Views hold references to Activity Context
              - Can cause OutOfMemoryError with repeated Fragment transactions
              Recommended Fix:
              Override onDestroyView() and clear all View/Binding fields:
              @Override
              public void onDestroyView() {
              super.onDestroyView();
              parentView = null;
              }
              

              Finding #16CardBubbleFragment

              Fragment View Field Retention Leak Detected
              Class: com.cometchat.javasampleapp.fragments.shared.views.CardBubbleFragment
              Issue:
              - Fragment stores View references in instance fields
              - These fields are not cleared when the view is destroyed
              - onDestroyView() is missing
              Leaked Fields:
              • parentLayout : android.widget.LinearLayout (assigned in onCreateView)
              • cardBubble : com.cometchat.chatuikit.shared.views.CometChatCardBubble.CometChatCardBubble (assigned in onCreateView)
              • scrollView : android.widget.ScrollView (assigned in onCreateView)
              Why this is dangerous:
              - Fragment views are destroyed/recreated on config changes
              - Retained View references prevent garbage collection
              - Leaked Views hold references to Activity Context
              - Can cause OutOfMemoryError with repeated Fragment transactions
              Recommended Fix:
              Override onDestroyView() and clear all View/Binding fields:
              @Override
              public void onDestroyView() {
              super.onDestroyView();
              parentLayout = null;
              cardBubble =
              … (truncated for brevity)
              

              🟢 ViewBindingOpportunity

              Manual findViewById() calls — ViewBinding migration opportunity

              Finding #17CreateUserActivity

              View Binding Migration Opportunity
              Class: com.cometchat.javasampleapp.activity.CreateUserActivity
              Type: Activity
              Current Pattern: Manual view lookup
              findViewById() Calls:
              • findViewById in setUpUI
              • findViewById in setUpUI
              • findViewById in setUpUI
              • findViewById in setUpUI
              • findViewById in onCreate
              • findViewById in onCreate
              • findViewById in onCreate
              • findViewById in onCreate
              • findViewById in onCreate
              Benefits of View Binding:
              - Eliminates boilerplate findViewById() calls
              - Compile-time type safety for view references
              - Reduced null pointer exceptions
              - Cleaner, more maintainable code
              Note: This is a code modernization suggestion, not a memory leak
              

              Finding #18LoginActivity

              View Binding Migration Opportunity
              Class: com.cometchat.javasampleapp.activity.LoginActivity
              Type: Activity
              Current Pattern: Manual view lookup
              findViewById() Calls:
              • findViewById in setUpUI
              • findViewById in setUpUI
              • findViewById in setUpUI
              • findViewById in setUpUI
              • findViewById in lambda$onCreate$1$com-cometchat-javasampleapp-activity-LoginActivity
              • findViewById in onCreate
              • findViewById in onCreate
              • findViewById in onCreate
              • findViewById in onCreate
              • findViewById in onCreate
              Benefits of View Binding:
              - Eliminates boilerplate findViewById() calls
              - Compile-time type safety for view references
              - Reduced null pointer exceptions
              - Cleaner, more maintainable code
              Note: This is a code modernization suggestion, not a memory leak
              

              Finding #19ComponentListActivity

              View Binding Migration Opportunity
              Class: com.cometchat.javasampleapp.activity.ComponentListActivity
              Type: Activity
              Current Pattern: Manual view lookup
              findViewById() Calls:
              • findViewById in setUpUI
              • findViewById in setUpUI
              • findViewById in setUpUI
              • findViewById in setUpUI
              • findViewById in setUpUI
              • findViewById in setUpUI
              • findViewById in setUpUI
              • findViewById in setUpUI
              • findViewById in setUpUI
              • findViewById in setUpUI
              • findViewById in setUpUI
              • findViewById in setUpUI
              • findViewById in setUpUI
              • findViewById in setUpUI
              • findViewById in setUpUI
              • findViewById in setUpUI
              • findViewById in setUpUI
              • findViewById in setUpUI
              • findViewById in setUpUI
              • findViewById in setUpUI
              • findViewById in setUpUI
              • findViewById in setUpUI
              • findViewById in setUpUI
              • findViewById in setUpUI
              • findViewById in setUpUI
              • findViewById in setUpUI
              • findViewById in setUpUI
              • findViewBy
              … (truncated for brevity)
              

              Finding #20HomeActivity

              View Binding Migration Opportunity
              Class: com.cometchat.javasampleapp.activity.HomeActivity
              Type: Activity
              Current Pattern: Manual view lookup
              findViewById() Calls:
              • findViewById in onCreate
              • findViewById in onCreate
              • findViewById in onCreate
              • findViewById in onCreate
              • findViewById in onCreate
              • findViewById in onCreate
              • findViewById in onCreate
              • findViewById in onCreate
              • findViewById in onCreate
              • findViewById in onCreate
              Benefits of View Binding:
              - Eliminates boilerplate findViewById() calls
              - Compile-time type safety for view references
              - Reduced null pointer exceptions
              - Cleaner, more maintainable code
              Note: This is a code modernization suggestion, not a memory leak
              

              Finding #21MainActivity

              View Binding Migration Opportunity
              Class: com.cometchat.javasampleapp.activity.MainActivity
              Type: Activity
              Current Pattern: Manual view lookup
              findViewById() Calls:
              • findViewById in lambda$onCreate$1$com-cometchat-javasampleapp-activity-MainActivity
              • findViewById in lambda$onCreate$2$com-cometchat-javasampleapp-activity-MainActivity
              • findViewById in lambda$onCreate$3$com-cometchat-javasampleapp-activity-MainActivity
              • findViewById in lambda$onCreate$4$com-cometchat-javasampleapp-activity-MainActivity
              • findViewById in onCreate
              • findViewById in onCreate
              • findViewById in onCreate
              • findViewById in onCreate
              • findViewById in onCreate
              • findViewById in onCreate
              • findViewById in onCreate
              • findViewById in onCreate
              • findViewById in onCreate
              • findViewById in onCreate
              • findViewById in onCreate
              • findViewById in onCreate
              • findViewById in onCreate
              • findViewById in onCreate
              • findViewById in onCreate
              • find
              … (truncated for brevity)
              

              Finding #22ComponentLaunchActivity

              View Binding Migration Opportunity
              Class: com.cometchat.javasampleapp.activity.ComponentLaunchActivity
              Type: Activity
              Current Pattern: Manual view lookup
              findViewById() Calls:
              • findViewById in onCreate
              Benefits of View Binding:
              - Eliminates boilerplate findViewById() calls
              - Compile-time type safety for view references
              - Reduced null pointer exceptions
              - Cleaner, more maintainable code
              Note: This is a code modernization suggestion, not a memory leak
              

              How to respond to this issue:

              • If a finding is a true positive: consider applying the recommended fix and closing this issue.
              • If a finding is a false positive: please leave a comment explaining why — your feedback directly improves our research.
              • If you have questions: reply here or open a discussion.

              This report was generated by LeakScope as part of the ICSE 2027 research artifact. Tool analyzes compiled APKs using Soot static analysis on cometchat-sample-app-android-java.

              Activity

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

              Metadata

              Metadata

              Assignees

              No one assigned

                Labels

                No labels
                No labels

                Type

                No type

                Projects

                No projects

                  Milestone

                  No milestone

                  Relationships

                  None yet

                  Development

                  No branches or pull requests

                  Issue actions

                  , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
                  Skip to content

                  [LeakScope] 22 Android lifecycle/memory violations detected #72

                  Description

                  LeakScope: Android Lifecycle & Memory Leak Violations

                  About this report: This issue was automatically generated by LeakScope, a static analysis tool for Android lifecycle violations and memory leaks built on the Soot framework. This is part of an ongoing academic research study targeting ICSE 2027. No immediate action is required — we would greatly appreciate your feedback on whether these findings are accurate.

                  Summary

                  LeakScope detected 22 potential issue(s) across 2 detector type(s):

                  SeverityCount
                  🔴 High16
                  🟡 Medium0
                  🟢 Low (improvement opportunity)6
                  DetectorCountSeverityDescription
                  FragmentViewFieldRetentionLeak16🔴 HighFragment stores View references in instance fields not cleared in onDestroyView()
                  ViewBindingOpportunity6🟢 LowManual findViewById() calls — ViewBinding migration opportunity

                  Detailed Findings

                  🔴 FragmentViewFieldRetentionLeak

                  Fragment stores View references in instance fields not cleared in onDestroyView()

                  Finding #1StatusIndicatorFragment

                  Fragment View Field Retention Leak Detected
                  Class: com.cometchat.javasampleapp.fragments.shared.views.StatusIndicatorFragment
                  Issue:
                  - Fragment stores View references in instance fields
                  - These fields are not cleared when the view is destroyed
                  - onDestroyView() is missing
                  Leaked Fields:
                  • parentView : android.widget.LinearLayout (assigned in onCreateView)
                  Why this is dangerous:
                  - Fragment views are destroyed/recreated on config changes
                  - Retained View references prevent garbage collection
                  - Leaked Views hold references to Activity Context
                  - Can cause OutOfMemoryError with repeated Fragment transactions
                  Recommended Fix:
                  Override onDestroyView() and clear all View/Binding fields:
                  @Override
                  public void onDestroyView() {
                  super.onDestroyView();
                  parentView = null;
                  }
                  

                  Finding #2LocalizeFragment

                  Fragment View Field Retention Leak Detected
                  Class: com.cometchat.javasampleapp.fragments.shared.resources.LocalizeFragment
                  Issue:
                  - Fragment stores View references in instance fields
                  - These fields are not cleared when the view is destroyed
                  - onDestroyView() is missing
                  Leaked Fields:
                  • parentView : android.widget.LinearLayout (assigned in onCreateView)
                  Why this is dangerous:
                  - Fragment views are destroyed/recreated on config changes
                  - Retained View references prevent garbage collection
                  - Leaked Views hold references to Activity Context
                  - Can cause OutOfMemoryError with repeated Fragment transactions
                  Recommended Fix:
                  Override onDestroyView() and clear all View/Binding fields:
                  @Override
                  public void onDestroyView() {
                  super.onDestroyView();
                  parentView = null;
                  }
                  

                  Finding #3SchedulerBubbleFragment

                  Fragment View Field Retention Leak Detected
                  Class: com.cometchat.javasampleapp.fragments.shared.views.SchedulerBubbleFragment
                  Issue:
                  - Fragment stores View references in instance fields
                  - These fields are not cleared when the view is destroyed
                  - onDestroyView() is missing
                  Leaked Fields:
                  • schedulerBubble : com.cometchat.chatuikit.shared.views.CometChatSchedulerBubble.CometChatSchedulerBubble (assigned in onCreateView)
                  • cardView : com.google.android.material.card.MaterialCardView (assigned in onCreateView)
                  Why this is dangerous:
                  - Fragment views are destroyed/recreated on config changes
                  - Retained View references prevent garbage collection
                  - Leaked Views hold references to Activity Context
                  - Can cause OutOfMemoryError with repeated Fragment transactions
                  Recommended Fix:
                  Override onDestroyView() and clear all View/Binding fields:
                  @Override
                  public void onDestroyView() {
                  super.onDestroyView();
                  schedulerBubble = null;
                  cardView = null;
                  }
                  

                  Finding #4ListItemFragment

                  Fragment View Field Retention Leak Detected
                  Class: com.cometchat.javasampleapp.fragments.shared.views.ListItemFragment
                  Issue:
                  - Fragment stores View references in instance fields
                  - These fields are not cleared when the view is destroyed
                  - onDestroyView() is missing
                  Leaked Fields:
                  • parentView : android.widget.LinearLayout (assigned in onCreateView)
                  Why this is dangerous:
                  - Fragment views are destroyed/recreated on config changes
                  - Retained View references prevent garbage collection
                  - Leaked Views hold references to Activity Context
                  - Can cause OutOfMemoryError with repeated Fragment transactions
                  Recommended Fix:
                  Override onDestroyView() and clear all View/Binding fields:
                  @Override
                  public void onDestroyView() {
                  super.onDestroyView();
                  parentView = null;
                  }
                  

                  Finding #5AvatarFragment

                  Fragment View Field Retention Leak Detected
                  Class: com.cometchat.javasampleapp.fragments.shared.views.AvatarFragment
                  Issue:
                  - Fragment stores View references in instance fields
                  - These fields are not cleared when the view is destroyed
                  - onDestroyView() is missing
                  Leaked Fields:
                  • avatar : com.cometchat.chatuikit.shared.views.CometChatAvatar.CometChatAvatar (assigned in onCreateView)
                  • parentView : android.widget.LinearLayout (assigned in onCreateView)
                  • cornerRadiusLayout : com.google.android.material.textfield.TextInputLayout (assigned in onCreateView)
                  Why this is dangerous:
                  - Fragment views are destroyed/recreated on config changes
                  - Retained View references prevent garbage collection
                  - Leaked Views hold references to Activity Context
                  - Can cause OutOfMemoryError with repeated Fragment transactions
                  Recommended Fix:
                  Override onDestroyView() and clear all View/Binding fields:
                  @Override
                  public void onDestroyView() {
                  super.onDestroyView();
                  avatar = null;
                  … (truncated for brevity)
                  

                  Finding #6CallLogHistoryFragment

                  Fragment View Field Retention Leak Detected
                  Class: com.cometchat.javasampleapp.fragments.calls.CallLogHistoryFragment
                  Issue:
                  - Fragment stores View references in instance fields
                  - These fields are not cleared when the view is destroyed
                  - onDestroyView() is missing
                  Leaked Fields:
                  • cometChatCallLogHistory : com.cometchat.chatuikit.calls.callhistory.CometChatCallLogHistory (assigned in onCreateView)
                  Why this is dangerous:
                  - Fragment views are destroyed/recreated on config changes
                  - Retained View references prevent garbage collection
                  - Leaked Views hold references to Activity Context
                  - Can cause OutOfMemoryError with repeated Fragment transactions
                  Recommended Fix:
                  Override onDestroyView() and clear all View/Binding fields:
                  @Override
                  public void onDestroyView() {
                  super.onDestroyView();
                  cometChatCallLogHistory = null;
                  }
                  

                  Finding #7CallLogParticipantsFragment

                  Fragment View Field Retention Leak Detected
                  Class: com.cometchat.javasampleapp.fragments.calls.CallLogParticipantsFragment
                  Issue:
                  - Fragment stores View references in instance fields
                  - These fields are not cleared when the view is destroyed
                  - onDestroyView() is missing
                  Leaked Fields:
                  • cometChatCallLogParticipants : com.cometchat.chatuikit.calls.callparticipants.CometChatCallLogParticipants (assigned in onCreateView)
                  Why this is dangerous:
                  - Fragment views are destroyed/recreated on config changes
                  - Retained View references prevent garbage collection
                  - Leaked Views hold references to Activity Context
                  - Can cause OutOfMemoryError with repeated Fragment transactions
                  Recommended Fix:
                  Override onDestroyView() and clear all View/Binding fields:
                  @Override
                  public void onDestroyView() {
                  super.onDestroyView();
                  cometChatCallLogParticipants = null;
                  }
                  

                  Finding #8CallLogDetailsFragment

                  Fragment View Field Retention Leak Detected
                  Class: com.cometchat.javasampleapp.fragments.calls.CallLogDetailsFragment
                  Issue:
                  - Fragment stores View references in instance fields
                  - These fields are not cleared when the view is destroyed
                  - onDestroyView() is missing
                  Leaked Fields:
                  • cometChatCallLogDetails : com.cometchat.chatuikit.calls.calldetails.CometChatCallLogDetails (assigned in onCreateView)
                  Why this is dangerous:
                  - Fragment views are destroyed/recreated on config changes
                  - Retained View references prevent garbage collection
                  - Leaked Views hold references to Activity Context
                  - Can cause OutOfMemoryError with repeated Fragment transactions
                  Recommended Fix:
                  Override onDestroyView() and clear all View/Binding fields:
                  @Override
                  public void onDestroyView() {
                  super.onDestroyView();
                  cometChatCallLogDetails = null;
                  }
                  

                  Finding #9MessageReceiptFragment

                  Fragment View Field Retention Leak Detected
                  Class: com.cometchat.javasampleapp.fragments.shared.views.MessageReceiptFragment
                  Issue:
                  - Fragment stores View references in instance fields
                  - These fields are not cleared when the view is destroyed
                  - onDestroyView() is missing
                  Leaked Fields:
                  • messageReceiptRead : com.cometchat.chatuikit.shared.views.CometChatReceipt.CometChatReceipt (assigned in onCreateView)
                  • parentView : android.widget.LinearLayout (assigned in onCreateView)
                  • messageReceiptDeliver : com.cometchat.chatuikit.shared.views.CometChatReceipt.CometChatReceipt (assigned in onCreateView)
                  • messageReceiptSent : com.cometchat.chatuikit.shared.views.CometChatReceipt.CometChatReceipt (assigned in onCreateView)
                  • messageReceiptProgress : com.cometchat.chatuikit.shared.views.CometChatReceipt.CometChatReceipt (assigned in onCreateView)
                  • messageReceiptError : com.cometchat.chatuikit.shared.views.CometChatReceipt.CometChatReceipt (assigned in onCreateView)
                  Wh
                  … (truncated for brevity)
                  

                  Finding #10CallLogRecordingFragment

                  Fragment View Field Retention Leak Detected
                  Class: com.cometchat.javasampleapp.fragments.calls.CallLogRecordingFragment
                  Issue:
                  - Fragment stores View references in instance fields
                  - These fields are not cleared when the view is destroyed
                  - onDestroyView() is missing
                  Leaked Fields:
                  • cometChatCallLogRecordings : com.cometchat.chatuikit.calls.callrecordings.CometChatCallLogRecordings (assigned in onCreateView)
                  Why this is dangerous:
                  - Fragment views are destroyed/recreated on config changes
                  - Retained View references prevent garbage collection
                  - Leaked Views hold references to Activity Context
                  - Can cause OutOfMemoryError with repeated Fragment transactions
                  Recommended Fix:
                  Override onDestroyView() and clear all View/Binding fields:
                  @Override
                  public void onDestroyView() {
                  super.onDestroyView();
                  cometChatCallLogRecordings = null;
                  }
                  

                  Finding #11BadgeCountFragment

                  Fragment View Field Retention Leak Detected
                  Class: com.cometchat.javasampleapp.fragments.shared.views.BadgeCountFragment
                  Issue:
                  - Fragment stores View references in instance fields
                  - These fields are not cleared when the view is destroyed
                  - onDestroyView() is missing
                  Leaked Fields:
                  • badgeCountLayout : com.google.android.material.textfield.TextInputLayout (assigned in onCreateView)
                  • badgeCountEdt : com.google.android.material.textfield.TextInputEditText (assigned in onCreateView)
                  • parentView : android.widget.LinearLayout (assigned in onCreateView)
                  Why this is dangerous:
                  - Fragment views are destroyed/recreated on config changes
                  - Retained View references prevent garbage collection
                  - Leaked Views hold references to Activity Context
                  - Can cause OutOfMemoryError with repeated Fragment transactions
                  Recommended Fix:
                  Override onDestroyView() and clear all View/Binding fields:
                  @Override
                  public void onDestroyView() {
                  super.onDestroyView();
                  badgeCountLayout = null
                  … (truncated for brevity)
                  

                  Finding #12FormBubbleFragment

                  Fragment View Field Retention Leak Detected
                  Class: com.cometchat.javasampleapp.fragments.shared.views.FormBubbleFragment
                  Issue:
                  - Fragment stores View references in instance fields
                  - These fields are not cleared when the view is destroyed
                  - onDestroyView() is missing
                  Leaked Fields:
                  • parentLayout : android.widget.LinearLayout (assigned in onCreateView)
                  • formBubble : com.cometchat.chatuikit.shared.views.CometChatFormbubble.CometChatFormBubble (assigned in onCreateView)
                  Why this is dangerous:
                  - Fragment views are destroyed/recreated on config changes
                  - Retained View references prevent garbage collection
                  - Leaked Views hold references to Activity Context
                  - Can cause OutOfMemoryError with repeated Fragment transactions
                  Recommended Fix:
                  Override onDestroyView() and clear all View/Binding fields:
                  @Override
                  public void onDestroyView() {
                  super.onDestroyView();
                  parentLayout = null;
                  formBubble = null;
                  }
                  

                  Finding #13MessageComposerFragment

                  Fragment View Field Retention Leak Detected
                  Class: com.cometchat.javasampleapp.fragments.messages.MessageComposerFragment
                  Issue:
                  - Fragment stores View references in instance fields
                  - These fields are not cleared when the view is destroyed
                  - onDestroyView() is missing
                  Leaked Fields:
                  • parentView : android.widget.RelativeLayout (assigned in onCreateView)
                  Why this is dangerous:
                  - Fragment views are destroyed/recreated on config changes
                  - Retained View references prevent garbage collection
                  - Leaked Views hold references to Activity Context
                  - Can cause OutOfMemoryError with repeated Fragment transactions
                  Recommended Fix:
                  Override onDestroyView() and clear all View/Binding fields:
                  @Override
                  public void onDestroyView() {
                  super.onDestroyView();
                  parentView = null;
                  }
                  

                  Finding #14SoundManagerFragment

                  Fragment View Field Retention Leak Detected
                  Class: com.cometchat.javasampleapp.fragments.shared.resources.SoundManagerFragment
                  Issue:
                  - Fragment stores View references in instance fields
                  - These fields are not cleared when the view is destroyed
                  - onDestroyView() is missing
                  Leaked Fields:
                  • parentView : android.widget.LinearLayout (assigned in onCreateView)
                  Why this is dangerous:
                  - Fragment views are destroyed/recreated on config changes
                  - Retained View references prevent garbage collection
                  - Leaked Views hold references to Activity Context
                  - Can cause OutOfMemoryError with repeated Fragment transactions
                  Recommended Fix:
                  Override onDestroyView() and clear all View/Binding fields:
                  @Override
                  public void onDestroyView() {
                  super.onDestroyView();
                  parentView = null;
                  }
                  

                  Finding #15ThemeFragment

                  Fragment View Field Retention Leak Detected
                  Class: com.cometchat.javasampleapp.fragments.shared.resources.ThemeFragment
                  Issue:
                  - Fragment stores View references in instance fields
                  - These fields are not cleared when the view is destroyed
                  - onDestroyView() is missing
                  Leaked Fields:
                  • parentView : android.widget.LinearLayout (assigned in onCreateView)
                  Why this is dangerous:
                  - Fragment views are destroyed/recreated on config changes
                  - Retained View references prevent garbage collection
                  - Leaked Views hold references to Activity Context
                  - Can cause OutOfMemoryError with repeated Fragment transactions
                  Recommended Fix:
                  Override onDestroyView() and clear all View/Binding fields:
                  @Override
                  public void onDestroyView() {
                  super.onDestroyView();
                  parentView = null;
                  }
                  

                  Finding #16CardBubbleFragment

                  Fragment View Field Retention Leak Detected
                  Class: com.cometchat.javasampleapp.fragments.shared.views.CardBubbleFragment
                  Issue:
                  - Fragment stores View references in instance fields
                  - These fields are not cleared when the view is destroyed
                  - onDestroyView() is missing
                  Leaked Fields:
                  • parentLayout : android.widget.LinearLayout (assigned in onCreateView)
                  • cardBubble : com.cometchat.chatuikit.shared.views.CometChatCardBubble.CometChatCardBubble (assigned in onCreateView)
                  • scrollView : android.widget.ScrollView (assigned in onCreateView)
                  Why this is dangerous:
                  - Fragment views are destroyed/recreated on config changes
                  - Retained View references prevent garbage collection
                  - Leaked Views hold references to Activity Context
                  - Can cause OutOfMemoryError with repeated Fragment transactions
                  Recommended Fix:
                  Override onDestroyView() and clear all View/Binding fields:
                  @Override
                  public void onDestroyView() {
                  super.onDestroyView();
                  parentLayout = null;
                  cardBubble =
                  … (truncated for brevity)
                  

                  🟢 ViewBindingOpportunity

                  Manual findViewById() calls — ViewBinding migration opportunity

                  Finding #17CreateUserActivity

                  View Binding Migration Opportunity
                  Class: com.cometchat.javasampleapp.activity.CreateUserActivity
                  Type: Activity
                  Current Pattern: Manual view lookup
                  findViewById() Calls:
                  • findViewById in setUpUI
                  • findViewById in setUpUI
                  • findViewById in setUpUI
                  • findViewById in setUpUI
                  • findViewById in onCreate
                  • findViewById in onCreate
                  • findViewById in onCreate
                  • findViewById in onCreate
                  • findViewById in onCreate
                  Benefits of View Binding:
                  - Eliminates boilerplate findViewById() calls
                  - Compile-time type safety for view references
                  - Reduced null pointer exceptions
                  - Cleaner, more maintainable code
                  Note: This is a code modernization suggestion, not a memory leak
                  

                  Finding #18LoginActivity

                  View Binding Migration Opportunity
                  Class: com.cometchat.javasampleapp.activity.LoginActivity
                  Type: Activity
                  Current Pattern: Manual view lookup
                  findViewById() Calls:
                  • findViewById in setUpUI
                  • findViewById in setUpUI
                  • findViewById in setUpUI
                  • findViewById in setUpUI
                  • findViewById in lambda$onCreate$1$com-cometchat-javasampleapp-activity-LoginActivity
                  • findViewById in onCreate
                  • findViewById in onCreate
                  • findViewById in onCreate
                  • findViewById in onCreate
                  • findViewById in onCreate
                  Benefits of View Binding:
                  - Eliminates boilerplate findViewById() calls
                  - Compile-time type safety for view references
                  - Reduced null pointer exceptions
                  - Cleaner, more maintainable code
                  Note: This is a code modernization suggestion, not a memory leak
                  

                  Finding #19ComponentListActivity

                  View Binding Migration Opportunity
                  Class: com.cometchat.javasampleapp.activity.ComponentListActivity
                  Type: Activity
                  Current Pattern: Manual view lookup
                  findViewById() Calls:
                  • findViewById in setUpUI
                  • findViewById in setUpUI
                  • findViewById in setUpUI
                  • findViewById in setUpUI
                  • findViewById in setUpUI
                  • findViewById in setUpUI
                  • findViewById in setUpUI
                  • findViewById in setUpUI
                  • findViewById in setUpUI
                  • findViewById in setUpUI
                  • findViewById in setUpUI
                  • findViewById in setUpUI
                  • findViewById in setUpUI
                  • findViewById in setUpUI
                  • findViewById in setUpUI
                  • findViewById in setUpUI
                  • findViewById in setUpUI
                  • findViewById in setUpUI
                  • findViewById in setUpUI
                  • findViewById in setUpUI
                  • findViewById in setUpUI
                  • findViewById in setUpUI
                  • findViewById in setUpUI
                  • findViewById in setUpUI
                  • findViewById in setUpUI
                  • findViewById in setUpUI
                  • findViewById in setUpUI
                  • findViewBy
                  … (truncated for brevity)
                  

                  Finding #20HomeActivity

                  View Binding Migration Opportunity
                  Class: com.cometchat.javasampleapp.activity.HomeActivity
                  Type: Activity
                  Current Pattern: Manual view lookup
                  findViewById() Calls:
                  • findViewById in onCreate
                  • findViewById in onCreate
                  • findViewById in onCreate
                  • findViewById in onCreate
                  • findViewById in onCreate
                  • findViewById in onCreate
                  • findViewById in onCreate
                  • findViewById in onCreate
                  • findViewById in onCreate
                  • findViewById in onCreate
                  Benefits of View Binding:
                  - Eliminates boilerplate findViewById() calls
                  - Compile-time type safety for view references
                  - Reduced null pointer exceptions
                  - Cleaner, more maintainable code
                  Note: This is a code modernization suggestion, not a memory leak
                  

                  Finding #21MainActivity

                  View Binding Migration Opportunity
                  Class: com.cometchat.javasampleapp.activity.MainActivity
                  Type: Activity
                  Current Pattern: Manual view lookup
                  findViewById() Calls:
                  • findViewById in lambda$onCreate$1$com-cometchat-javasampleapp-activity-MainActivity
                  • findViewById in lambda$onCreate$2$com-cometchat-javasampleapp-activity-MainActivity
                  • findViewById in lambda$onCreate$3$com-cometchat-javasampleapp-activity-MainActivity
                  • findViewById in lambda$onCreate$4$com-cometchat-javasampleapp-activity-MainActivity
                  • findViewById in onCreate
                  • findViewById in onCreate
                  • findViewById in onCreate
                  • findViewById in onCreate
                  • findViewById in onCreate
                  • findViewById in onCreate
                  • findViewById in onCreate
                  • findViewById in onCreate
                  • findViewById in onCreate
                  • findViewById in onCreate
                  • findViewById in onCreate
                  • findViewById in onCreate
                  • findViewById in onCreate
                  • findViewById in onCreate
                  • findViewById in onCreate
                  • find
                  … (truncated for brevity)
                  

                  Finding #22ComponentLaunchActivity

                  View Binding Migration Opportunity
                  Class: com.cometchat.javasampleapp.activity.ComponentLaunchActivity
                  Type: Activity
                  Current Pattern: Manual view lookup
                  findViewById() Calls:
                  • findViewById in onCreate
                  Benefits of View Binding:
                  - Eliminates boilerplate findViewById() calls
                  - Compile-time type safety for view references
                  - Reduced null pointer exceptions
                  - Cleaner, more maintainable code
                  Note: This is a code modernization suggestion, not a memory leak
                  

                  How to respond to this issue:

                  • If a finding is a true positive: consider applying the recommended fix and closing this issue.
                  • If a finding is a false positive: please leave a comment explaining why — your feedback directly improves our research.
                  • If you have questions: reply here or open a discussion.

                  This report was generated by LeakScope as part of the ICSE 2027 research artifact. Tool analyzes compiled APKs using Soot static analysis on cometchat-sample-app-android-java.

                  Activity

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

                  Metadata

                  Metadata

                  Assignees

                  No one assigned

                    Labels

                    No labels
                    No labels

                    Type

                    No type

                    Projects

                    No projects

                      Milestone

                      No milestone

                      Relationships

                      None yet

                      Development

                      No branches or pull requests

                      Issue actions

                      , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
                      Skip to content

                      [LeakScope] 22 Android lifecycle/memory violations detected #72

                      Description

                      LeakScope: Android Lifecycle & Memory Leak Violations

                      About this report: This issue was automatically generated by LeakScope, a static analysis tool for Android lifecycle violations and memory leaks built on the Soot framework. This is part of an ongoing academic research study targeting ICSE 2027. No immediate action is required — we would greatly appreciate your feedback on whether these findings are accurate.

                      Summary

                      LeakScope detected 22 potential issue(s) across 2 detector type(s):

                      SeverityCount
                      🔴 High16
                      🟡 Medium0
                      🟢 Low (improvement opportunity)6
                      DetectorCountSeverityDescription
                      FragmentViewFieldRetentionLeak16🔴 HighFragment stores View references in instance fields not cleared in onDestroyView()
                      ViewBindingOpportunity6🟢 LowManual findViewById() calls — ViewBinding migration opportunity

                      Detailed Findings

                      🔴 FragmentViewFieldRetentionLeak

                      Fragment stores View references in instance fields not cleared in onDestroyView()

                      Finding #1StatusIndicatorFragment

                      Fragment View Field Retention Leak Detected
                      Class: com.cometchat.javasampleapp.fragments.shared.views.StatusIndicatorFragment
                      Issue:
                      - Fragment stores View references in instance fields
                      - These fields are not cleared when the view is destroyed
                      - onDestroyView() is missing
                      Leaked Fields:
                      • parentView : android.widget.LinearLayout (assigned in onCreateView)
                      Why this is dangerous:
                      - Fragment views are destroyed/recreated on config changes
                      - Retained View references prevent garbage collection
                      - Leaked Views hold references to Activity Context
                      - Can cause OutOfMemoryError with repeated Fragment transactions
                      Recommended Fix:
                      Override onDestroyView() and clear all View/Binding fields:
                      @Override
                      public void onDestroyView() {
                      super.onDestroyView();
                      parentView = null;
                      }
                      

                      Finding #2LocalizeFragment

                      Fragment View Field Retention Leak Detected
                      Class: com.cometchat.javasampleapp.fragments.shared.resources.LocalizeFragment
                      Issue:
                      - Fragment stores View references in instance fields
                      - These fields are not cleared when the view is destroyed
                      - onDestroyView() is missing
                      Leaked Fields:
                      • parentView : android.widget.LinearLayout (assigned in onCreateView)
                      Why this is dangerous:
                      - Fragment views are destroyed/recreated on config changes
                      - Retained View references prevent garbage collection
                      - Leaked Views hold references to Activity Context
                      - Can cause OutOfMemoryError with repeated Fragment transactions
                      Recommended Fix:
                      Override onDestroyView() and clear all View/Binding fields:
                      @Override
                      public void onDestroyView() {
                      super.onDestroyView();
                      parentView = null;
                      }
                      

                      Finding #3SchedulerBubbleFragment

                      Fragment View Field Retention Leak Detected
                      Class: com.cometchat.javasampleapp.fragments.shared.views.SchedulerBubbleFragment
                      Issue:
                      - Fragment stores View references in instance fields
                      - These fields are not cleared when the view is destroyed
                      - onDestroyView() is missing
                      Leaked Fields:
                      • schedulerBubble : com.cometchat.chatuikit.shared.views.CometChatSchedulerBubble.CometChatSchedulerBubble (assigned in onCreateView)
                      • cardView : com.google.android.material.card.MaterialCardView (assigned in onCreateView)
                      Why this is dangerous:
                      - Fragment views are destroyed/recreated on config changes
                      - Retained View references prevent garbage collection
                      - Leaked Views hold references to Activity Context
                      - Can cause OutOfMemoryError with repeated Fragment transactions
                      Recommended Fix:
                      Override onDestroyView() and clear all View/Binding fields:
                      @Override
                      public void onDestroyView() {
                      super.onDestroyView();
                      schedulerBubble = null;
                      cardView = null;
                      }
                      

                      Finding #4ListItemFragment

                      Fragment View Field Retention Leak Detected
                      Class: com.cometchat.javasampleapp.fragments.shared.views.ListItemFragment
                      Issue:
                      - Fragment stores View references in instance fields
                      - These fields are not cleared when the view is destroyed
                      - onDestroyView() is missing
                      Leaked Fields:
                      • parentView : android.widget.LinearLayout (assigned in onCreateView)
                      Why this is dangerous:
                      - Fragment views are destroyed/recreated on config changes
                      - Retained View references prevent garbage collection
                      - Leaked Views hold references to Activity Context
                      - Can cause OutOfMemoryError with repeated Fragment transactions
                      Recommended Fix:
                      Override onDestroyView() and clear all View/Binding fields:
                      @Override
                      public void onDestroyView() {
                      super.onDestroyView();
                      parentView = null;
                      }
                      

                      Finding #5AvatarFragment

                      Fragment View Field Retention Leak Detected
                      Class: com.cometchat.javasampleapp.fragments.shared.views.AvatarFragment
                      Issue:
                      - Fragment stores View references in instance fields
                      - These fields are not cleared when the view is destroyed
                      - onDestroyView() is missing
                      Leaked Fields:
                      • avatar : com.cometchat.chatuikit.shared.views.CometChatAvatar.CometChatAvatar (assigned in onCreateView)
                      • parentView : android.widget.LinearLayout (assigned in onCreateView)
                      • cornerRadiusLayout : com.google.android.material.textfield.TextInputLayout (assigned in onCreateView)
                      Why this is dangerous:
                      - Fragment views are destroyed/recreated on config changes
                      - Retained View references prevent garbage collection
                      - Leaked Views hold references to Activity Context
                      - Can cause OutOfMemoryError with repeated Fragment transactions
                      Recommended Fix:
                      Override onDestroyView() and clear all View/Binding fields:
                      @Override
                      public void onDestroyView() {
                      super.onDestroyView();
                      avatar = null;
                      … (truncated for brevity)
                      

                      Finding #6CallLogHistoryFragment

                      Fragment View Field Retention Leak Detected
                      Class: com.cometchat.javasampleapp.fragments.calls.CallLogHistoryFragment
                      Issue:
                      - Fragment stores View references in instance fields
                      - These fields are not cleared when the view is destroyed
                      - onDestroyView() is missing
                      Leaked Fields:
                      • cometChatCallLogHistory : com.cometchat.chatuikit.calls.callhistory.CometChatCallLogHistory (assigned in onCreateView)
                      Why this is dangerous:
                      - Fragment views are destroyed/recreated on config changes
                      - Retained View references prevent garbage collection
                      - Leaked Views hold references to Activity Context
                      - Can cause OutOfMemoryError with repeated Fragment transactions
                      Recommended Fix:
                      Override onDestroyView() and clear all View/Binding fields:
                      @Override
                      public void onDestroyView() {
                      super.onDestroyView();
                      cometChatCallLogHistory = null;
                      }
                      

                      Finding #7CallLogParticipantsFragment

                      Fragment View Field Retention Leak Detected
                      Class: com.cometchat.javasampleapp.fragments.calls.CallLogParticipantsFragment
                      Issue:
                      - Fragment stores View references in instance fields
                      - These fields are not cleared when the view is destroyed
                      - onDestroyView() is missing
                      Leaked Fields:
                      • cometChatCallLogParticipants : com.cometchat.chatuikit.calls.callparticipants.CometChatCallLogParticipants (assigned in onCreateView)
                      Why this is dangerous:
                      - Fragment views are destroyed/recreated on config changes
                      - Retained View references prevent garbage collection
                      - Leaked Views hold references to Activity Context
                      - Can cause OutOfMemoryError with repeated Fragment transactions
                      Recommended Fix:
                      Override onDestroyView() and clear all View/Binding fields:
                      @Override
                      public void onDestroyView() {
                      super.onDestroyView();
                      cometChatCallLogParticipants = null;
                      }
                      

                      Finding #8CallLogDetailsFragment

                      Fragment View Field Retention Leak Detected
                      Class: com.cometchat.javasampleapp.fragments.calls.CallLogDetailsFragment
                      Issue:
                      - Fragment stores View references in instance fields
                      - These fields are not cleared when the view is destroyed
                      - onDestroyView() is missing
                      Leaked Fields:
                      • cometChatCallLogDetails : com.cometchat.chatuikit.calls.calldetails.CometChatCallLogDetails (assigned in onCreateView)
                      Why this is dangerous:
                      - Fragment views are destroyed/recreated on config changes
                      - Retained View references prevent garbage collection
                      - Leaked Views hold references to Activity Context
                      - Can cause OutOfMemoryError with repeated Fragment transactions
                      Recommended Fix:
                      Override onDestroyView() and clear all View/Binding fields:
                      @Override
                      public void onDestroyView() {
                      super.onDestroyView();
                      cometChatCallLogDetails = null;
                      }
                      

                      Finding #9MessageReceiptFragment

                      Fragment View Field Retention Leak Detected
                      Class: com.cometchat.javasampleapp.fragments.shared.views.MessageReceiptFragment
                      Issue:
                      - Fragment stores View references in instance fields
                      - These fields are not cleared when the view is destroyed
                      - onDestroyView() is missing
                      Leaked Fields:
                      • messageReceiptRead : com.cometchat.chatuikit.shared.views.CometChatReceipt.CometChatReceipt (assigned in onCreateView)
                      • parentView : android.widget.LinearLayout (assigned in onCreateView)
                      • messageReceiptDeliver : com.cometchat.chatuikit.shared.views.CometChatReceipt.CometChatReceipt (assigned in onCreateView)
                      • messageReceiptSent : com.cometchat.chatuikit.shared.views.CometChatReceipt.CometChatReceipt (assigned in onCreateView)
                      • messageReceiptProgress : com.cometchat.chatuikit.shared.views.CometChatReceipt.CometChatReceipt (assigned in onCreateView)
                      • messageReceiptError : com.cometchat.chatuikit.shared.views.CometChatReceipt.CometChatReceipt (assigned in onCreateView)
                      Wh
                      … (truncated for brevity)
                      

                      Finding #10CallLogRecordingFragment

                      Fragment View Field Retention Leak Detected
                      Class: com.cometchat.javasampleapp.fragments.calls.CallLogRecordingFragment
                      Issue:
                      - Fragment stores View references in instance fields
                      - These fields are not cleared when the view is destroyed
                      - onDestroyView() is missing
                      Leaked Fields:
                      • cometChatCallLogRecordings : com.cometchat.chatuikit.calls.callrecordings.CometChatCallLogRecordings (assigned in onCreateView)
                      Why this is dangerous:
                      - Fragment views are destroyed/recreated on config changes
                      - Retained View references prevent garbage collection
                      - Leaked Views hold references to Activity Context
                      - Can cause OutOfMemoryError with repeated Fragment transactions
                      Recommended Fix:
                      Override onDestroyView() and clear all View/Binding fields:
                      @Override
                      public void onDestroyView() {
                      super.onDestroyView();
                      cometChatCallLogRecordings = null;
                      }
                      

                      Finding #11BadgeCountFragment

                      Fragment View Field Retention Leak Detected
                      Class: com.cometchat.javasampleapp.fragments.shared.views.BadgeCountFragment
                      Issue:
                      - Fragment stores View references in instance fields
                      - These fields are not cleared when the view is destroyed
                      - onDestroyView() is missing
                      Leaked Fields:
                      • badgeCountLayout : com.google.android.material.textfield.TextInputLayout (assigned in onCreateView)
                      • badgeCountEdt : com.google.android.material.textfield.TextInputEditText (assigned in onCreateView)
                      • parentView : android.widget.LinearLayout (assigned in onCreateView)
                      Why this is dangerous:
                      - Fragment views are destroyed/recreated on config changes
                      - Retained View references prevent garbage collection
                      - Leaked Views hold references to Activity Context
                      - Can cause OutOfMemoryError with repeated Fragment transactions
                      Recommended Fix:
                      Override onDestroyView() and clear all View/Binding fields:
                      @Override
                      public void onDestroyView() {
                      super.onDestroyView();
                      badgeCountLayout = null
                      … (truncated for brevity)
                      

                      Finding #12FormBubbleFragment

                      Fragment View Field Retention Leak Detected
                      Class: com.cometchat.javasampleapp.fragments.shared.views.FormBubbleFragment
                      Issue:
                      - Fragment stores View references in instance fields
                      - These fields are not cleared when the view is destroyed
                      - onDestroyView() is missing
                      Leaked Fields:
                      • parentLayout : android.widget.LinearLayout (assigned in onCreateView)
                      • formBubble : com.cometchat.chatuikit.shared.views.CometChatFormbubble.CometChatFormBubble (assigned in onCreateView)
                      Why this is dangerous:
                      - Fragment views are destroyed/recreated on config changes
                      - Retained View references prevent garbage collection
                      - Leaked Views hold references to Activity Context
                      - Can cause OutOfMemoryError with repeated Fragment transactions
                      Recommended Fix:
                      Override onDestroyView() and clear all View/Binding fields:
                      @Override
                      public void onDestroyView() {
                      super.onDestroyView();
                      parentLayout = null;
                      formBubble = null;
                      }
                      

                      Finding #13MessageComposerFragment

                      Fragment View Field Retention Leak Detected
                      Class: com.cometchat.javasampleapp.fragments.messages.MessageComposerFragment
                      Issue:
                      - Fragment stores View references in instance fields
                      - These fields are not cleared when the view is destroyed
                      - onDestroyView() is missing
                      Leaked Fields:
                      • parentView : android.widget.RelativeLayout (assigned in onCreateView)
                      Why this is dangerous:
                      - Fragment views are destroyed/recreated on config changes
                      - Retained View references prevent garbage collection
                      - Leaked Views hold references to Activity Context
                      - Can cause OutOfMemoryError with repeated Fragment transactions
                      Recommended Fix:
                      Override onDestroyView() and clear all View/Binding fields:
                      @Override
                      public void onDestroyView() {
                      super.onDestroyView();
                      parentView = null;
                      }
                      

                      Finding #14SoundManagerFragment

                      Fragment View Field Retention Leak Detected
                      Class: com.cometchat.javasampleapp.fragments.shared.resources.SoundManagerFragment
                      Issue:
                      - Fragment stores View references in instance fields
                      - These fields are not cleared when the view is destroyed
                      - onDestroyView() is missing
                      Leaked Fields:
                      • parentView : android.widget.LinearLayout (assigned in onCreateView)
                      Why this is dangerous:
                      - Fragment views are destroyed/recreated on config changes
                      - Retained View references prevent garbage collection
                      - Leaked Views hold references to Activity Context
                      - Can cause OutOfMemoryError with repeated Fragment transactions
                      Recommended Fix:
                      Override onDestroyView() and clear all View/Binding fields:
                      @Override
                      public void onDestroyView() {
                      super.onDestroyView();
                      parentView = null;
                      }
                      

                      Finding #15ThemeFragment

                      Fragment View Field Retention Leak Detected
                      Class: com.cometchat.javasampleapp.fragments.shared.resources.ThemeFragment
                      Issue:
                      - Fragment stores View references in instance fields
                      - These fields are not cleared when the view is destroyed
                      - onDestroyView() is missing
                      Leaked Fields:
                      • parentView : android.widget.LinearLayout (assigned in onCreateView)
                      Why this is dangerous:
                      - Fragment views are destroyed/recreated on config changes
                      - Retained View references prevent garbage collection
                      - Leaked Views hold references to Activity Context
                      - Can cause OutOfMemoryError with repeated Fragment transactions
                      Recommended Fix:
                      Override onDestroyView() and clear all View/Binding fields:
                      @Override
                      public void onDestroyView() {
                      super.onDestroyView();
                      parentView = null;
                      }
                      

                      Finding #16CardBubbleFragment

                      Fragment View Field Retention Leak Detected
                      Class: com.cometchat.javasampleapp.fragments.shared.views.CardBubbleFragment
                      Issue:
                      - Fragment stores View references in instance fields
                      - These fields are not cleared when the view is destroyed
                      - onDestroyView() is missing
                      Leaked Fields:
                      • parentLayout : android.widget.LinearLayout (assigned in onCreateView)
                      • cardBubble : com.cometchat.chatuikit.shared.views.CometChatCardBubble.CometChatCardBubble (assigned in onCreateView)
                      • scrollView : android.widget.ScrollView (assigned in onCreateView)
                      Why this is dangerous:
                      - Fragment views are destroyed/recreated on config changes
                      - Retained View references prevent garbage collection
                      - Leaked Views hold references to Activity Context
                      - Can cause OutOfMemoryError with repeated Fragment transactions
                      Recommended Fix:
                      Override onDestroyView() and clear all View/Binding fields:
                      @Override
                      public void onDestroyView() {
                      super.onDestroyView();
                      parentLayout = null;
                      cardBubble =
                      … (truncated for brevity)
                      

                      🟢 ViewBindingOpportunity

                      Manual findViewById() calls — ViewBinding migration opportunity

                      Finding #17CreateUserActivity

                      View Binding Migration Opportunity
                      Class: com.cometchat.javasampleapp.activity.CreateUserActivity
                      Type: Activity
                      Current Pattern: Manual view lookup
                      findViewById() Calls:
                      • findViewById in setUpUI
                      • findViewById in setUpUI
                      • findViewById in setUpUI
                      • findViewById in setUpUI
                      • findViewById in onCreate
                      • findViewById in onCreate
                      • findViewById in onCreate
                      • findViewById in onCreate
                      • findViewById in onCreate
                      Benefits of View Binding:
                      - Eliminates boilerplate findViewById() calls
                      - Compile-time type safety for view references
                      - Reduced null pointer exceptions
                      - Cleaner, more maintainable code
                      Note: This is a code modernization suggestion, not a memory leak
                      

                      Finding #18LoginActivity

                      View Binding Migration Opportunity
                      Class: com.cometchat.javasampleapp.activity.LoginActivity
                      Type: Activity
                      Current Pattern: Manual view lookup
                      findViewById() Calls:
                      • findViewById in setUpUI
                      • findViewById in setUpUI
                      • findViewById in setUpUI
                      • findViewById in setUpUI
                      • findViewById in lambda$onCreate$1$com-cometchat-javasampleapp-activity-LoginActivity
                      • findViewById in onCreate
                      • findViewById in onCreate
                      • findViewById in onCreate
                      • findViewById in onCreate
                      • findViewById in onCreate
                      Benefits of View Binding:
                      - Eliminates boilerplate findViewById() calls
                      - Compile-time type safety for view references
                      - Reduced null pointer exceptions
                      - Cleaner, more maintainable code
                      Note: This is a code modernization suggestion, not a memory leak
                      

                      Finding #19ComponentListActivity

                      View Binding Migration Opportunity
                      Class: com.cometchat.javasampleapp.activity.ComponentListActivity
                      Type: Activity
                      Current Pattern: Manual view lookup
                      findViewById() Calls:
                      • findViewById in setUpUI
                      • findViewById in setUpUI
                      • findViewById in setUpUI
                      • findViewById in setUpUI
                      • findViewById in setUpUI
                      • findViewById in setUpUI
                      • findViewById in setUpUI
                      • findViewById in setUpUI
                      • findViewById in setUpUI
                      • findViewById in setUpUI
                      • findViewById in setUpUI
                      • findViewById in setUpUI
                      • findViewById in setUpUI
                      • findViewById in setUpUI
                      • findViewById in setUpUI
                      • findViewById in setUpUI
                      • findViewById in setUpUI
                      • findViewById in setUpUI
                      • findViewById in setUpUI
                      • findViewById in setUpUI
                      • findViewById in setUpUI
                      • findViewById in setUpUI
                      • findViewById in setUpUI
                      • findViewById in setUpUI
                      • findViewById in setUpUI
                      • findViewById in setUpUI
                      • findViewById in setUpUI
                      • findViewBy
                      … (truncated for brevity)
                      

                      Finding #20HomeActivity

                      View Binding Migration Opportunity
                      Class: com.cometchat.javasampleapp.activity.HomeActivity
                      Type: Activity
                      Current Pattern: Manual view lookup
                      findViewById() Calls:
                      • findViewById in onCreate
                      • findViewById in onCreate
                      • findViewById in onCreate
                      • findViewById in onCreate
                      • findViewById in onCreate
                      • findViewById in onCreate
                      • findViewById in onCreate
                      • findViewById in onCreate
                      • findViewById in onCreate
                      • findViewById in onCreate
                      Benefits of View Binding:
                      - Eliminates boilerplate findViewById() calls
                      - Compile-time type safety for view references
                      - Reduced null pointer exceptions
                      - Cleaner, more maintainable code
                      Note: This is a code modernization suggestion, not a memory leak
                      

                      Finding #21MainActivity

                      View Binding Migration Opportunity
                      Class: com.cometchat.javasampleapp.activity.MainActivity
                      Type: Activity
                      Current Pattern: Manual view lookup
                      findViewById() Calls:
                      • findViewById in lambda$onCreate$1$com-cometchat-javasampleapp-activity-MainActivity
                      • findViewById in lambda$onCreate$2$com-cometchat-javasampleapp-activity-MainActivity
                      • findViewById in lambda$onCreate$3$com-cometchat-javasampleapp-activity-MainActivity
                      • findViewById in lambda$onCreate$4$com-cometchat-javasampleapp-activity-MainActivity
                      • findViewById in onCreate
                      • findViewById in onCreate
                      • findViewById in onCreate
                      • findViewById in onCreate
                      • findViewById in onCreate
                      • findViewById in onCreate
                      • findViewById in onCreate
                      • findViewById in onCreate
                      • findViewById in onCreate
                      • findViewById in onCreate
                      • findViewById in onCreate
                      • findViewById in onCreate
                      • findViewById in onCreate
                      • findViewById in onCreate
                      • findViewById in onCreate
                      • find
                      … (truncated for brevity)
                      

                      Finding #22ComponentLaunchActivity

                      View Binding Migration Opportunity
                      Class: com.cometchat.javasampleapp.activity.ComponentLaunchActivity
                      Type: Activity
                      Current Pattern: Manual view lookup
                      findViewById() Calls:
                      • findViewById in onCreate
                      Benefits of View Binding:
                      - Eliminates boilerplate findViewById() calls
                      - Compile-time type safety for view references
                      - Reduced null pointer exceptions
                      - Cleaner, more maintainable code
                      Note: This is a code modernization suggestion, not a memory leak
                      

                      How to respond to this issue:

                      • If a finding is a true positive: consider applying the recommended fix and closing this issue.
                      • If a finding is a false positive: please leave a comment explaining why — your feedback directly improves our research.
                      • If you have questions: reply here or open a discussion.

                      This report was generated by LeakScope as part of the ICSE 2027 research artifact. Tool analyzes compiled APKs using Soot static analysis on cometchat-sample-app-android-java.

                      Activity

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

                      Metadata

                      Metadata

                      Assignees

                      No one assigned

                        Labels

                        No labels
                        No labels

                        Type

                        No type

                        Projects

                        No projects

                          Milestone

                          No milestone

                          Relationships

                          None yet

                          Development

                          No branches or pull requests

                          Issue actions

                          , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
                          Skip to content

                          [LeakScope] 22 Android lifecycle/memory violations detected #72

                          Description

                          LeakScope: Android Lifecycle & Memory Leak Violations

                          About this report: This issue was automatically generated by LeakScope, a static analysis tool for Android lifecycle violations and memory leaks built on the Soot framework. This is part of an ongoing academic research study targeting ICSE 2027. No immediate action is required — we would greatly appreciate your feedback on whether these findings are accurate.

                          Summary

                          LeakScope detected 22 potential issue(s) across 2 detector type(s):

                          SeverityCount
                          🔴 High16
                          🟡 Medium0
                          🟢 Low (improvement opportunity)6
                          DetectorCountSeverityDescription
                          FragmentViewFieldRetentionLeak16🔴 HighFragment stores View references in instance fields not cleared in onDestroyView()
                          ViewBindingOpportunity6🟢 LowManual findViewById() calls — ViewBinding migration opportunity

                          Detailed Findings

                          🔴 FragmentViewFieldRetentionLeak

                          Fragment stores View references in instance fields not cleared in onDestroyView()

                          Finding #1StatusIndicatorFragment

                          Fragment View Field Retention Leak Detected
                          Class: com.cometchat.javasampleapp.fragments.shared.views.StatusIndicatorFragment
                          Issue:
                          - Fragment stores View references in instance fields
                          - These fields are not cleared when the view is destroyed
                          - onDestroyView() is missing
                          Leaked Fields:
                          • parentView : android.widget.LinearLayout (assigned in onCreateView)
                          Why this is dangerous:
                          - Fragment views are destroyed/recreated on config changes
                          - Retained View references prevent garbage collection
                          - Leaked Views hold references to Activity Context
                          - Can cause OutOfMemoryError with repeated Fragment transactions
                          Recommended Fix:
                          Override onDestroyView() and clear all View/Binding fields:
                          @Override
                          public void onDestroyView() {
                          super.onDestroyView();
                          parentView = null;
                          }
                          

                          Finding #2LocalizeFragment

                          Fragment View Field Retention Leak Detected
                          Class: com.cometchat.javasampleapp.fragments.shared.resources.LocalizeFragment
                          Issue:
                          - Fragment stores View references in instance fields
                          - These fields are not cleared when the view is destroyed
                          - onDestroyView() is missing
                          Leaked Fields:
                          • parentView : android.widget.LinearLayout (assigned in onCreateView)
                          Why this is dangerous:
                          - Fragment views are destroyed/recreated on config changes
                          - Retained View references prevent garbage collection
                          - Leaked Views hold references to Activity Context
                          - Can cause OutOfMemoryError with repeated Fragment transactions
                          Recommended Fix:
                          Override onDestroyView() and clear all View/Binding fields:
                          @Override
                          public void onDestroyView() {
                          super.onDestroyView();
                          parentView = null;
                          }
                          

                          Finding #3SchedulerBubbleFragment

                          Fragment View Field Retention Leak Detected
                          Class: com.cometchat.javasampleapp.fragments.shared.views.SchedulerBubbleFragment
                          Issue:
                          - Fragment stores View references in instance fields
                          - These fields are not cleared when the view is destroyed
                          - onDestroyView() is missing
                          Leaked Fields:
                          • schedulerBubble : com.cometchat.chatuikit.shared.views.CometChatSchedulerBubble.CometChatSchedulerBubble (assigned in onCreateView)
                          • cardView : com.google.android.material.card.MaterialCardView (assigned in onCreateView)
                          Why this is dangerous:
                          - Fragment views are destroyed/recreated on config changes
                          - Retained View references prevent garbage collection
                          - Leaked Views hold references to Activity Context
                          - Can cause OutOfMemoryError with repeated Fragment transactions
                          Recommended Fix:
                          Override onDestroyView() and clear all View/Binding fields:
                          @Override
                          public void onDestroyView() {
                          super.onDestroyView();
                          schedulerBubble = null;
                          cardView = null;
                          }
                          

                          Finding #4ListItemFragment

                          Fragment View Field Retention Leak Detected
                          Class: com.cometchat.javasampleapp.fragments.shared.views.ListItemFragment
                          Issue:
                          - Fragment stores View references in instance fields
                          - These fields are not cleared when the view is destroyed
                          - onDestroyView() is missing
                          Leaked Fields:
                          • parentView : android.widget.LinearLayout (assigned in onCreateView)
                          Why this is dangerous:
                          - Fragment views are destroyed/recreated on config changes
                          - Retained View references prevent garbage collection
                          - Leaked Views hold references to Activity Context
                          - Can cause OutOfMemoryError with repeated Fragment transactions
                          Recommended Fix:
                          Override onDestroyView() and clear all View/Binding fields:
                          @Override
                          public void onDestroyView() {
                          super.onDestroyView();
                          parentView = null;
                          }
                          

                          Finding #5AvatarFragment

                          Fragment View Field Retention Leak Detected
                          Class: com.cometchat.javasampleapp.fragments.shared.views.AvatarFragment
                          Issue:
                          - Fragment stores View references in instance fields
                          - These fields are not cleared when the view is destroyed
                          - onDestroyView() is missing
                          Leaked Fields:
                          • avatar : com.cometchat.chatuikit.shared.views.CometChatAvatar.CometChatAvatar (assigned in onCreateView)
                          • parentView : android.widget.LinearLayout (assigned in onCreateView)
                          • cornerRadiusLayout : com.google.android.material.textfield.TextInputLayout (assigned in onCreateView)
                          Why this is dangerous:
                          - Fragment views are destroyed/recreated on config changes
                          - Retained View references prevent garbage collection
                          - Leaked Views hold references to Activity Context
                          - Can cause OutOfMemoryError with repeated Fragment transactions
                          Recommended Fix:
                          Override onDestroyView() and clear all View/Binding fields:
                          @Override
                          public void onDestroyView() {
                          super.onDestroyView();
                          avatar = null;
                          … (truncated for brevity)
                          

                          Finding #6CallLogHistoryFragment

                          Fragment View Field Retention Leak Detected
                          Class: com.cometchat.javasampleapp.fragments.calls.CallLogHistoryFragment
                          Issue:
                          - Fragment stores View references in instance fields
                          - These fields are not cleared when the view is destroyed
                          - onDestroyView() is missing
                          Leaked Fields:
                          • cometChatCallLogHistory : com.cometchat.chatuikit.calls.callhistory.CometChatCallLogHistory (assigned in onCreateView)
                          Why this is dangerous:
                          - Fragment views are destroyed/recreated on config changes
                          - Retained View references prevent garbage collection
                          - Leaked Views hold references to Activity Context
                          - Can cause OutOfMemoryError with repeated Fragment transactions
                          Recommended Fix:
                          Override onDestroyView() and clear all View/Binding fields:
                          @Override
                          public void onDestroyView() {
                          super.onDestroyView();
                          cometChatCallLogHistory = null;
                          }
                          

                          Finding #7CallLogParticipantsFragment

                          Fragment View Field Retention Leak Detected
                          Class: com.cometchat.javasampleapp.fragments.calls.CallLogParticipantsFragment
                          Issue:
                          - Fragment stores View references in instance fields
                          - These fields are not cleared when the view is destroyed
                          - onDestroyView() is missing
                          Leaked Fields:
                          • cometChatCallLogParticipants : com.cometchat.chatuikit.calls.callparticipants.CometChatCallLogParticipants (assigned in onCreateView)
                          Why this is dangerous:
                          - Fragment views are destroyed/recreated on config changes
                          - Retained View references prevent garbage collection
                          - Leaked Views hold references to Activity Context
                          - Can cause OutOfMemoryError with repeated Fragment transactions
                          Recommended Fix:
                          Override onDestroyView() and clear all View/Binding fields:
                          @Override
                          public void onDestroyView() {
                          super.onDestroyView();
                          cometChatCallLogParticipants = null;
                          }
                          

                          Finding #8CallLogDetailsFragment

                          Fragment View Field Retention Leak Detected
                          Class: com.cometchat.javasampleapp.fragments.calls.CallLogDetailsFragment
                          Issue:
                          - Fragment stores View references in instance fields
                          - These fields are not cleared when the view is destroyed
                          - onDestroyView() is missing
                          Leaked Fields:
                          • cometChatCallLogDetails : com.cometchat.chatuikit.calls.calldetails.CometChatCallLogDetails (assigned in onCreateView)
                          Why this is dangerous:
                          - Fragment views are destroyed/recreated on config changes
                          - Retained View references prevent garbage collection
                          - Leaked Views hold references to Activity Context
                          - Can cause OutOfMemoryError with repeated Fragment transactions
                          Recommended Fix:
                          Override onDestroyView() and clear all View/Binding fields:
                          @Override
                          public void onDestroyView() {
                          super.onDestroyView();
                          cometChatCallLogDetails = null;
                          }
                          

                          Finding #9MessageReceiptFragment

                          Fragment View Field Retention Leak Detected
                          Class: com.cometchat.javasampleapp.fragments.shared.views.MessageReceiptFragment
                          Issue:
                          - Fragment stores View references in instance fields
                          - These fields are not cleared when the view is destroyed
                          - onDestroyView() is missing
                          Leaked Fields:
                          • messageReceiptRead : com.cometchat.chatuikit.shared.views.CometChatReceipt.CometChatReceipt (assigned in onCreateView)
                          • parentView : android.widget.LinearLayout (assigned in onCreateView)
                          • messageReceiptDeliver : com.cometchat.chatuikit.shared.views.CometChatReceipt.CometChatReceipt (assigned in onCreateView)
                          • messageReceiptSent : com.cometchat.chatuikit.shared.views.CometChatReceipt.CometChatReceipt (assigned in onCreateView)
                          • messageReceiptProgress : com.cometchat.chatuikit.shared.views.CometChatReceipt.CometChatReceipt (assigned in onCreateView)
                          • messageReceiptError : com.cometchat.chatuikit.shared.views.CometChatReceipt.CometChatReceipt (assigned in onCreateView)
                          Wh
                          … (truncated for brevity)
                          

                          Finding #10CallLogRecordingFragment

                          Fragment View Field Retention Leak Detected
                          Class: com.cometchat.javasampleapp.fragments.calls.CallLogRecordingFragment
                          Issue:
                          - Fragment stores View references in instance fields
                          - These fields are not cleared when the view is destroyed
                          - onDestroyView() is missing
                          Leaked Fields:
                          • cometChatCallLogRecordings : com.cometchat.chatuikit.calls.callrecordings.CometChatCallLogRecordings (assigned in onCreateView)
                          Why this is dangerous:
                          - Fragment views are destroyed/recreated on config changes
                          - Retained View references prevent garbage collection
                          - Leaked Views hold references to Activity Context
                          - Can cause OutOfMemoryError with repeated Fragment transactions
                          Recommended Fix:
                          Override onDestroyView() and clear all View/Binding fields:
                          @Override
                          public void onDestroyView() {
                          super.onDestroyView();
                          cometChatCallLogRecordings = null;
                          }
                          

                          Finding #11BadgeCountFragment

                          Fragment View Field Retention Leak Detected
                          Class: com.cometchat.javasampleapp.fragments.shared.views.BadgeCountFragment
                          Issue:
                          - Fragment stores View references in instance fields
                          - These fields are not cleared when the view is destroyed
                          - onDestroyView() is missing
                          Leaked Fields:
                          • badgeCountLayout : com.google.android.material.textfield.TextInputLayout (assigned in onCreateView)
                          • badgeCountEdt : com.google.android.material.textfield.TextInputEditText (assigned in onCreateView)
                          • parentView : android.widget.LinearLayout (assigned in onCreateView)
                          Why this is dangerous:
                          - Fragment views are destroyed/recreated on config changes
                          - Retained View references prevent garbage collection
                          - Leaked Views hold references to Activity Context
                          - Can cause OutOfMemoryError with repeated Fragment transactions
                          Recommended Fix:
                          Override onDestroyView() and clear all View/Binding fields:
                          @Override
                          public void onDestroyView() {
                          super.onDestroyView();
                          badgeCountLayout = null
                          … (truncated for brevity)
                          

                          Finding #12FormBubbleFragment

                          Fragment View Field Retention Leak Detected
                          Class: com.cometchat.javasampleapp.fragments.shared.views.FormBubbleFragment
                          Issue:
                          - Fragment stores View references in instance fields
                          - These fields are not cleared when the view is destroyed
                          - onDestroyView() is missing
                          Leaked Fields:
                          • parentLayout : android.widget.LinearLayout (assigned in onCreateView)
                          • formBubble : com.cometchat.chatuikit.shared.views.CometChatFormbubble.CometChatFormBubble (assigned in onCreateView)
                          Why this is dangerous:
                          - Fragment views are destroyed/recreated on config changes
                          - Retained View references prevent garbage collection
                          - Leaked Views hold references to Activity Context
                          - Can cause OutOfMemoryError with repeated Fragment transactions
                          Recommended Fix:
                          Override onDestroyView() and clear all View/Binding fields:
                          @Override
                          public void onDestroyView() {
                          super.onDestroyView();
                          parentLayout = null;
                          formBubble = null;
                          }
                          

                          Finding #13MessageComposerFragment

                          Fragment View Field Retention Leak Detected
                          Class: com.cometchat.javasampleapp.fragments.messages.MessageComposerFragment
                          Issue:
                          - Fragment stores View references in instance fields
                          - These fields are not cleared when the view is destroyed
                          - onDestroyView() is missing
                          Leaked Fields:
                          • parentView : android.widget.RelativeLayout (assigned in onCreateView)
                          Why this is dangerous:
                          - Fragment views are destroyed/recreated on config changes
                          - Retained View references prevent garbage collection
                          - Leaked Views hold references to Activity Context
                          - Can cause OutOfMemoryError with repeated Fragment transactions
                          Recommended Fix:
                          Override onDestroyView() and clear all View/Binding fields:
                          @Override
                          public void onDestroyView() {
                          super.onDestroyView();
                          parentView = null;
                          }
                          

                          Finding #14SoundManagerFragment

                          Fragment View Field Retention Leak Detected
                          Class: com.cometchat.javasampleapp.fragments.shared.resources.SoundManagerFragment
                          Issue:
                          - Fragment stores View references in instance fields
                          - These fields are not cleared when the view is destroyed
                          - onDestroyView() is missing
                          Leaked Fields:
                          • parentView : android.widget.LinearLayout (assigned in onCreateView)
                          Why this is dangerous:
                          - Fragment views are destroyed/recreated on config changes
                          - Retained View references prevent garbage collection
                          - Leaked Views hold references to Activity Context
                          - Can cause OutOfMemoryError with repeated Fragment transactions
                          Recommended Fix:
                          Override onDestroyView() and clear all View/Binding fields:
                          @Override
                          public void onDestroyView() {
                          super.onDestroyView();
                          parentView = null;
                          }
                          

                          Finding #15ThemeFragment

                          Fragment View Field Retention Leak Detected
                          Class: com.cometchat.javasampleapp.fragments.shared.resources.ThemeFragment
                          Issue:
                          - Fragment stores View references in instance fields
                          - These fields are not cleared when the view is destroyed
                          - onDestroyView() is missing
                          Leaked Fields:
                          • parentView : android.widget.LinearLayout (assigned in onCreateView)
                          Why this is dangerous:
                          - Fragment views are destroyed/recreated on config changes
                          - Retained View references prevent garbage collection
                          - Leaked Views hold references to Activity Context
                          - Can cause OutOfMemoryError with repeated Fragment transactions
                          Recommended Fix:
                          Override onDestroyView() and clear all View/Binding fields:
                          @Override
                          public void onDestroyView() {
                          super.onDestroyView();
                          parentView = null;
                          }
                          

                          Finding #16CardBubbleFragment

                          Fragment View Field Retention Leak Detected
                          Class: com.cometchat.javasampleapp.fragments.shared.views.CardBubbleFragment
                          Issue:
                          - Fragment stores View references in instance fields
                          - These fields are not cleared when the view is destroyed
                          - onDestroyView() is missing
                          Leaked Fields:
                          • parentLayout : android.widget.LinearLayout (assigned in onCreateView)
                          • cardBubble : com.cometchat.chatuikit.shared.views.CometChatCardBubble.CometChatCardBubble (assigned in onCreateView)
                          • scrollView : android.widget.ScrollView (assigned in onCreateView)
                          Why this is dangerous:
                          - Fragment views are destroyed/recreated on config changes
                          - Retained View references prevent garbage collection
                          - Leaked Views hold references to Activity Context
                          - Can cause OutOfMemoryError with repeated Fragment transactions
                          Recommended Fix:
                          Override onDestroyView() and clear all View/Binding fields:
                          @Override
                          public void onDestroyView() {
                          super.onDestroyView();
                          parentLayout = null;
                          cardBubble =
                          … (truncated for brevity)
                          

                          🟢 ViewBindingOpportunity

                          Manual findViewById() calls — ViewBinding migration opportunity

                          Finding #17CreateUserActivity

                          View Binding Migration Opportunity
                          Class: com.cometchat.javasampleapp.activity.CreateUserActivity
                          Type: Activity
                          Current Pattern: Manual view lookup
                          findViewById() Calls:
                          • findViewById in setUpUI
                          • findViewById in setUpUI
                          • findViewById in setUpUI
                          • findViewById in setUpUI
                          • findViewById in onCreate
                          • findViewById in onCreate
                          • findViewById in onCreate
                          • findViewById in onCreate
                          • findViewById in onCreate
                          Benefits of View Binding:
                          - Eliminates boilerplate findViewById() calls
                          - Compile-time type safety for view references
                          - Reduced null pointer exceptions
                          - Cleaner, more maintainable code
                          Note: This is a code modernization suggestion, not a memory leak
                          

                          Finding #18LoginActivity

                          View Binding Migration Opportunity
                          Class: com.cometchat.javasampleapp.activity.LoginActivity
                          Type: Activity
                          Current Pattern: Manual view lookup
                          findViewById() Calls:
                          • findViewById in setUpUI
                          • findViewById in setUpUI
                          • findViewById in setUpUI
                          • findViewById in setUpUI
                          • findViewById in lambda$onCreate$1$com-cometchat-javasampleapp-activity-LoginActivity
                          • findViewById in onCreate
                          • findViewById in onCreate
                          • findViewById in onCreate
                          • findViewById in onCreate
                          • findViewById in onCreate
                          Benefits of View Binding:
                          - Eliminates boilerplate findViewById() calls
                          - Compile-time type safety for view references
                          - Reduced null pointer exceptions
                          - Cleaner, more maintainable code
                          Note: This is a code modernization suggestion, not a memory leak
                          

                          Finding #19ComponentListActivity

                          View Binding Migration Opportunity
                          Class: com.cometchat.javasampleapp.activity.ComponentListActivity
                          Type: Activity
                          Current Pattern: Manual view lookup
                          findViewById() Calls:
                          • findViewById in setUpUI
                          • findViewById in setUpUI
                          • findViewById in setUpUI
                          • findViewById in setUpUI
                          • findViewById in setUpUI
                          • findViewById in setUpUI
                          • findViewById in setUpUI
                          • findViewById in setUpUI
                          • findViewById in setUpUI
                          • findViewById in setUpUI
                          • findViewById in setUpUI
                          • findViewById in setUpUI
                          • findViewById in setUpUI
                          • findViewById in setUpUI
                          • findViewById in setUpUI
                          • findViewById in setUpUI
                          • findViewById in setUpUI
                          • findViewById in setUpUI
                          • findViewById in setUpUI
                          • findViewById in setUpUI
                          • findViewById in setUpUI
                          • findViewById in setUpUI
                          • findViewById in setUpUI
                          • findViewById in setUpUI
                          • findViewById in setUpUI
                          • findViewById in setUpUI
                          • findViewById in setUpUI
                          • findViewBy
                          … (truncated for brevity)
                          

                          Finding #20HomeActivity

                          View Binding Migration Opportunity
                          Class: com.cometchat.javasampleapp.activity.HomeActivity
                          Type: Activity
                          Current Pattern: Manual view lookup
                          findViewById() Calls:
                          • findViewById in onCreate
                          • findViewById in onCreate
                          • findViewById in onCreate
                          • findViewById in onCreate
                          • findViewById in onCreate
                          • findViewById in onCreate
                          • findViewById in onCreate
                          • findViewById in onCreate
                          • findViewById in onCreate
                          • findViewById in onCreate
                          Benefits of View Binding:
                          - Eliminates boilerplate findViewById() calls
                          - Compile-time type safety for view references
                          - Reduced null pointer exceptions
                          - Cleaner, more maintainable code
                          Note: This is a code modernization suggestion, not a memory leak
                          

                          Finding #21MainActivity

                          View Binding Migration Opportunity
                          Class: com.cometchat.javasampleapp.activity.MainActivity
                          Type: Activity
                          Current Pattern: Manual view lookup
                          findViewById() Calls:
                          • findViewById in lambda$onCreate$1$com-cometchat-javasampleapp-activity-MainActivity
                          • findViewById in lambda$onCreate$2$com-cometchat-javasampleapp-activity-MainActivity
                          • findViewById in lambda$onCreate$3$com-cometchat-javasampleapp-activity-MainActivity
                          • findViewById in lambda$onCreate$4$com-cometchat-javasampleapp-activity-MainActivity
                          • findViewById in onCreate
                          • findViewById in onCreate
                          • findViewById in onCreate
                          • findViewById in onCreate
                          • findViewById in onCreate
                          • findViewById in onCreate
                          • findViewById in onCreate
                          • findViewById in onCreate
                          • findViewById in onCreate
                          • findViewById in onCreate
                          • findViewById in onCreate
                          • findViewById in onCreate
                          • findViewById in onCreate
                          • findViewById in onCreate
                          • findViewById in onCreate
                          • find
                          … (truncated for brevity)
                          

                          Finding #22ComponentLaunchActivity

                          View Binding Migration Opportunity
                          Class: com.cometchat.javasampleapp.activity.ComponentLaunchActivity
                          Type: Activity
                          Current Pattern: Manual view lookup
                          findViewById() Calls:
                          • findViewById in onCreate
                          Benefits of View Binding:
                          - Eliminates boilerplate findViewById() calls
                          - Compile-time type safety for view references
                          - Reduced null pointer exceptions
                          - Cleaner, more maintainable code
                          Note: This is a code modernization suggestion, not a memory leak
                          

                          How to respond to this issue:

                          • If a finding is a true positive: consider applying the recommended fix and closing this issue.
                          • If a finding is a false positive: please leave a comment explaining why — your feedback directly improves our research.
                          • If you have questions: reply here or open a discussion.

                          This report was generated by LeakScope as part of the ICSE 2027 research artifact. Tool analyzes compiled APKs using Soot static analysis on cometchat-sample-app-android-java.

                          Activity

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

                          Metadata

                          Metadata

                          Assignees

                          No one assigned

                            Labels

                            No labels
                            No labels

                            Type

                            No type

                            Projects

                            No projects

                              Milestone

                              No milestone

                              Relationships

                              None yet

                              Development

                              No branches or pull requests

                              Issue actions

                              , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
                              Skip to content

                              [LeakScope] 22 Android lifecycle/memory violations detected #72

                              Description

                              LeakScope: Android Lifecycle & Memory Leak Violations

                              About this report: This issue was automatically generated by LeakScope, a static analysis tool for Android lifecycle violations and memory leaks built on the Soot framework. This is part of an ongoing academic research study targeting ICSE 2027. No immediate action is required — we would greatly appreciate your feedback on whether these findings are accurate.

                              Summary

                              LeakScope detected 22 potential issue(s) across 2 detector type(s):

                              SeverityCount
                              🔴 High16
                              🟡 Medium0
                              🟢 Low (improvement opportunity)6
                              DetectorCountSeverityDescription
                              FragmentViewFieldRetentionLeak16🔴 HighFragment stores View references in instance fields not cleared in onDestroyView()
                              ViewBindingOpportunity6🟢 LowManual findViewById() calls — ViewBinding migration opportunity

                              Detailed Findings

                              🔴 FragmentViewFieldRetentionLeak

                              Fragment stores View references in instance fields not cleared in onDestroyView()

                              Finding #1StatusIndicatorFragment

                              Fragment View Field Retention Leak Detected
                              Class: com.cometchat.javasampleapp.fragments.shared.views.StatusIndicatorFragment
                              Issue:
                              - Fragment stores View references in instance fields
                              - These fields are not cleared when the view is destroyed
                              - onDestroyView() is missing
                              Leaked Fields:
                              • parentView : android.widget.LinearLayout (assigned in onCreateView)
                              Why this is dangerous:
                              - Fragment views are destroyed/recreated on config changes
                              - Retained View references prevent garbage collection
                              - Leaked Views hold references to Activity Context
                              - Can cause OutOfMemoryError with repeated Fragment transactions
                              Recommended Fix:
                              Override onDestroyView() and clear all View/Binding fields:
                              @Override
                              public void onDestroyView() {
                              super.onDestroyView();
                              parentView = null;
                              }
                              

                              Finding #2LocalizeFragment

                              Fragment View Field Retention Leak Detected
                              Class: com.cometchat.javasampleapp.fragments.shared.resources.LocalizeFragment
                              Issue:
                              - Fragment stores View references in instance fields
                              - These fields are not cleared when the view is destroyed
                              - onDestroyView() is missing
                              Leaked Fields:
                              • parentView : android.widget.LinearLayout (assigned in onCreateView)
                              Why this is dangerous:
                              - Fragment views are destroyed/recreated on config changes
                              - Retained View references prevent garbage collection
                              - Leaked Views hold references to Activity Context
                              - Can cause OutOfMemoryError with repeated Fragment transactions
                              Recommended Fix:
                              Override onDestroyView() and clear all View/Binding fields:
                              @Override
                              public void onDestroyView() {
                              super.onDestroyView();
                              parentView = null;
                              }
                              

                              Finding #3SchedulerBubbleFragment

                              Fragment View Field Retention Leak Detected
                              Class: com.cometchat.javasampleapp.fragments.shared.views.SchedulerBubbleFragment
                              Issue:
                              - Fragment stores View references in instance fields
                              - These fields are not cleared when the view is destroyed
                              - onDestroyView() is missing
                              Leaked Fields:
                              • schedulerBubble : com.cometchat.chatuikit.shared.views.CometChatSchedulerBubble.CometChatSchedulerBubble (assigned in onCreateView)
                              • cardView : com.google.android.material.card.MaterialCardView (assigned in onCreateView)
                              Why this is dangerous:
                              - Fragment views are destroyed/recreated on config changes
                              - Retained View references prevent garbage collection
                              - Leaked Views hold references to Activity Context
                              - Can cause OutOfMemoryError with repeated Fragment transactions
                              Recommended Fix:
                              Override onDestroyView() and clear all View/Binding fields:
                              @Override
                              public void onDestroyView() {
                              super.onDestroyView();
                              schedulerBubble = null;
                              cardView = null;
                              }
                              

                              Finding #4ListItemFragment

                              Fragment View Field Retention Leak Detected
                              Class: com.cometchat.javasampleapp.fragments.shared.views.ListItemFragment
                              Issue:
                              - Fragment stores View references in instance fields
                              - These fields are not cleared when the view is destroyed
                              - onDestroyView() is missing
                              Leaked Fields:
                              • parentView : android.widget.LinearLayout (assigned in onCreateView)
                              Why this is dangerous:
                              - Fragment views are destroyed/recreated on config changes
                              - Retained View references prevent garbage collection
                              - Leaked Views hold references to Activity Context
                              - Can cause OutOfMemoryError with repeated Fragment transactions
                              Recommended Fix:
                              Override onDestroyView() and clear all View/Binding fields:
                              @Override
                              public void onDestroyView() {
                              super.onDestroyView();
                              parentView = null;
                              }
                              

                              Finding #5AvatarFragment

                              Fragment View Field Retention Leak Detected
                              Class: com.cometchat.javasampleapp.fragments.shared.views.AvatarFragment
                              Issue:
                              - Fragment stores View references in instance fields
                              - These fields are not cleared when the view is destroyed
                              - onDestroyView() is missing
                              Leaked Fields:
                              • avatar : com.cometchat.chatuikit.shared.views.CometChatAvatar.CometChatAvatar (assigned in onCreateView)
                              • parentView : android.widget.LinearLayout (assigned in onCreateView)
                              • cornerRadiusLayout : com.google.android.material.textfield.TextInputLayout (assigned in onCreateView)
                              Why this is dangerous:
                              - Fragment views are destroyed/recreated on config changes
                              - Retained View references prevent garbage collection
                              - Leaked Views hold references to Activity Context
                              - Can cause OutOfMemoryError with repeated Fragment transactions
                              Recommended Fix:
                              Override onDestroyView() and clear all View/Binding fields:
                              @Override
                              public void onDestroyView() {
                              super.onDestroyView();
                              avatar = null;
                              … (truncated for brevity)
                              

                              Finding #6CallLogHistoryFragment

                              Fragment View Field Retention Leak Detected
                              Class: com.cometchat.javasampleapp.fragments.calls.CallLogHistoryFragment
                              Issue:
                              - Fragment stores View references in instance fields
                              - These fields are not cleared when the view is destroyed
                              - onDestroyView() is missing
                              Leaked Fields:
                              • cometChatCallLogHistory : com.cometchat.chatuikit.calls.callhistory.CometChatCallLogHistory (assigned in onCreateView)
                              Why this is dangerous:
                              - Fragment views are destroyed/recreated on config changes
                              - Retained View references prevent garbage collection
                              - Leaked Views hold references to Activity Context
                              - Can cause OutOfMemoryError with repeated Fragment transactions
                              Recommended Fix:
                              Override onDestroyView() and clear all View/Binding fields:
                              @Override
                              public void onDestroyView() {
                              super.onDestroyView();
                              cometChatCallLogHistory = null;
                              }
                              

                              Finding #7CallLogParticipantsFragment

                              Fragment View Field Retention Leak Detected
                              Class: com.cometchat.javasampleapp.fragments.calls.CallLogParticipantsFragment
                              Issue:
                              - Fragment stores View references in instance fields
                              - These fields are not cleared when the view is destroyed
                              - onDestroyView() is missing
                              Leaked Fields:
                              • cometChatCallLogParticipants : com.cometchat.chatuikit.calls.callparticipants.CometChatCallLogParticipants (assigned in onCreateView)
                              Why this is dangerous:
                              - Fragment views are destroyed/recreated on config changes
                              - Retained View references prevent garbage collection
                              - Leaked Views hold references to Activity Context
                              - Can cause OutOfMemoryError with repeated Fragment transactions
                              Recommended Fix:
                              Override onDestroyView() and clear all View/Binding fields:
                              @Override
                              public void onDestroyView() {
                              super.onDestroyView();
                              cometChatCallLogParticipants = null;
                              }
                              

                              Finding #8CallLogDetailsFragment

                              Fragment View Field Retention Leak Detected
                              Class: com.cometchat.javasampleapp.fragments.calls.CallLogDetailsFragment
                              Issue:
                              - Fragment stores View references in instance fields
                              - These fields are not cleared when the view is destroyed
                              - onDestroyView() is missing
                              Leaked Fields:
                              • cometChatCallLogDetails : com.cometchat.chatuikit.calls.calldetails.CometChatCallLogDetails (assigned in onCreateView)
                              Why this is dangerous:
                              - Fragment views are destroyed/recreated on config changes
                              - Retained View references prevent garbage collection
                              - Leaked Views hold references to Activity Context
                              - Can cause OutOfMemoryError with repeated Fragment transactions
                              Recommended Fix:
                              Override onDestroyView() and clear all View/Binding fields:
                              @Override
                              public void onDestroyView() {
                              super.onDestroyView();
                              cometChatCallLogDetails = null;
                              }
                              

                              Finding #9MessageReceiptFragment

                              Fragment View Field Retention Leak Detected
                              Class: com.cometchat.javasampleapp.fragments.shared.views.MessageReceiptFragment
                              Issue:
                              - Fragment stores View references in instance fields
                              - These fields are not cleared when the view is destroyed
                              - onDestroyView() is missing
                              Leaked Fields:
                              • messageReceiptRead : com.cometchat.chatuikit.shared.views.CometChatReceipt.CometChatReceipt (assigned in onCreateView)
                              • parentView : android.widget.LinearLayout (assigned in onCreateView)
                              • messageReceiptDeliver : com.cometchat.chatuikit.shared.views.CometChatReceipt.CometChatReceipt (assigned in onCreateView)
                              • messageReceiptSent : com.cometchat.chatuikit.shared.views.CometChatReceipt.CometChatReceipt (assigned in onCreateView)
                              • messageReceiptProgress : com.cometchat.chatuikit.shared.views.CometChatReceipt.CometChatReceipt (assigned in onCreateView)
                              • messageReceiptError : com.cometchat.chatuikit.shared.views.CometChatReceipt.CometChatReceipt (assigned in onCreateView)
                              Wh
                              … (truncated for brevity)
                              

                              Finding #10CallLogRecordingFragment

                              Fragment View Field Retention Leak Detected
                              Class: com.cometchat.javasampleapp.fragments.calls.CallLogRecordingFragment
                              Issue:
                              - Fragment stores View references in instance fields
                              - These fields are not cleared when the view is destroyed
                              - onDestroyView() is missing
                              Leaked Fields:
                              • cometChatCallLogRecordings : com.cometchat.chatuikit.calls.callrecordings.CometChatCallLogRecordings (assigned in onCreateView)
                              Why this is dangerous:
                              - Fragment views are destroyed/recreated on config changes
                              - Retained View references prevent garbage collection
                              - Leaked Views hold references to Activity Context
                              - Can cause OutOfMemoryError with repeated Fragment transactions
                              Recommended Fix:
                              Override onDestroyView() and clear all View/Binding fields:
                              @Override
                              public void onDestroyView() {
                              super.onDestroyView();
                              cometChatCallLogRecordings = null;
                              }
                              

                              Finding #11BadgeCountFragment

                              Fragment View Field Retention Leak Detected
                              Class: com.cometchat.javasampleapp.fragments.shared.views.BadgeCountFragment
                              Issue:
                              - Fragment stores View references in instance fields
                              - These fields are not cleared when the view is destroyed
                              - onDestroyView() is missing
                              Leaked Fields:
                              • badgeCountLayout : com.google.android.material.textfield.TextInputLayout (assigned in onCreateView)
                              • badgeCountEdt : com.google.android.material.textfield.TextInputEditText (assigned in onCreateView)
                              • parentView : android.widget.LinearLayout (assigned in onCreateView)
                              Why this is dangerous:
                              - Fragment views are destroyed/recreated on config changes
                              - Retained View references prevent garbage collection
                              - Leaked Views hold references to Activity Context
                              - Can cause OutOfMemoryError with repeated Fragment transactions
                              Recommended Fix:
                              Override onDestroyView() and clear all View/Binding fields:
                              @Override
                              public void onDestroyView() {
                              super.onDestroyView();
                              badgeCountLayout = null
                              … (truncated for brevity)
                              

                              Finding #12FormBubbleFragment

                              Fragment View Field Retention Leak Detected
                              Class: com.cometchat.javasampleapp.fragments.shared.views.FormBubbleFragment
                              Issue:
                              - Fragment stores View references in instance fields
                              - These fields are not cleared when the view is destroyed
                              - onDestroyView() is missing
                              Leaked Fields:
                              • parentLayout : android.widget.LinearLayout (assigned in onCreateView)
                              • formBubble : com.cometchat.chatuikit.shared.views.CometChatFormbubble.CometChatFormBubble (assigned in onCreateView)
                              Why this is dangerous:
                              - Fragment views are destroyed/recreated on config changes
                              - Retained View references prevent garbage collection
                              - Leaked Views hold references to Activity Context
                              - Can cause OutOfMemoryError with repeated Fragment transactions
                              Recommended Fix:
                              Override onDestroyView() and clear all View/Binding fields:
                              @Override
                              public void onDestroyView() {
                              super.onDestroyView();
                              parentLayout = null;
                              formBubble = null;
                              }
                              

                              Finding #13MessageComposerFragment

                              Fragment View Field Retention Leak Detected
                              Class: com.cometchat.javasampleapp.fragments.messages.MessageComposerFragment
                              Issue:
                              - Fragment stores View references in instance fields
                              - These fields are not cleared when the view is destroyed
                              - onDestroyView() is missing
                              Leaked Fields:
                              • parentView : android.widget.RelativeLayout (assigned in onCreateView)
                              Why this is dangerous:
                              - Fragment views are destroyed/recreated on config changes
                              - Retained View references prevent garbage collection
                              - Leaked Views hold references to Activity Context
                              - Can cause OutOfMemoryError with repeated Fragment transactions
                              Recommended Fix:
                              Override onDestroyView() and clear all View/Binding fields:
                              @Override
                              public void onDestroyView() {
                              super.onDestroyView();
                              parentView = null;
                              }
                              

                              Finding #14SoundManagerFragment

                              Fragment View Field Retention Leak Detected
                              Class: com.cometchat.javasampleapp.fragments.shared.resources.SoundManagerFragment
                              Issue:
                              - Fragment stores View references in instance fields
                              - These fields are not cleared when the view is destroyed
                              - onDestroyView() is missing
                              Leaked Fields:
                              • parentView : android.widget.LinearLayout (assigned in onCreateView)
                              Why this is dangerous:
                              - Fragment views are destroyed/recreated on config changes
                              - Retained View references prevent garbage collection
                              - Leaked Views hold references to Activity Context
                              - Can cause OutOfMemoryError with repeated Fragment transactions
                              Recommended Fix:
                              Override onDestroyView() and clear all View/Binding fields:
                              @Override
                              public void onDestroyView() {
                              super.onDestroyView();
                              parentView = null;
                              }
                              

                              Finding #15ThemeFragment

                              Fragment View Field Retention Leak Detected
                              Class: com.cometchat.javasampleapp.fragments.shared.resources.ThemeFragment
                              Issue:
                              - Fragment stores View references in instance fields
                              - These fields are not cleared when the view is destroyed
                              - onDestroyView() is missing
                              Leaked Fields:
                              • parentView : android.widget.LinearLayout (assigned in onCreateView)
                              Why this is dangerous:
                              - Fragment views are destroyed/recreated on config changes
                              - Retained View references prevent garbage collection
                              - Leaked Views hold references to Activity Context
                              - Can cause OutOfMemoryError with repeated Fragment transactions
                              Recommended Fix:
                              Override onDestroyView() and clear all View/Binding fields:
                              @Override
                              public void onDestroyView() {
                              super.onDestroyView();
                              parentView = null;
                              }
                              

                              Finding #16CardBubbleFragment

                              Fragment View Field Retention Leak Detected
                              Class: com.cometchat.javasampleapp.fragments.shared.views.CardBubbleFragment
                              Issue:
                              - Fragment stores View references in instance fields
                              - These fields are not cleared when the view is destroyed
                              - onDestroyView() is missing
                              Leaked Fields:
                              • parentLayout : android.widget.LinearLayout (assigned in onCreateView)
                              • cardBubble : com.cometchat.chatuikit.shared.views.CometChatCardBubble.CometChatCardBubble (assigned in onCreateView)
                              • scrollView : android.widget.ScrollView (assigned in onCreateView)
                              Why this is dangerous:
                              - Fragment views are destroyed/recreated on config changes
                              - Retained View references prevent garbage collection
                              - Leaked Views hold references to Activity Context
                              - Can cause OutOfMemoryError with repeated Fragment transactions
                              Recommended Fix:
                              Override onDestroyView() and clear all View/Binding fields:
                              @Override
                              public void onDestroyView() {
                              super.onDestroyView();
                              parentLayout = null;
                              cardBubble =
                              … (truncated for brevity)
                              

                              🟢 ViewBindingOpportunity

                              Manual findViewById() calls — ViewBinding migration opportunity

                              Finding #17CreateUserActivity

                              View Binding Migration Opportunity
                              Class: com.cometchat.javasampleapp.activity.CreateUserActivity
                              Type: Activity
                              Current Pattern: Manual view lookup
                              findViewById() Calls:
                              • findViewById in setUpUI
                              • findViewById in setUpUI
                              • findViewById in setUpUI
                              • findViewById in setUpUI
                              • findViewById in onCreate
                              • findViewById in onCreate
                              • findViewById in onCreate
                              • findViewById in onCreate
                              • findViewById in onCreate
                              Benefits of View Binding:
                              - Eliminates boilerplate findViewById() calls
                              - Compile-time type safety for view references
                              - Reduced null pointer exceptions
                              - Cleaner, more maintainable code
                              Note: This is a code modernization suggestion, not a memory leak
                              

                              Finding #18LoginActivity

                              View Binding Migration Opportunity
                              Class: com.cometchat.javasampleapp.activity.LoginActivity
                              Type: Activity
                              Current Pattern: Manual view lookup
                              findViewById() Calls:
                              • findViewById in setUpUI
                              • findViewById in setUpUI
                              • findViewById in setUpUI
                              • findViewById in setUpUI
                              • findViewById in lambda$onCreate$1$com-cometchat-javasampleapp-activity-LoginActivity
                              • findViewById in onCreate
                              • findViewById in onCreate
                              • findViewById in onCreate
                              • findViewById in onCreate
                              • findViewById in onCreate
                              Benefits of View Binding:
                              - Eliminates boilerplate findViewById() calls
                              - Compile-time type safety for view references
                              - Reduced null pointer exceptions
                              - Cleaner, more maintainable code
                              Note: This is a code modernization suggestion, not a memory leak
                              

                              Finding #19ComponentListActivity

                              View Binding Migration Opportunity
                              Class: com.cometchat.javasampleapp.activity.ComponentListActivity
                              Type: Activity
                              Current Pattern: Manual view lookup
                              findViewById() Calls:
                              • findViewById in setUpUI
                              • findViewById in setUpUI
                              • findViewById in setUpUI
                              • findViewById in setUpUI
                              • findViewById in setUpUI
                              • findViewById in setUpUI
                              • findViewById in setUpUI
                              • findViewById in setUpUI
                              • findViewById in setUpUI
                              • findViewById in setUpUI
                              • findViewById in setUpUI
                              • findViewById in setUpUI
                              • findViewById in setUpUI
                              • findViewById in setUpUI
                              • findViewById in setUpUI
                              • findViewById in setUpUI
                              • findViewById in setUpUI
                              • findViewById in setUpUI
                              • findViewById in setUpUI
                              • findViewById in setUpUI
                              • findViewById in setUpUI
                              • findViewById in setUpUI
                              • findViewById in setUpUI
                              • findViewById in setUpUI
                              • findViewById in setUpUI
                              • findViewById in setUpUI
                              • findViewById in setUpUI
                              • findViewBy
                              … (truncated for brevity)
                              

                              Finding #20HomeActivity

                              View Binding Migration Opportunity
                              Class: com.cometchat.javasampleapp.activity.HomeActivity
                              Type: Activity
                              Current Pattern: Manual view lookup
                              findViewById() Calls:
                              • findViewById in onCreate
                              • findViewById in onCreate
                              • findViewById in onCreate
                              • findViewById in onCreate
                              • findViewById in onCreate
                              • findViewById in onCreate
                              • findViewById in onCreate
                              • findViewById in onCreate
                              • findViewById in onCreate
                              • findViewById in onCreate
                              Benefits of View Binding:
                              - Eliminates boilerplate findViewById() calls
                              - Compile-time type safety for view references
                              - Reduced null pointer exceptions
                              - Cleaner, more maintainable code
                              Note: This is a code modernization suggestion, not a memory leak
                              

                              Finding #21MainActivity

                              View Binding Migration Opportunity
                              Class: com.cometchat.javasampleapp.activity.MainActivity
                              Type: Activity
                              Current Pattern: Manual view lookup
                              findViewById() Calls:
                              • findViewById in lambda$onCreate$1$com-cometchat-javasampleapp-activity-MainActivity
                              • findViewById in lambda$onCreate$2$com-cometchat-javasampleapp-activity-MainActivity
                              • findViewById in lambda$onCreate$3$com-cometchat-javasampleapp-activity-MainActivity
                              • findViewById in lambda$onCreate$4$com-cometchat-javasampleapp-activity-MainActivity
                              • findViewById in onCreate
                              • findViewById in onCreate
                              • findViewById in onCreate
                              • findViewById in onCreate
                              • findViewById in onCreate
                              • findViewById in onCreate
                              • findViewById in onCreate
                              • findViewById in onCreate
                              • findViewById in onCreate
                              • findViewById in onCreate
                              • findViewById in onCreate
                              • findViewById in onCreate
                              • findViewById in onCreate
                              • findViewById in onCreate
                              • findViewById in onCreate
                              • find
                              … (truncated for brevity)
                              

                              Finding #22ComponentLaunchActivity

                              View Binding Migration Opportunity
                              Class: com.cometchat.javasampleapp.activity.ComponentLaunchActivity
                              Type: Activity
                              Current Pattern: Manual view lookup
                              findViewById() Calls:
                              • findViewById in onCreate
                              Benefits of View Binding:
                              - Eliminates boilerplate findViewById() calls
                              - Compile-time type safety for view references
                              - Reduced null pointer exceptions
                              - Cleaner, more maintainable code
                              Note: This is a code modernization suggestion, not a memory leak
                              

                              How to respond to this issue:

                              • If a finding is a true positive: consider applying the recommended fix and closing this issue.
                              • If a finding is a false positive: please leave a comment explaining why — your feedback directly improves our research.
                              • If you have questions: reply here or open a discussion.

                              This report was generated by LeakScope as part of the ICSE 2027 research artifact. Tool analyzes compiled APKs using Soot static analysis on cometchat-sample-app-android-java.

                              Activity

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

                              Metadata

                              Metadata

                              Assignees

                              No one assigned

                                Labels

                                No labels
                                No labels

                                Type

                                No type

                                Projects

                                No projects

                                  Milestone

                                  No milestone

                                  Relationships

                                  None yet

                                  Development

                                  No branches or pull requests

                                  Issue actions