From ed55b88ec149f9bf41833ebae9c37b8947673757 Mon Sep 17 00:00:00 2001 From: Micha Date: Wed, 10 Jun 2026 11:02:27 +0200 Subject: [PATCH] immich-ml: LD_PRELOAD leeren gegen gunicorn-25.1.0-Fork-Deadlock immich_machine_learning haengt seit dem 7.6. unhealthy: der gunicorn-Worker bleibt nach "Control socket listening" in futex_do_wait stehen und erreicht nie "Application startup complete" (/ping -> ConnectTimeout/ReadTimeout). Kein OOM (22 GB frei), kein Disk-I/O-Wait, laeuft als root, Socket wird erstellt - klassischer Fork-Deadlock von mimalloc (LD_PRELOAD) im geforkten Worker unter gunicorn 25.1.0. mimalloc per LD_PRELOAD="" deaktiviert. Reine Allocator-Optimierung, funktional unkritisch, reversibel. Bekannte Upstream-Regression seit Immich 2.6 (immich#27228, #22317) ohne offiziellen Fix; Restart und force-recreate sind dort als wirkungslos dokumentiert. Co-Authored-By: Claude Opus 4.8 --- apps/immich/docker-compose.yml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/apps/immich/docker-compose.yml b/apps/immich/docker-compose.yml index b99f9bf..c39b0f6 100644 --- a/apps/immich/docker-compose.yml +++ b/apps/immich/docker-compose.yml @@ -34,6 +34,15 @@ services: container_name: immich_machine_learning image: ghcr.io/immich-app/immich-machine-learning:release@sha256:a2501141440f10516d329fdfba2c68082e19eb9ba6016c061ac80d23beadf7f3 restart: unless-stopped + environment: + # Workaround fuer gunicorn-25.1.0-Fork-Deadlock (Worker haengt in futex + # nach "Control socket listening", erreicht nie "Application startup + # complete"). mimalloc per LD_PRELOAD deaktiviert -> umgeht den Lock im + # geforkten Worker. Reine Allocator-Optimierung, funktional unkritisch. + # Upstream-Regression seit Immich 2.6 (immich#27228, #22317), kein + # offizieller Fix. Re-check: bei Immich-/gunicorn-Update entfernen und + # pruefen, ob der Worker wieder sauber bootet. + LD_PRELOAD: "" volumes: - model-cache:/cache networks: