Files
DogFatherGitandClaude Opus 5 0e522181e2 Pruefungen: der Rueckgabewert 127, der "in Ordnung" meldete
pruef-call-kategorien gab dreimal von dreimal 127 zurueck -- NACH der
Zeile "ALLES IN ORDNUNG". Ursache ist eine libuv-Assertion auf Windows:

  Assertion failed: !(handle->flags & UV_HANDLE_CLOSING),
  file src\win\async.c, line 94

`process.exit()` schlaegt zu, waehrend Playwright seinen Transportkanal
noch abbaut. Das Ergebnis stimmte, der Rueckgabewert log. In einem
Sammellauf zaehlt so ein Lauf als Fehlschlag, obwohl nichts fehlschlug --
und wer sich angewoehnt, den Rueckgabewert dieser einen Datei zu
ignorieren, uebersieht spaeter den echten.

Meine Notiz sagte "sporadisch". Es war drei von drei. Auch eigene
Notizen altern.

MEIN ERSTER FIX WAR DIE ELEGANTERE LOESUNG UND DIE SCHLECHTERE.

Ich wollte keine feste Pause -- 400 ms sind eine Rechnung auf DIESEM
Rechner, und auf einem langsameren waere der Fehler still
zurueckgekommen. Also: auf das Ereignis "disconnected" warten, danach
zwoelf Runden der Ereignisschleife (setImmediate). Sauber begruendet.
Gemessen: ZWEI VON DREI Laeufen weiterhin 127. Die feste Pause, die ich
fuer schlechter hielt, war zweimal gruen.

Die Annahme war falsch: "disconnected" meldet, dass die Verbindung weg
ist, nicht dass der Kanal abgebaut ist -- und setImmediate gibt der
Schleife Durchlaeufe, aber keine ZEIT. Der Kindprozess braucht echte
Millisekunden. Eine stimmige Herleitung ersetzt keine Messung.

Jetzt beides: erst das Ereignis (richtige Ordnung), dann eine zeitliche
Reserve von 600 ms gegen gemessene 400, ueber PRUEF_ABBAU_MS
einstellbar. Fuenf Laeufe hintereinander gruen.

Neu: server/helfer-beenden.mjs (sauberBeenden) und
tools/mess-rueckgabewerte.sh -- letzteres misst alle 42 Browser-
Pruefungen mit demselben Muster daraufhin, ob noch weitere "in Ordnung"
melden und trotzdem einen Fehlercode zurueckgeben. Laeuft nacheinander,
nicht parallel: Zwei gleichzeitige Prueflaeufe sind kein Prueflauf.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-09-08 01:14:57 +02:00

44 lines
1.6 KiB
Bash

#!/usr/bin/env bash
# Welche Browser-Pruefungen melden "in Ordnung" und geben trotzdem einen
# Fehler-Rueckgabewert zurueck?
#
# Hintergrund: pruef-call-kategorien gab dreimal von dreimal 127 zurueck,
# NACH "ALLES IN ORDNUNG" -- eine libuv-Assertion beim Beenden (Playwright-
# Transportkanal wird abgebaut, waehrend process.exit() zuschlaegt).
# Behoben ueber server/helfer-beenden.mjs. Offen war: Wie viele andere
# Dateien mit demselben Muster haben dasselbe Problem?
#
# NACHEINANDER, nicht parallel: Die Pruefungen belegen feste Ports und
# legen dieselben Testkonten an. Zwei gleichzeitige Laeufe sind kein
# Prueflauf, sondern zwei kaputte (06.09.2026, RunOne).
#
# Aufruf: bash tools/mess-rueckgabewerte.sh
cd "$(dirname "$0")/.." || exit 1
AUS="rueckgabewerte-$(date +%Y%m%d-%H%M%S).txt"
echo "Messlauf gestartet $(date '+%H:%M:%S')" | tee "$AUS"
luegner=0
gemessen=0
for f in server/pruef-*.mjs; do
grep -q 'await import("./index.js")' "$f" || continue
grep -q "playwright" "$f" || continue
name=$(basename "$f")
ausgabe=$(node "$f" 2>&1)
code=$?
gemessen=$((gemessen + 1))
letzte=$(echo "$ausgabe" | grep -viE "^$" | tail -1 | cut -c1-60)
if echo "$ausgabe" | grep -qiE "ALLES IN ORDNUNG|Alles in Ordnung" && [ "$code" -ne 0 ]; then
echo "LUEGT $name -> EXIT=$code | $letzte" | tee -a "$AUS"
luegner=$((luegner + 1))
elif [ "$code" -ne 0 ]; then
echo "rot $name -> EXIT=$code | $letzte" | tee -a "$AUS"
else
echo "ok $name" | tee -a "$AUS"
fi
done
echo "" | tee -a "$AUS"
echo "$gemessen Browser-Pruefungen gemessen, $luegner mit luegendem Rueckgabewert." | tee -a "$AUS"
echo "Fertig $(date '+%H:%M:%S')" | tee -a "$AUS"