android / android/codelab-android-workmanager

Leak in SystemJobService

Aperta
#232 21 commenti 2 reazioni 0 assegnatari Vedi su GitHub
Lingua principale
Kotlin
Stelle
557
Fork
242
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Descrizione

Hi everyone,

we're using WorkManager in an app in which we've also [LeakCanary](https://square.github.io/leakcanary/) configured and we always receive this warning after a run of each Periodic Worker:

```
16:49:08.888 LeakCanary ​
====================================
HEAP ANALYSIS RESULT
====================================
1 APPLICATION LEAKS

References underlined with "~~~" are likely causes.
Learn more at https://squ.re/leaks.

774 bytes retained by leaking objects
Signature: 6491376cfe66b1cac0d47b3ae180fd902719aa5
┬───
│ GC Root: Global variable in native code

├─ android.app.job.JobService$1 instance
│ Leaking: UNKNOWN
│ Retaining 802 B in 15 objects
│ Anonymous subclass of android.app.job.IJobService$Stub
│ this$0 instance of androidx.work.impl.background.systemjob.SystemJobService
│ ↓ JobService$1.this$0
│ ~~~~~~
╰→ androidx.work.impl.background.systemjob.SystemJobService instance
​ Leaking: YES (ObjectWatcher was watching this because androidx.work.impl.background.systemjob.SystemJobService
​ received Service#onDestroy() callback)
​ Retaining 774 B in 14 objects
​ key = 155d4c85-1073-4df1-bd0f-250b40c959c8
​ watchDurationMillis = 5248
​ retainedDurationMillis = 246
​ mApplication instance of xx.yy.MyApp
​ mBase instance of android.app.ContextImpl
====================================
0 LIBRARY LEAKS

A Library Leak is a leak caused by a known bug in 3rd party code that you do not have control over.
See https://square.github.io/leakcanary/fundamentals-how-leakcanary-works/#4-categorizing-leaks
====================================
0 UNREACHABLE OBJECTS

An unreachable object is still in memory but LeakCanary could not find a strong reference path
from GC roots.
====================================
METADATA

Please include this in bug reports and Stack Overflow questions.

Build.VERSION.SDK_INT: 23
Build.MANUFACTURER: alps
LeakCanary version: 2.6
App process name: xx.yy.MyApp
Stats: LruCache[maxSize=3000,hits=101,misses=300675,hitRate=0%]
RandomAccess[bytes=11383030,reads=300675,travel=696095628841,range=23369842,size=28770980]
Heap dump reason: 1 retained objects, app is not visible
Analysis duration: 202141 ms
Heap dump file path: /storage/emulated/0/Download/leakcanary-xx.yy.MyApp/2021-03-08_16-45-32_740.
hprof
Heap dump timestamp: 1615218548838
Heap dump duration: 13889 ms
====================================
```

WorkManager library in use: `androidx.work:work-rxjava2:2.5.0`
LeakCanary library in use: `com.squareup.leakcanary:leakcanary-android:2.6`

Any advice? Did you see this warning yet?

I don't know if can be a useful info, but the app we're developing is a system app used on embedded device (Android based, obviously)

Guida per i contributori

Apri la guida per i contributori

Direzione di ricerca

Inizia con il trace di LeakCanary dell’issue e con il ciclo di vita di SystemJobService su Android API 23, quindi riproduci il problema usando WorkManager 2.5.0 e LeakCanary 2.6 con un worker periodico. Il lavoro è completato quando si determina se il service trattenuto è un leak riproducibile della library e si documenta o si corregge il risultato; l’issue non indica alcun file sorgente né alcun test.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
android, kotlin
Ambito
mobile-dev
Tipo di issue
Bug
Difficoltà
4/5
Tempo stimato
3-5 giorni
Stato di attività
Ferma
Chiarezza
Da chiarire
Idoneità per principianti
25/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.