aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-ximggen15
1 files changed, 12 insertions, 3 deletions
diff --git a/imggen b/imggen
index b385712..193b10d 100755
--- a/imggen
+++ b/imggen
@@ -115,12 +115,21 @@ if daemon_up; then
[ -n "$H" ] && req="$req,\"height\":$H"
req="$req}"
- if curl -sf -X POST "${BASE}/generate" -H 'Content-Type: application/json' \
- -d "$req" -o "$OUT_PATH"; then
+ # No -f: keep the error body so we can classify it (e.g. GPU wedged).
+ code="$(curl -s -w '%{http_code}' -X POST "${BASE}/generate" \
+ -H 'Content-Type: application/json' -d "$req" -o "$OUT_PATH")"
+ if [ "$code" = 200 ]; then
echo "Saved ${OUT_PATH}"
else
- echo "generate failed (see daemon logs: docker compose logs)" >&2
+ # On failure the body is the server's JSON error, not a PNG.
+ err="$(cat "$OUT_PATH" 2>/dev/null)"
rm -f "$OUT_PATH"
+ # level_zero DEVICE_LOST = GuC/xe driver hang; only a reboot recovers.
+ if printf '%s' "$err" | grep -qi "device.lost\|DEVICE_LOST\|error 20"; then
+ echo "GPU wedged (level_zero DEVICE_LOST): GuC/xe driver fault, reboot needed" >&2
+ else
+ echo "generate failed: ${err:-see daemon logs: docker compose logs}" >&2
+ fi
exit 1
fi
else