diff options
Diffstat (limited to 'imggen')
| -rwxr-xr-x | imggen | 15 |
1 files changed, 12 insertions, 3 deletions
@@ -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 |
