Skip to content

FTL crashes under load #2824

@nbx3

Description

@nbx3

Versions

Core version is v6.4 (Latest: v6.4)
Web version is v6.4.1 (Latest: v6.4.1)
FTL version is v6.5 (Latest: v6.5)

Platform

Raspberry Pi

Expected behavior

FTL should handle concurrent HTTP API requests to the web interface without crashing.

Actual behavior / bug

FTL crashes with a segmentation fault (SIGSEGV) in the civetweb-worker thread when handling multiple concurrent API requests. The null pointer dereference occurs at address 0 (SEGV_MAPERR), suggesting a race condition in the civetweb request handler.

The crash occurs intermittently, typically after 30-60 minutes of operation, when a Prometheus exporter makes ~19 concurrent authenticated GET requests to various /api/ endpoints on each scrape.

09:27:42 INFO: ----------------------------> FTL crashed! <----------------------------
09:27:42 INFO: FTL has been running for 2872 seconds
09:27:42 INFO: FTL version: v6.5
09:27:42 INFO: FTL commit: f888309
09:27:42 INFO: Compiled for linux/arm64/v8 (compiled on CI) using cc (Alpine 15.2.0) 15.2.0
09:27:42 INFO: Received signal: Segmentation fault
09:27:42 INFO: at address: 0
09:27:42 INFO: with code: SEGV_MAPERR (Address not mapped to object)
09:27:42 INFO: Process details: MID: 68, PID: 68, TID: 238, Name: civetweb-worker

After the crash, FTL also logs high system load:
09:24:51 WARNING: Long-term load (15min avg) larger than number of processors: 4.2 > 4

Steps to reproduce

  1. Run Pi-hole v6 (FTL v6.5) in Docker on a Raspberry Pi (arm64, 2GB RAM)
  2. Configure a Prometheus exporter or similar tool that makes multiple concurrent authenticated API requests (e.g. /api/stats/summary, /api/dns/blocking, /api/stats/top_domains, /api/stats/top_clients, /api/stats/upstreams, /api/dhcp/leases, /api/network/devices, /api/info/system, etc.)
  3. Wait 30-60 minutes — FTL crashes with SIGSEGV in civetweb-worker
  4. The container restarts, and the cycle repeats

Reducing the concurrency of API requests (serialising instead of parallel) appears to mitigate the issue. I currently use my own exporter (https://github.com/nbx3/pihole-exporter) - i will add support for reducing the frequency, but this is still an issue

Debug Token

  • URL:

Screenshots

If applicable, add screenshots to help explain your problem.

Additional context

  • Platform: Raspberry Pi 4 (2GB), arm64, Raspberry Pi OS Bookworm
  • Pi-hole: Core v6.4, Web v6.4.1, FTL v6.5 (Docker tag 2026.02.0)
  • Docker: 28.4.0, network_mode: host

Compose file:

services:
  pihole:
    container_name: pihole
    image: pihole/pihole:latest
    network_mode: "host"                                                                                                                                   
    environment:
      TZ: 'Europe/London'                                                                                                                                  
      FTLCONF_dns_listeningMode: 'ALL'
      FTLCONF_webserver_api_password: ${FTL_CONF_WEBSERVER_PASSWORD:-password}                                                                             
    volumes:                                                                                                                                               
      - 'etc-pihole:/etc/pihole'                                                                                                                           
      - 'etc-dnsmasq.d:/etc/dnsmasq.d'                                                                                                                     
      - 'var-log:/var/log/pihole'                                                                                                                          
    cap_add:
      - NET_ADMIN                                                                                                                                          
      - SYS_NICE
      - SYS_TIME
    restart: unless-stopped 

Metadata

Metadata

Assignees

No one assigned

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions