Explorar el Código

P1-13: onderzoek (live overflow gereproduceerd, hypothese weerlegd, stack-trace-beperking gedocumenteerd)

bob hace 1 mes
padre
commit
a280bb6f95
Se han modificado 2 ficheros con 66 adiciones y 0 borrados
  1. 22 0
      CLAUDE.md
  2. 44 0
      TASKS.md

+ 22 - 0
CLAUDE.md

@@ -156,6 +156,28 @@ export PATH="/home/bob/fvm/bin:$HOME/.pub-cache/bin:$PATH" && /home/bob/Projects
   daar staan door een eerdere hot-restart die Bob's laatst bezochte
   route onthield, niet per se doordat het de echte `initialLocation` is
   (check `nav.dart`).
+- **Slechts één volledige `EXCEPTION CAUGHT BY RENDERING LIBRARY`-dump
+  per proceslevensduur, ongeacht hoeveel verschillende widgets
+  daarna overflowen.** Flutter's `dumpErrorToConsole` toont de volledige
+  stack trace + widget/bestand/regel alleen bij de allereerste
+  exceptie sinds process- of hot-restart; elke volgende (ook een heel
+  andere widget/pagina) wordt ingekort tot `Another exception was
+  thrown: <bericht>` zonder bestandslocatie. Bevestigd 2026-08-09
+  (P1-13-onderzoek): de Home-pagina's al bekende overflow
+  (`PUitgaanSliderKaartComponent`, P1-3) consumeerde de enige volledige
+  dump nog vóórdat er genavigeerd kon worden naar de eigenlijk
+  onderzochte pagina — alle latere overflows op die andere pagina
+  bleven anoniem. **Om een verse stack trace voor een specifieke,
+  latere crash te pakken:** eerst een hot-restart (`R`) sturen vlak
+  vóór je die crash reproduceert, ván een schone/crash-vrije pagina uit
+  — dat reset de teller. Een `run_in_background`-Bash-aanroep van
+  `ff-run-fvm.sh` heeft **stdin op `/dev/null`** (niet-interactief),
+  dus `r`/`R` is dan niet te versturen; voor dat scenario is een
+  losse `flutter run` met stdin aan een `mkfifo`-named-pipe gekoppeld
+  nodig (niet via de standaardwrapper). Flutter DevTools (de
+  `devtools`-URL uit dezelfde run-log) is zelf ook een
+  Flutter-Web-canvas-app zonder toegankelijke DOM — geen bruikbare
+  omweg om alsnog bij de volledige historische foutenlijst te komen.
 
 Daarna automatisch:
 1. `git status --short`, dan `git add` — **niet blind `-A`**. Alleen

+ 44 - 0
TASKS.md

@@ -513,6 +513,50 @@ voordoen (16 t/m 219px, tientallen keren) — nog steeds niet opgelost.
 In diezelfde log ook `Invalid argument(s): No host specified in
 URI`-excepties gezien — dat is een **los** probleem, zie het nieuwe
 P1-15 (niet dezelfde oorzaak als deze RenderFlex-overflow).
+- **2026-08-09 avond (Claude): eigen `flutter run`-sessie gestart,
+  overflow live gereproduceerd (screenshot, tab Activiteiten op
+  `emulator-5554`) — maar nog steeds geen verse stack trace specifiek
+  voor déze overflow te pakken, om een structurele reden (zie
+  CLAUDE.md "Slechts één volledige RenderFlex-stack trace per
+  flutter run-sessie"): Flutter dumpt maar één keer per proceslevensduur
+  de volledige details; die ene keer ging naar de al langer bekende
+  `PUitgaanSliderKaartComponent`-overflow op de Home-pagina (P1-3),
+  niet naar deze Activiteiten-tab-kaart, omdat de app bij het opstarten
+  al op `HorecagelegenhedenOverzicht` stond (onthouden vorige route) en
+  dáár al eerder overflowede vóór ik kon navigeren. Een hot-restart zou
+  de teller resetten maar dat kon niet: `ff-run-fvm.sh` draait via Bash
+  `run_in_background` met stdin op `/dev/null` (niet-interactief), dus
+  geen `R`-toets te sturen. Flutter DevTools (devtools-URL uit de log)
+  bleek zelf ook een Flutter-Web-canvas-app zonder toegankelijke
+  DOM/accessibility-tree — dezelfde soort blokkade als de
+  FlutterFlow-builder, niet verder onderzocht.
+  - **Code-niveau heronderzoek van de 2026-08-05-hypothese
+    (`Expanded`+`width`-Container in `HorecagelegenheidoverzichtKaartWidget`,
+    regels nu 343-357 i.p.v. 337-349 — lichte regelverschuiving, geen
+    inhoudelijke wijziging t.o.v. eerdere audit): de Row op regel 152
+    (`mainAxisSize: MainAxisSize.max`, kinderen `Flexible(...)` +
+    `Expanded(...)`) **kan qua Flutter-constraint-model niet zelf
+    overflowen** — dat is precies het doel van `Flexible`/`Expanded`:
+    de flex-child krijgt hoe dan ook nooit meer dan zijn toegewezen
+    Row-ruimte, ongeacht een eigen `width`-property. Bevestigt de
+    eerdere twijfel in de hypothese hierboven. Er zit ook geen geneste
+    `Row` verderop in deze widget die zónder Flexible/Expanded-wrap
+    zou kunnen overflowen (title/adres/plaats zijn losse `Text`-widgets
+    in een `Column`, geen `Row`). **Conclusie: deze widget is
+    vermoedelijk niet de bron** — de werkelijke oorzaak moet elders
+    liggen (bv. de buitenste `Container(width: 600.0, height: 225.0)`
+    in `horecagelegenheden_overzicht_widget.dart:388-390` die als
+    `itemBuilder`-return in de `MasonryGridView` staat, of iets in het
+    logo/categorie-tag-`Stack` dat nog niet volledig nagelopen is).
+  - **Volgende sessie, concrete aanpak om wél een verse stack trace te
+    pakken:** start `flutter run` niet via de standaard
+    `run_in_background`-Bash-aanroep maar met stdin gekoppeld aan een
+    named pipe (`mkfifo`), zodat een `R` (hot restart) tussentijds te
+    versturen is — reset Flutter's interne `_errorCount` en dwingt de
+    eerstvolgende exceptie weer een volledige dump af. Navigeer **direct
+    na de restart** zo snel mogelijk naar Activiteiten-tab vóórdat een
+    andere pagina (Home) een eigen overflow veroorzaakt en de dump-slot
+    opsoupeert.
 
 **P1-9 · Eigenaar: Onbepaald.** Visuele polish (los, per pagina) —
 resterend na sessie 2026-08-06: