Files
philips-tv-speicher-voll/diagnostics/vendor-bugs/BUG-002-gel-workmanager-growth.md

2.4 KiB
Raw Blame History

GEL WorkManager database grows into a long serial history

Klassifikation

CONFIRMED BUG / CONFIRMED enqueue-policy root cause – Medium. Gerät und Firmware wie BUG-001. Komponente /system/app/gel/gel.apk, AndroidX WorkManager, GELWorker, Unique-Name GEL_WORK.

Benutzerwirkung

androidx.work.workdb erreichte 229.453.824 Byte plus 524.288-Byte-WAL und 32.768-Byte-SHM. Der feste Unique-Work-Graph benötigte Minuten, um seine Abhängigkeiten zu traversieren; neue GEL-Intents wurden merklich verzögert.

Erwartetes und tatsächliches Verhalten

Abgeschlossene Telemetriearbeiten sollten begrenzt und prune-fähig bleiben. Tatsächlich bestand eine jahrelange serielle GEL_WORK-Kette. Nach dem autorisierten Paketdatenreset begann die DB bei 4.096 Byte; später blieb sie bei ca. 102.400 Byte (WAL ca. 461 KiB). Der offizielle DiagnosticsWorker zeigte nur elf sichtbare, erfolgreiche GEL-Arbeiten und keinen Rückstau.

Reproduktion / Beweis

dumpsys dbinfo org.droidtv.gel -v, WorkManager-Diagnosebroadcast und GEL-Logs verwenden; keine privaten Payloads ausgeben. Belege: phase3-storage-repair.md; der interne Live-Validierungsbericht ist aus der kuratierten Veröffentlichung ausgeschlossen.

Root Cause

CONFIRMED: GatheringService.onStartCommand in classes.dex, code_off=0x50bf0, baut aus jedem Intent einen OneTimeWorkRequest, lädt GEL_WORK, Policy-Integer 4 und ruft WorkContinuationImpl.enqueue() auf. Der eingebettete AndroidX-Code bestätigt Wert 4 als APPEND_OR_REPLACE: neue Arbeit hängt an den aktuellen Blättern. Das erzeugt die jahrelange serielle Abhängigkeitsgeschichte und verteuert die Blatttraversierung.

Workaround und Fix

Workaround: gezielter GEL-Datenreset nach Backup/Risikoabwägung. Ein bloßes Ändern von Policy 4 auf KEEP ist nicht sicher, weil GELWorker unterschiedliche Intents verarbeitet und dabei Ereignisse verloren gingen. Fix: persistente, begrenzte FIFO/Outbox, Koaleszierung nur bewiesener State-Alarme, ein KEEP- Drain-Worker und KEEP-Watchdog, Ack erst nach Dispatch. Siehe ROOT-CAUSE.md.

Regression Tests / Hash

Das Phase-6-Modell bestand 10.000 koaleszierbare Alarme und 10.000 FIFO- Ereignisse bei O(1) aktivem WorkSpec, begrenzter Queue und Crash-Retry. gel.apk SHA-256: 29A68E6B09700ED4CCDF312C0B99EEE0C3F67E329A537FE87ED4341A71D383D7.