From 14a8a474120ef4289625f05ba5d87fa9e9d19542 Mon Sep 17 00:00:00 2001 From: nsfisis Date: Thu, 6 Aug 2026 20:50:24 +0900 Subject: fix(php-rpc): carry the worker channel over a socketpair The transport bound an AF_UNIX path under TMPDIR and waited for the child to connect. That path has to fit in sun_path (108 bytes), so a deep TMPDIR made every worker spawn fail, and the bind(2) itself is denied under a sandbox. The parent now keeps one end of a socketpair and installs the other on descriptor 3 before exec, which the worker opens as php://fd/3. The pair is connected from the start, so the accept poll and its ten-second deadline are gone; a child that dies before reading surfaces as EOF on the first call, where worker_state already attaches its exit status. Co-Authored-By: Claude Opus 5 (1M context) --- Cargo.lock | 1 + 1 file changed, 1 insertion(+) (limited to 'Cargo.lock') diff --git a/Cargo.lock b/Cargo.lock index 4b5c6817..91fc9a1c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2146,6 +2146,7 @@ version = "0.0.1" dependencies = [ "anyhow", "indexmap", + "nix", "shirabe-external-packages", "shirabe-php-shim", "shirabe-php-src", -- cgit v1.3.1