This commit is contained in:
Tom 2026-10-28 10:34:27 +01:00
parent 7877faa786
commit d3393f6494
3 changed files with 22 additions and 0 deletions

View file

@ -88,3 +88,7 @@ AIW_MAX_TOOL_ROUNDS=12
AIW_MAX_TOOL_ROUNDS_LIMIT=40
# Verlauf je Anfrage höchstens so viele Tokens (geschätzt); Älteres geht als Arbeitsnotiz mit
AIW_HISTORY_MAX_TOKENS=60000
# Nur für Rechner/VMs ohne AVX (Absturz mit Exit-Code 132): psycopg ohne Binärpaket, braucht die libpq
# des Systems (apt install libpq5). Wird von scripts/dev.sh übernommen; sonst in der Umgebung setzen.
# PSYCOPG_IMPL=python

View file

@ -122,6 +122,13 @@ uv run aiw check # Uploads und Master-Key gegen die D
- **`/ready` meldet einen veralteten Migrationsstand:** `uv run aiw migrate`.
- **Änderungen an Templates erscheinen nicht:** den Web-Server neu starten, oder ihn mit `--reload` starten, dann startet er bei Änderungen selbst neu.
### Absturz mit Exit-Code 132 (VM ohne AVX)
Exit-Code 132 heißt SIGILL: Eine fertig kompilierte Bibliothek nutzt CPU-Befehle, die der Rechner nicht hat. Typisch für VirtualBox auf Windows-Hosts mit aktivem Hyper-V (WSL2, Docker Desktop, Speicher-Integrität): `grep -o -w -E 'avx|avx2' /proc/cpuinfo` liefert nichts. Betroffen ist zuerst `psycopg-binary`.
- **Am Host beheben (empfohlen):** Hyper-V-Nutzung aus (`bcdedit /set hypervisorlaunchtype off`, Speicher-Integrität aus, Neustart), dann `VBoxManage modifyvm "<VM>" --cpu-profile host`. Danach meldet die VM `avx avx2`.
- **In der VM umgehen:** `sudo apt install libpq5` und `PSYCOPG_IMPL=python` in `.env`; `scripts/dev.sh` übernimmt das für Web, Worker und DB-Dienst. Stürzt danach eine andere Bibliothek ab, steht sie im Stack („Fatal Python error“, `scripts/dev.sh` setzt `PYTHONFAULTHANDLER=1`).
## Datenbanken ausprobieren
Datenbanken sind MCP-Verbindungen eines Workspace über einen Datenbank-Treiber, also einen DB-Dienst aus `services/db-mcp`. `scripts/dev.sh` startet den Dienst für PostgreSQL (Port 8791), mit `--oracle` zusätzlich den Oracle-Container (Oracle Database Free, ca. 6 GB, erster Start einige Minuten; Port 55434, Service `FREEPDB1`, Admin `system`/`aiw`) und den Dienst für Oracle (Port 8792). Von Hand: Container mit `docker compose --profile oracle up -d oracle`, Dienste wie in [services/db-mcp/README.md](../services/db-mcp/README.md#lokal-starten-und-testen).

View file

@ -141,6 +141,12 @@ export AIW_MCP_ALLOW_LOCAL=${AIW_MCP_ALLOW_LOCAL:-true}
export AIW_WORKER_HTTP_HOST=${AIW_WORKER_HTTP_HOST:-127.0.0.1}
export AIW_COOKIE_SECURE=${AIW_COOKIE_SECURE:-false}
export PYTHONUNBUFFERED=1
# Stürzt Python in nativem Code ab (z. B. SIGILL, SIGSEGV), zeigt das den Python-Stack bis zur Bibliothek
export PYTHONFAULTHANDLER=1
# psycopg ohne Binärpaket (reine Python-Variante mit der libpq des Systems), z. B. für VMs ohne AVX:
# PSYCOPG_IMPL=python in .env oder der Umgebung; gilt für Web, Worker und den DB-Dienst
: "${PSYCOPG_IMPL:=$(env_value PSYCOPG_IMPL)}"
[ -n "$PSYCOPG_IMPL" ] && export PSYCOPG_IMPL && say "psycopg-Variante: $PSYCOPG_IMPL"
trap 'trap - INT TERM EXIT; echo; say "Stoppe Web, Worker und DB-Dienste"; kill 0 2>/dev/null; wait 2>/dev/null' INT TERM EXIT
# Gestartete Prozesse: PID, Name und Befehl zum Einzelstart (parallele Listen, Bash 3 von macOS kennt keine Maps)
@ -204,6 +210,11 @@ while true; do
wait "${PIDS[$i]}" 2>/dev/null || code=$?
echo
printf '\033[31m%s hat sich beendet (Exit-Code %s).\033[0m\n' "${NAMES[$i]}" "$code" >&2
case $code in
132) echo "Signal SIGILL: Die CPU kennt eine Anweisung einer nativen Bibliothek nicht (oft VM ohne AVX/AVX2;" \
"CPU-Typ der VM auf „host“ stellen). Welche Bibliothek, zeigt der Stack mit „Fatal Python error“ oben." >&2 ;;
134|139) echo "Absturz in nativem Code (Signal $((code - 128))); Stack mit „Fatal Python error“ oben." >&2 ;;
esac
echo "Seine Ausgabe steht oben mit Präfix; fehlt sie, den Prozess einzeln starten und die Meldung ansehen:" >&2
echo " ${COMMANDS[$i]}" >&2
exit 1