From 517e0867863667ea28fb81b76c7590332e640cf1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?K=C3=A9vin=20Dunglas?= Date: Mon, 18 Dec 2023 09:05:49 +0100 Subject: [PATCH] fix: random crashes when reloading (#394) --- .github/workflows/tests.yaml | 11 +++++++++++ C-Thread-Pool/thpool.c | 2 ++ frankenphp.c | 1 + reload_test.sh | 4 ++++ 4 files changed, 18 insertions(+) create mode 100755 reload_test.sh diff --git a/.github/workflows/tests.yaml b/.github/workflows/tests.yaml index aed7375..e7bb67d 100644 --- a/.github/workflows/tests.yaml +++ b/.github/workflows/tests.yaml @@ -53,6 +53,17 @@ jobs: name: Run Caddy module tests working-directory: caddy/ run: go test -race -v ./... + - + name: Build the server + working-directory: caddy/frankenphp/ + run: go build + - + name: Start the server + working-directory: testdata/ + run: sudo ../caddy/frankenphp/frankenphp start + - + name: Run integrations tests + run: ./reload_test.sh - name: Lint Go code uses: golangci/golangci-lint-action@v3 diff --git a/C-Thread-Pool/thpool.c b/C-Thread-Pool/thpool.c index 85a9381..3ee8f6a 100644 --- a/C-Thread-Pool/thpool.c +++ b/C-Thread-Pool/thpool.c @@ -528,6 +528,8 @@ static void bsem_init(bsem *bsem_p, int value) { /* Reset semaphore to 0 */ static void bsem_reset(bsem *bsem_p) { + pthread_mutex_destroy(&(bsem_p->mutex)); + pthread_cond_destroy(&(bsem_p->cond)); bsem_init(bsem_p, 0); } diff --git a/frankenphp.c b/frankenphp.c index 19da90d..19f32c5 100644 --- a/frankenphp.c +++ b/frankenphp.c @@ -15,6 +15,7 @@ #include #include #include +#include #include "C-Thread-Pool/thpool.c" #include "C-Thread-Pool/thpool.h" diff --git a/reload_test.sh b/reload_test.sh new file mode 100755 index 0000000..d35ff7a --- /dev/null +++ b/reload_test.sh @@ -0,0 +1,4 @@ +#!/bin/bash +for ((i = 0 ; i < 100 ; i++)); do + curl --no-progress-meter -o /dev/null http://localhost:2019/config/apps/frankenphp -: --no-progress-meter -o /dev/null -H 'Cache-Control: must-revalidate' -H 'Content-Type: application/json' --data-binary '{"workers":[{"file_name":"./index.php"}]}' -X PATCH http://localhost:2019/config/apps/frankenphp +done