SIGSEGV crash in ffmpeg when processing short videos for thumbnail generation #7481

Open
opened 2026-02-20 05:03:47 -05:00 by deekerman · 4 comments
Owner

Originally created by @yuhuan417 on GitHub (Nov 28, 2025).

Originally assigned to: @mertalev on GitHub.

I have searched the existing issues, both open and closed, to make sure this is not a duplicate report.

  • Yes

The bug

Thumbnail generation failed for a very short video recorded by iPhone 12 Pro; server logs show the failure was caused by an ffmpeg crash.

The problematic video: https://github.com/user-attachments/assets/2ac0f2b4-4376-49ec-a9f1-e6c0099df6dc

It works fine if I remove thumbnail=12 and reverse parameters.

The OS that Immich Server is running on

qnap qts 5.2

Version of Immich Server

v2.3.1

Version of Immich Mobile App

v2.3.1

Platform with the issue

  • Server
  • Web
  • Mobile

Device make and model

No response

Your docker-compose.yml content

#
# WARNING: Make sure to use the docker-compose.yml of the current release:
#
# https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml
#
# The compose file on main may not be compatible with the latest release.
#

name: immich

services:
  immich-server:
    container_name: immich_server
    image: ghcr.io/immich-app/immich-server:release
    # extends:
    #   file: hwaccel.transcoding.yml
    #   service: cpu # set to one of [nvenc, quicksync, rkmpp, vaapi, vaapi-wsl] for accelerated transcoding
    environment:
      UPLOAD_LOCATION: /share/photo/immich
      DB_DATA_LOCATION: /share/photo/docker/immich/postgres
      TZ: Etc/UTC
      IMMICH_VERSION: release
      DB_PASSWORD: xxx
      DB_USERNAME: xxx
      DB_DATABASE_NAME: immich
      IMMICH_LOG_LEVEL: debug
    devices:
      - /dev/dri:/dev/dri
    volumes:
      # Do not edit the next line. If you want to change the media storage location on your system, edit the value of UPLOAD_LOCATION in the .env file
      - /share/photo/immich:/usr/src/app/upload
      - /etc/localtime:/etc/localtime:ro
      - /share/photo/:/myphoto
    ports:
      - 2283:2283
    depends_on:
      - redis
      - database
    restart: always
    healthcheck:
      disable: false

  immich-machine-learning:
    container_name: immich_machine_learning
    # For hardware acceleration, add one of -[armnn, cuda, openvino] to the image tag.
    # Example tag: ${IMMICH_VERSION:-release}-cuda
    image: ghcr.io/immich-app/immich-machine-learning:release-openvino
    # extends: # uncomment this section for hardware acceleration - see https://immich.app/docs/features/ml-hardware-acceleration
    #   file: hwaccel.ml.yml
    #   service: cpu # set to one of [armnn, cuda, openvino, openvino-wsl] for accelerated inference - use the `-wsl` version for WSL2 where applicable
    environment:
      UPLOAD_LOCATION: /share/photo/immich
      TZ: Asia/Shanghai
      IMMICH_VERSION: release
      MACHINE_LEARNING_MODEL_INTRO_OP_THREADS: 1
      MACHINE_LEARNING_MAX_BATCH_SIZE__TEXT_RECOGNITION: 1
      MACHINE_LEARNING_OPENVINO_PRECISION: FP16
      MACHINE_LEARNING_PRELOAD__CLIP__TEXTUAL: nllb-clip-base-siglip__v1
      MACHINE_LEARNING_PRELOAD__CLIP__VISUAL: nllb-clip-base-siglip__v1
      MACHINE_LEARNING_PRELOAD__FACIAL_RECOGNITION__RECOGNITION: buffalo_l
      MACHINE_LEARNING_PRELOAD__FACIAL_RECOGNITION__DETECTION: buffalo_l
      MACHINE_LEARNING_REQUEST_THREADS: 1
    volumes:
      - model-cache:/cache
      - /dev/bus/usb:/dev/bus/usb
    restart: always
    healthcheck:
      disable: false
    device_cgroup_rules:
      - 'c 189:* rmw'
    devices:
      - /dev/dri:/dev/dri

  redis:
    container_name: immich_redis
    image: docker.io/valkey/valkey:8-bookworm@sha256:42cba146593a5ea9a622002c1b7cba5da7be248650cbb64ecb9c6c33d29794b1
    healthcheck:
      test: redis-cli ping || exit 1
    restart: always

  database:
    container_name: immich_postgres
    image: ghcr.io/immich-app/postgres:14-vectorchord0.3.0
    environment:
      UPLOAD_LOCATION: /share/photo/immich
      DB_DATA_LOCATION: /share/photo/docker/immich/postgres
      TZ: Asia/Shanghai
      IMMICH_VERSION: release
      DB_PASSWORD: xxx
      DB_USERNAME: xxx
      DB_DATABASE_NAME: immich
      POSTGRES_PASSWORD: xxx
      POSTGRES_USER: xxx
      POSTGRES_DB: immich
      POSTGRES_INITDB_ARGS: '--data-checksums'
    volumes:
      # Do not edit the next line. If you want to change the database storage location on your system, edit the value of DB_DATA_LOCATION in the .env file
      - /share/photo/docker/immich/postgres:/var/lib/postgresql/data
    restart: always

