diff --git a/docker-compose.worker.yml b/docker-compose.worker.yml index cb0c6af..61bce79 100644 --- a/docker-compose.worker.yml +++ b/docker-compose.worker.yml @@ -169,6 +169,7 @@ services: build: ./services/framecache profiles: [capture] restart: unless-stopped + init: true ipc: host shm_size: '${FC_SHM_SIZE_GB:-40}gb' environment: diff --git a/services/framecache/src/framecache.c b/services/framecache/src/framecache.c index 0cdfe47..6210107 100644 --- a/services/framecache/src/framecache.c +++ b/services/framecache/src/framecache.c @@ -315,13 +315,15 @@ static void request_completed(void *cls, /* ── main ──────────────────────────────────────────────────────────── */ static volatile int g_running = 1; +static volatile int g_received_signal = 0; -static void on_signal(int sig) { (void)sig; g_running = 0; } +static void on_signal(int sig) { g_received_signal = sig; g_running = 0; } int main(void) { signal(SIGINT, on_signal); signal(SIGTERM, on_signal); + signal(SIGPIPE, SIG_IGN); /* Ensure /dev/shm/framecache exists */ mkdir("/dev/shm/framecache", 0755); @@ -352,7 +354,7 @@ int main(void) nanosleep(&ts, NULL); } - fprintf(stderr, "[framecache] shutting down\n"); + fprintf(stderr, "[framecache] shutting down (signal %d)\n", g_received_signal); /* Destroy all active slots */ for (int i = 0; i < FC_MAX_SLOTS; i++) {