PKG_NAME:=fluent-bit
PKG_VERSION:=5.0.8
-PKG_RELEASE:=2
+PKG_RELEASE:=3
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://github.com/fluent/fluent-bit.git
-DFLB_BACKTRACE=No \
-DFLB_WASM=No \
-DFLB_LUAJIT=No \
- -DFLB_CORO_STACK_SIZE=4096 \
+ -DFLB_CORO_STACK_SIZE=65536 \
-DWITH_SASL=No \
-DWITH_ZLIB=No \
-DWITH_ZSTD=No \
--- /dev/null
+#!/bin/sh
+# Regression test for issue #30113: with too small a coroutine stack the HTTP
+# output plugin overflows and dies (SIGSEGV/abort) on its first flush. Drive the
+# dummy input into the http output and make sure fluent-bit survives a few flush
+# cycles. No server is needed -- the crash happens while composing/sending the
+# request, so a refused local port is enough to exercise it.
+
+case "$1" in
+fluent-bit) ;;
+*) exit 0 ;;
+esac
+
+BIN=/usr/sbin/fluent-bit
+[ -x "$BIN" ] || { echo "FAIL: $BIN not installed"; exit 1; }
+
+cfg=/tmp/fluent-bit-http.conf
+cat > "$cfg" <<'EOF'
+[SERVICE]
+ flush 1
+ daemon off
+ log_level error
+[INPUT]
+ name dummy
+ dummy {"message":"regress-30113"}
+ rate 100
+[OUTPUT]
+ name http
+ match *
+ host 127.0.0.1
+ port 5170
+ format json
+EOF
+
+# A healthy run keeps retrying the refused endpoint until timeout stops it
+# (rc 124); a coroutine-stack overflow dies from a signal (rc >= 128) within
+# the first flush cycle.
+timeout 6 "$BIN" -c "$cfg" >/tmp/fluent-bit-http.out 2>&1
+rc=$?
+
+if [ "$rc" -ge 128 ]; then
+ echo "FAIL: fluent-bit http output died from a signal (rc=$rc) -- coro stack too small"
+ grep -iE 'signal|SIGSEGV' /tmp/fluent-bit-http.out | head -1
+ exit 1
+fi
+
+echo "fluent-bit: http output survived flush cycles (rc=$rc)"