volumes:
  model-cache:

Your .env content

yml inlined

Reproduction steps

  1. upload .mov file
  2. generate thumbnail

Relevant log output

[Nest] 7  - 11/29/2025, 1:40:14 AM   DEBUG [Microservices:MediaRepository] ffmpeg -n 10 /usr/bin/ffmpeg -skip_frame nointra -sws_flags accurate_rnd+full_chroma_int -i /myphoto/2025-05/jintong/2025-05-17 12.58.41.MOV -y -fps_mode vfr -frames:v 1 -update 1 -v verbose -vf fps=12:start_time=0:eof_action=pass:round=down,thumbnail=12,select=gt(scene\,0.1)-eq(prev_selected_n\,n)+isnan(prev_selected_n)+gt(n\,20),trim=end_frame=2,reverse /usr/src/app/upload/thumbs/f1e57fc5-13ec-45bc-a4c6-ee2accc68d06/1c/7d/1c7d3e08-65a8-4ab0-8324-6225598c749b-preview.jpeg
[Nest] 7  - 11/29/2025, 1:40:14 AM   ERROR [Microservices:MediaRepository] ffmpeg version 7.1.1-Jellyfin Copyright (c) 2000-2025 the FFmpeg developers
  built with gcc 14 (Debian 14.2.0-19)
  configuration: --prefix=/usr/lib/jellyfin-ffmpeg --target-os=linux --extra-version=Jellyfin --disable-doc --disable-ffplay --disable-static --disable-libxcb --disable-sdl2 --disable-xlib --enable-lto=auto --enable-gpl --enable-version3 --enable-shared --enable-gmp --enable-gnutls --enable-chromaprint --enable-opencl --enable-libdrm --enable-libxml2 --enable-libass --enable-libfreetype --enable-libfribidi --enable-libfontconfig --enable-libharfbuzz --enable-libbluray --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libopenmpt --enable-libdav1d --enable-libsvtav1 --enable-libwebp --enable-libvpx --enable-libx264 --enable-libx265 --enable-libzvbi --enable-libzimg --enable-libfdk-aac --arch=amd64 --enable-libshaderc --enable-libplacebo --enable-vulkan --enable-vaapi --enable-amf --enable-libvpl --enable-ffnvcodec --enable-cuda --enable-cuda-llvm --enable-cuvid --enable-nvdec --enable-nvenc
  libavutil      59. 39.100 / 59. 39.100
  libavcodec     61. 19.101 / 61. 19.101
  libavformat    61.  7.100 / 61.  7.100
  libavdevice    61.  3.100 / 61.  3.100
  libavfilter    10.  4.100 / 10.  4.100
  libswscale      8.  3.100 /  8.  3.100
  libswresample   5.  3.100 /  5.  3.100
  libpostproc    58.  3.100 / 58.  3.100
[aist#0:1/pcm_s16le @ 0x55fb90e8d500] Guessed Channel Layout: mono
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/myphoto/2025-05/jintong/2025-05-17 12.58.41.MOV':
  Metadata:
    major_brand     : qt
    minor_version   : 0
    compatible_brands: qt
    creation_time   : 2025-05-17T04:59:15.000000Z
    com.apple.quicktime.location.accuracy.horizontal: 13.328273
    com.apple.quicktime.live-photo.auto: 1
    com.apple.quicktime.full-frame-rate-playback-intent: 0
    com.apple.quicktime.live-photo.vitality-score: 1.000000
    com.apple.quicktime.live-photo.vitality-scoring-version: 0
    com.apple.quicktime.location.ISO6709: +40.0291+116.3122+055.303/
    com.apple.quicktime.make: Apple
    com.apple.quicktime.model: iPhone 12 Pro
    com.apple.quicktime.software: 18.4.1
    com.apple.quicktime.creationdate: 2025-05-17T12:58:41+0800
    com.apple.quicktime.content.identifier: 186B093E-F74C-413B-B2F4-F617EBAD320B
  Duration: 00:00:02.27, start: 0.000000, bitrate: 11880 kb/s
  Stream #0:0[0x1](und): Video: hevc (Main), 1 reference frame (hvc1 / 0x31637668), yuvj420p(pc, smpte170m/smpte432/bt709, left), 1920x1440, 11128 kb/s, 23.81 fps, 29.97 tbr, 600 tbn (default)
      Metadata:
        creation_time   : 2025-05-17T04:59:15.000000Z
        handler_name    : Core Media Video
        vendor_id       : [0][0][0][0]
        encoder         : HEVC
      Side data:
        Frame cropping: 88/88/66/66
  Stream #0:1[0x2](und): Audio: pcm_s16le (lpcm / 0x6D63706C), 44100 Hz, mono, s16, 705 kb/s (default)
      Metadata:
        creation_time   : 2025-05-17T04:59:15.000000Z
        handler_name    : Core Media Audio
        vendor_id       : [0][0][0][0]
  Stream #0:2[0x3](und): Data: none (mebx / 0x7862656D), 0 kb/s (default)
      Metadata:
        creation_time   : 2025-05-17T04:59:15.000000Z
        handler_name    : Core Media Metadata
  Stream #0:3[0x4](und): Data: none (mebx / 0x7862656D), 27 kb/s (default)
      Metadata:
        creation_time   : 2025-05-17T04:59:15.000000Z
        handler_name    : Core Media Metadata
  Stream #0:4[0x5](und): Data: none (mebx / 0x7862656D), 43 kb/s (default)
      Metadata:
        creation_time   : 2025-05-17T04:59:15.000000Z
        handler_name    : Core Media Metadata
[out#0/image2 @ 0x55fb90eb9240] No explicit maps, mapping streams automatically...
[vost#0:0/mjpeg @ 0x55fb90e8ddc0] Created video stream from input stream 0:0
[Parsed_thumbnail_1 @ 0x55fb90e8c300] batch size: 12 frames
[Parsed_fps_0 @ 0x55fb90eb0280] 0 frames in, 0 frames out; 0 frames dropped, 0 frames duplicated.
Stream mapping:
  Stream #0:0 -> #0:0 (hevc (native) -> mjpeg (native))
[vost#0:0/mjpeg @ 0x55fb90e8ddc0] Starting thread...
[vf#0:0 @ 0x55fb90e9acc0] Starting thread...
[vist#0:0/hevc @ 0x55fb90e8d380] [dec:hevc @ 0x55fb90eb83c0] Starting thread...
[in#0/mov,mp4,m4a,3gp,3g2,mj2 @ 0x55fb90e88240] Starting thread...
Press [q] to stop, [?] for help
[in#0/mov,mp4,m4a,3gp,3g2,mj2 @ 0x55fb90e88240] EOF while reading input
[in#0/mov,mp4,m4a,3gp,3g2,mj2 @ 0x55fb90e88240] Terminating thread with return code 0 (success)
[vist#0:0/hevc @ 0x55fb90e8d380] [dec:hevc @ 0x55fb90eb83c0] Decoder thread received EOF packet
[vist#0:0/hevc @ 0x55fb90e8d380] [dec:hevc @ 0x55fb90eb83c0] Decoder returned EOF, finishing
[Parsed_thumbnail_1 @ 0x7f6ecc001200] batch size: 12 frames
[graph -1 input from stream 0:0 @ 0x7f6ecc00ef40] w:1920 h:1440 pixfmt:yuvj420p tb:1/600 fr:30000/1001 sar:0/1 csp:smpte170m range:pc
[crop @ 0x7f6ecc00f740] w:1920 h:1440 sar:0/1 -> w:1744 h:1308 sar:0/1
[Parsed_fps_0 @ 0x7f6ecc001300] Set first pts to (in:0 out:0) from start time 0.000000
[Parsed_fps_0 @ 0x7f6ecc001300] fps=12/1
[graph -1 input from stream 0:0 @ 0x7f6ecc00ef40] video frame properties congruent with link at pts_time: 0
[vist#0:0/hevc @ 0x55fb90e8d380] [dec:hevc @ 0x55fb90eb83c0] Terminating thread with return code 0 (success)
[Parsed_thumbnail_1 @ 0x7f6ecc001200] frame id #0 (pts_time=0.000000) selected from a set of 12 images
[Parsed_thumbnail_1 @ 0x7f6ecc001200] frame id #0 (pts_time=1.000000) selected from a set of 1 images

[Nest] 7  - 11/29/2025, 1:40:14 AM   ERROR [Microservices:{"id":"1c7d3e08-65a8-4ab0-8324-6225598c749b"}] Unable to run job handler (AssetGenerateThumbnails): Error: ffmpeg was killed with signal SIGSEGV
Error: ffmpeg was killed with signal SIGSEGV
    at ChildProcess.<anonymous> (/usr/src/app/server/node_modules/.pnpm/fluent-ffmpeg@2.1.3/node_modules/fluent-ffmpeg/lib/processor.js:178:22)
    at ChildProcess.emit (node:events:518:28)
    at ChildProcess._handle.onexit (node:internal/child_process:293:12)

Additional information

No response

Originally created by @yuhuan417 on GitHub (Nov 28, 2025). Originally assigned to: @mertalev on GitHub. ### I have searched the existing issues, both open and closed, to make sure this is not a duplicate report. - [x] Yes ### The bug Thumbnail generation failed for a very short video recorded by iPhone 12 Pro; server logs show the failure was caused by an ffmpeg crash. The problematic video: https://github.com/user-attachments/assets/2ac0f2b4-4376-49ec-a9f1-e6c0099df6dc It works fine if I remove thumbnail=12 and reverse parameters. ### The OS that Immich Server is running on qnap qts 5.2 ### Version of Immich Server v2.3.1 ### Version of Immich Mobile App v2.3.1 ### Platform with the issue - [x] Server - [ ] Web - [ ] Mobile ### Device make and model _No response_ ### Your docker-compose.yml content ```YAML # # WARNING: Make sure to use the docker-compose.yml of the current release: # # https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml # # The compose file on main may not be compatible with the latest release. # name: immich services: immich-server: container_name: immich_server image: ghcr.io/immich-app/immich-server:release # extends: # file: hwaccel.transcoding.yml # service: cpu # set to one of [nvenc, quicksync, rkmpp, vaapi, vaapi-wsl] for accelerated transcoding environment: UPLOAD_LOCATION: /share/photo/immich DB_DATA_LOCATION: /share/photo/docker/immich/postgres TZ: Etc/UTC IMMICH_VERSION: release DB_PASSWORD: xxx DB_USERNAME: xxx DB_DATABASE_NAME: immich IMMICH_LOG_LEVEL: debug devices: - /dev/dri:/dev/dri volumes: # Do not edit the next line. If you want to change the media storage location on your system, edit the value of UPLOAD_LOCATION in the .env file - /share/photo/immich:/usr/src/app/upload - /etc/localtime:/etc/localtime:ro - /share/photo/:/myphoto ports: - 2283:2283 depends_on: - redis - database restart: always healthcheck: disable: false immich-machine-learning: container_name: immich_machine_learning # For hardware acceleration, add one of -[armnn, cuda, openvino] to the image tag. # Example tag: ${IMMICH_VERSION:-release}-cuda image: ghcr.io/immich-app/immich-machine-learning:release-openvino # extends: # uncomment this section for hardware acceleration - see https://immich.app/docs/features/ml-hardware-acceleration # file: hwaccel.ml.yml # service: cpu # set to one of [armnn, cuda, openvino, openvino-wsl] for accelerated inference - use the `-wsl` version for WSL2 where applicable environment: UPLOAD_LOCATION: /share/photo/immich TZ: Asia/Shanghai IMMICH_VERSION: release MACHINE_LEARNING_MODEL_INTRO_OP_THREADS: 1 MACHINE_LEARNING_MAX_BATCH_SIZE__TEXT_RECOGNITION: 1 MACHINE_LEARNING_OPENVINO_PRECISION: FP16 MACHINE_LEARNING_PRELOAD__CLIP__TEXTUAL: nllb-clip-base-siglip__v1 MACHINE_LEARNING_PRELOAD__CLIP__VISUAL: nllb-clip-base-siglip__v1 MACHINE_LEARNING_PRELOAD__FACIAL_RECOGNITION__RECOGNITION: buffalo_l MACHINE_LEARNING_PRELOAD__FACIAL_RECOGNITION__DETECTION: buffalo_l MACHINE_LEARNING_REQUEST_THREADS: 1 volumes: - model-cache:/cache - /dev/bus/usb:/dev/bus/usb restart: always healthcheck: disable: false device_cgroup_rules: - 'c 189:* rmw' devices: - /dev/dri:/dev/dri redis: container_name: immich_redis image: docker.io/valkey/valkey:8-bookworm@sha256:42cba146593a5ea9a622002c1b7cba5da7be248650cbb64ecb9c6c33d29794b1 healthcheck: test: redis-cli ping || exit 1 restart: always database: container_name: immich_postgres image: ghcr.io/immich-app/postgres:14-vectorchord0.3.0 environment: UPLOAD_LOCATION: /share/photo/immich DB_DATA_LOCATION: /share/photo/docker/immich/postgres TZ: Asia/Shanghai IMMICH_VERSION: release DB_PASSWORD: xxx DB_USERNAME: xxx DB_DATABASE_NAME: immich POSTGRES_PASSWORD: xxx POSTGRES_USER: xxx POSTGRES_DB: immich POSTGRES_INITDB_ARGS: '--data-checksums' volumes: # Do not edit the next line. If you want to change the database storage location on your system, edit the value of DB_DATA_LOCATION in the .env file - /share/photo/docker/immich/postgres:/var/lib/postgresql/data restart: always volumes: model-cache: ``` ### Your .env content ```Shell yml inlined ``` ### Reproduction steps 1. upload .mov file 2. generate thumbnail ### Relevant log output ```shell [Nest] 7 - 11/29/2025, 1:40:14 AM DEBUG [Microservices:MediaRepository] ffmpeg -n 10 /usr/bin/ffmpeg -skip_frame nointra -sws_flags accurate_rnd+full_chroma_int -i /myphoto/2025-05/jintong/2025-05-17 12.58.41.MOV -y -fps_mode vfr -frames:v 1 -update 1 -v verbose -vf fps=12:start_time=0:eof_action=pass:round=down,thumbnail=12,select=gt(scene\,0.1)-eq(prev_selected_n\,n)+isnan(prev_selected_n)+gt(n\,20),trim=end_frame=2,reverse /usr/src/app/upload/thumbs/f1e57fc5-13ec-45bc-a4c6-ee2accc68d06/1c/7d/1c7d3e08-65a8-4ab0-8324-6225598c749b-preview.jpeg [Nest] 7 - 11/29/2025, 1:40:14 AM ERROR [Microservices:MediaRepository] ffmpeg version 7.1.1-Jellyfin Copyright (c) 2000-2025 the FFmpeg developers built with gcc 14 (Debian 14.2.0-19) configuration: --prefix=/usr/lib/jellyfin-ffmpeg --target-os=linux --extra-version=Jellyfin --disable-doc --disable-ffplay --disable-static --disable-libxcb --disable-sdl2 --disable-xlib --enable-lto=auto --enable-gpl --enable-version3 --enable-shared --enable-gmp --enable-gnutls --enable-chromaprint --enable-opencl --enable-libdrm --enable-libxml2 --enable-libass --enable-libfreetype --enable-libfribidi --enable-libfontconfig --enable-libharfbuzz --enable-libbluray --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libopenmpt --enable-libdav1d --enable-libsvtav1 --enable-libwebp --enable-libvpx --enable-libx264 --enable-libx265 --enable-libzvbi --enable-libzimg --enable-libfdk-aac --arch=amd64 --enable-libshaderc --enable-libplacebo --enable-vulkan --enable-vaapi --enable-amf --enable-libvpl --enable-ffnvcodec --enable-cuda --enable-cuda-llvm --enable-cuvid --enable-nvdec --enable-nvenc libavutil 59. 39.100 / 59. 39.100 libavcodec 61. 19.101 / 61. 19.101 libavformat 61. 7.100 / 61. 7.100 libavdevice 61. 3.100 / 61. 3.100 libavfilter 10. 4.100 / 10. 4.100 libswscale 8. 3.100 / 8. 3.100 libswresample 5. 3.100 / 5. 3.100 libpostproc 58. 3.100 / 58. 3.100 [aist#0:1/pcm_s16le @ 0x55fb90e8d500] Guessed Channel Layout: mono Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/myphoto/2025-05/jintong/2025-05-17 12.58.41.MOV': Metadata: major_brand : qt minor_version : 0 compatible_brands: qt creation_time : 2025-05-17T04:59:15.000000Z com.apple.quicktime.location.accuracy.horizontal: 13.328273 com.apple.quicktime.live-photo.auto: 1 com.apple.quicktime.full-frame-rate-playback-intent: 0 com.apple.quicktime.live-photo.vitality-score: 1.000000 com.apple.quicktime.live-photo.vitality-scoring-version: 0 com.apple.quicktime.location.ISO6709: +40.0291+116.3122+055.303/ com.apple.quicktime.make: Apple com.apple.quicktime.model: iPhone 12 Pro com.apple.quicktime.software: 18.4.1 com.apple.quicktime.creationdate: 2025-05-17T12:58:41+0800 com.apple.quicktime.content.identifier: 186B093E-F74C-413B-B2F4-F617EBAD320B Duration: 00:00:02.27, start: 0.000000, bitrate: 11880 kb/s Stream #0:0[0x1](und): Video: hevc (Main), 1 reference frame (hvc1 / 0x31637668), yuvj420p(pc, smpte170m/smpte432/bt709, left), 1920x1440, 11128 kb/s, 23.81 fps, 29.97 tbr, 600 tbn (default) Metadata: creation_time : 2025-05-17T04:59:15.000000Z handler_name : Core Media Video vendor_id : [0][0][0][0] encoder : HEVC Side data: Frame cropping: 88/88/66/66 Stream #0:1[0x2](und): Audio: pcm_s16le (lpcm / 0x6D63706C), 44100 Hz, mono, s16, 705 kb/s (default) Metadata: creation_time : 2025-05-17T04:59:15.000000Z handler_name : Core Media Audio vendor_id : [0][0][0][0] Stream #0:2[0x3](und): Data: none (mebx / 0x7862656D), 0 kb/s (default) Metadata: creation_time : 2025-05-17T04:59:15.000000Z handler_name : Core Media Metadata Stream #0:3[0x4](und): Data: none (mebx / 0x7862656D), 27 kb/s (default) Metadata: creation_time : 2025-05-17T04:59:15.000000Z handler_name : Core Media Metadata Stream #0:4[0x5](und): Data: none (mebx / 0x7862656D), 43 kb/s (default) Metadata: creation_time : 2025-05-17T04:59:15.000000Z handler_name : Core Media Metadata [out#0/image2 @ 0x55fb90eb9240] No explicit maps, mapping streams automatically... [vost#0:0/mjpeg @ 0x55fb90e8ddc0] Created video stream from input stream 0:0 [Parsed_thumbnail_1 @ 0x55fb90e8c300] batch size: 12 frames [Parsed_fps_0 @ 0x55fb90eb0280] 0 frames in, 0 frames out; 0 frames dropped, 0 frames duplicated. Stream mapping: Stream #0:0 -> #0:0 (hevc (native) -> mjpeg (native)) [vost#0:0/mjpeg @ 0x55fb90e8ddc0] Starting thread... [vf#0:0 @ 0x55fb90e9acc0] Starting thread... [vist#0:0/hevc @ 0x55fb90e8d380] [dec:hevc @ 0x55fb90eb83c0] Starting thread... [in#0/mov,mp4,m4a,3gp,3g2,mj2 @ 0x55fb90e88240] Starting thread... Press [q] to stop, [?] for help [in#0/mov,mp4,m4a,3gp,3g2,mj2 @ 0x55fb90e88240] EOF while reading input [in#0/mov,mp4,m4a,3gp,3g2,mj2 @ 0x55fb90e88240] Terminating thread with return code 0 (success) [vist#0:0/hevc @ 0x55fb90e8d380] [dec:hevc @ 0x55fb90eb83c0] Decoder thread received EOF packet [vist#0:0/hevc @ 0x55fb90e8d380] [dec:hevc @ 0x55fb90eb83c0] Decoder returned EOF, finishing [Parsed_thumbnail_1 @ 0x7f6ecc001200] batch size: 12 frames [graph -1 input from stream 0:0 @ 0x7f6ecc00ef40] w:1920 h:1440 pixfmt:yuvj420p tb:1/600 fr:30000/1001 sar:0/1 csp:smpte170m range:pc [crop @ 0x7f6ecc00f740] w:1920 h:1440 sar:0/1 -> w:1744 h:1308 sar:0/1 [Parsed_fps_0 @ 0x7f6ecc001300] Set first pts to (in:0 out:0) from start time 0.000000 [Parsed_fps_0 @ 0x7f6ecc001300] fps=12/1 [graph -1 input from stream 0:0 @ 0x7f6ecc00ef40] video frame properties congruent with link at pts_time: 0 [vist#0:0/hevc @ 0x55fb90e8d380] [dec:hevc @ 0x55fb90eb83c0] Terminating thread with return code 0 (success) [Parsed_thumbnail_1 @ 0x7f6ecc001200] frame id #0 (pts_time=0.000000) selected from a set of 12 images [Parsed_thumbnail_1 @ 0x7f6ecc001200] frame id #0 (pts_time=1.000000) selected from a set of 1 images [Nest] 7 - 11/29/2025, 1:40:14 AM ERROR [Microservices:{"id":"1c7d3e08-65a8-4ab0-8324-6225598c749b"}] Unable to run job handler (AssetGenerateThumbnails): Error: ffmpeg was killed with signal SIGSEGV Error: ffmpeg was killed with signal SIGSEGV at ChildProcess.<anonymous> (/usr/src/app/server/node_modules/.pnpm/fluent-ffmpeg@2.1.3/node_modules/fluent-ffmpeg/lib/processor.js:178:22) at ChildProcess.emit (node:events:518:28) at ChildProcess._handle.onexit (node:internal/child_process:293:12) ``` ### Additional information _No response_
Author
Owner

@Metacowboy commented on GitHub (Dec 3, 2025):

Its a problem with jellyfin-ffmpeg. not immich. Have the same problem with just some captured MiniDV videos in the format dvvideo 720x575 its today quite exotic format . Problems Bugs with DV or extrem short Clips ,spzial Colorformats Immich get a SIGSEGV from ellyfin-ffmpeg.
Would be nice if we could define the ffmpeg version and filter in the composer file to prevent these kind of Bugs

@Metacowboy commented on GitHub (Dec 3, 2025): Its a problem with jellyfin-ffmpeg. not immich. Have the same problem with just some captured MiniDV videos in the format dvvideo 720x575 its today quite exotic format . Problems Bugs with DV or extrem short Clips ,spzial Colorformats Immich get a SIGSEGV from ellyfin-ffmpeg. Would be nice if we could define the ffmpeg version and filter in the composer file to prevent these kind of Bugs
Author
Owner

@yuhuan417 commented on GitHub (Dec 3, 2025):

This issue isn't really about the FFmpeg version—it's more related to how Immich uses FFmpeg. I found that if I remove the thumbnail=12 and reverse parameters, the command line runs successfully.
It seems that certain combinations of other parameters can result in very few (or even no) usable frames being available. When the resulting list is empty, the reverse operation ends up causing an out-of-bounds error.
It's possible that some FFmpeg versions don't crash in this situation, but instead return an error code and an empty result. However, the real fix would be to ensure we're using parameter combinations that reliably select usable frames.
This is my analysis with the help of AI, but I'm not quite sure how to fix this without introducing any side effects.

@yuhuan417 commented on GitHub (Dec 3, 2025): This issue isn't really about the FFmpeg version—it's more related to how Immich uses FFmpeg. I found that if I remove the thumbnail=12 and reverse parameters, the command line runs successfully. It seems that certain combinations of other parameters can result in very few (or even no) usable frames being available. When the resulting list is empty, the reverse operation ends up causing an out-of-bounds error. It's possible that some FFmpeg versions don't crash in this situation, but instead return an error code and an empty result. However, the real fix would be to ensure we're using parameter combinations that reliably select usable frames. This is my analysis with the help of AI, but I'm not quite sure how to fix this without introducing any side effects.
Author
Owner

@yuhuan417 commented on GitHub (Dec 3, 2025):

This issue isn't really about the FFmpeg version—it's more related to how Immich uses FFmpeg. I found that if I remove the thumbnail=12 and reverse parameters, the command line runs successfully.
It seems that certain combinations of other parameters can result in very few (or even no) usable frames being available. When the resulting list is empty, the reverse operation ends up causing an out-of-bounds error.
It's possible that some FFmpeg versions don't crash in this situation, but instead return an error code and an empty result. However, the real fix would be to ensure we're using parameter combinations that reliably select usable frames.
This is my analysis with the help of AI, but I'm not quite sure how to fix this without introducing any side effects.

Closed by fat finger…… reopening

@yuhuan417 commented on GitHub (Dec 3, 2025): This issue isn't really about the FFmpeg version—it's more related to how Immich uses FFmpeg. I found that if I remove the thumbnail=12 and reverse parameters, the command line runs successfully. It seems that certain combinations of other parameters can result in very few (or even no) usable frames being available. When the resulting list is empty, the reverse operation ends up causing an out-of-bounds error. It's possible that some FFmpeg versions don't crash in this situation, but instead return an error code and an empty result. However, the real fix would be to ensure we're using parameter combinations that reliably select usable frames. This is my analysis with the help of AI, but I'm not quite sure how to fix this without introducing any side effects. Closed by fat finger…… reopening
Author
Owner

@yuhuan417 commented on GitHub (Jan 4, 2026):

I found that I uploaded the wrong file; the file corresponding to the error log is this one: https://github.com/user-attachments/assets/54ef1691-8f3c-41dd-89db-753ef82ba039. However, both files should be able to trigger the issue.

From the log, it can be seen that there are no frames left once entering the filter:
[Parsed_fps_0 @ 0x55fb90eb0280] 0 frames in, 0 frames out; 0 frames dropped, 0 frames duplicated.

It should still be that this version of FFmpeg has a bug when handling short videos with the skip_frame nointra parameter.

@yuhuan417 commented on GitHub (Jan 4, 2026): I found that I uploaded the wrong file; the file corresponding to the error log is this one: [https://github.com/user-attachments/assets/54ef1691-8f3c-41dd-89db-753ef82ba039](https://github.com/user-attachments/assets/54ef1691-8f3c-41dd-89db-753ef82ba039). However, both files should be able to trigger the issue. From the log, it can be seen that there are no frames left once entering the filter: [Parsed_fps_0 @ 0x55fb90eb0280] 0 frames in, 0 frames out; 0 frames dropped, 0 frames duplicated. It should still be that this version of FFmpeg has a bug when handling short videos with the skip_frame nointra parameter.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/immich#7481
No description provided.