[PHP] fix: split fork/process/shared-memory runtime fixes#756
Open
brandonpayton wants to merge 8 commits into
Open
Conversation
(cherry picked from commit d2011d8)
(cherry picked from commit 079b089)
(cherry picked from commit 2b33f62)
(cherry picked from commit 79600da)
Port the PR #2 shared-memory/fork fixes onto current Automattic/kandelo. Centralized host workers now inherit and synchronize MAP_SHARED and SysV shared memory across fork, wait, detach, and exit boundaries so parent/child processes observe real shared state. Grow exec-state serialization instead of failing at a fixed 64 KiB buffer, keep Node/browser fork paths in parity, refresh the ABI snapshot for ABI 16, and update focused host/kernel fixtures and tests for the port.
Phase B-1 matrix build status —
|
| Package | Arch | Status | Sha |
|---|---|---|---|
| libcurl | wasm32 | built | a6f6534d |
| libcxx | wasm32 | built | 0d3c1977 |
| libcxx | wasm64 | built | 3117bdac |
| libiconv | wasm32 | built | 1be46463 |
| libiconv | wasm64 | built | 82d9fdf3 |
| libpng | wasm32 | built | 697eac68 |
| libxml2 | wasm32 | built | 41fada20 |
| libxml2 | wasm64 | built | b3752126 |
| openssl | wasm32 | built | 96fbd5a6 |
| openssl | wasm64 | built | b53b8ff0 |
| sqlite | wasm32 | built | 10a86a4f |
| sqlite | wasm64 | built | e74c37db |
| zlib | wasm32 | built | 1b3d5c6f |
| zlib | wasm64 | built | 8470f519 |
| bc | wasm32 | built | 645e81c1 |
| bzip2 | wasm32 | built | 85ec619a |
| coreutils | wasm32 | built | d0c76ab8 |
| curl | wasm32 | built | 3dfec8e7 |
| dash | wasm32 | built | 04d2f6b8 |
| diffutils | wasm32 | built | c804830a |
| dinit | wasm32 | built | e646ca69 |
| fbdoom | wasm32 | built | 935a71b0 |
| file | wasm32 | built | b9e73f9f |
| findutils | wasm32 | built | aeeb6ecc |
| gawk | wasm32 | built | 9c6d61e9 |
| git | wasm32 | built | ad9f9d06 |
| grep | wasm32 | built | c6aa7ff9 |
| gzip | wasm32 | built | 6c492249 |
| kandelo-sdk | wasm32 | built | fa69e4fc |
| kernel | wasm32 | failed | — |
| less | wasm32 | built | 87aa211f |
| lsof | wasm32 | built | c88ab5c9 |
| m4 | wasm32 | built | 5847a852 |
| make | wasm32 | failed | — |
| mariadb | wasm32 | built | d5d40cc7 |
| mariadb | wasm64 | built | 8c75bf16 |
| modeset | wasm32 | built | e5967428 |
| msmtpd | wasm32 | built | cff25a9b |
| nano | wasm32 | built | d850deac |
| ncurses | wasm32 | built | 9a77777f |
| netcat | wasm32 | built | e8e76c42 |
| nginx | wasm32 | built | 3742a74e |
| php | wasm32 | built | 6c215a1d |
| posix-utils-lite | wasm32 | built | 3ab77df9 |
| sed | wasm32 | built | ef08c754 |
| spidermonkey | wasm32 | built | d1b3e35c |
| tar | wasm32 | built | 7ac89a61 |
| tcl | wasm32 | built | 1e64df4d |
| unzip | wasm32 | built | 3f650bbb |
| userspace | wasm32 | built | 4dcfe62b |
| vim | wasm32 | built | 9c5d375e |
| wget | wasm32 | built | 2b0aaa25 |
| xz | wasm32 | built | dba87aba |
| zip | wasm32 | built | f1c66da0 |
| zstd | wasm32 | built | 4381b467 |
| bash | wasm32 | built | 479f8133 |
| mariadb-test | wasm32 | built | 95e7de82 |
| mariadb-vfs | wasm32 | built | 9cca8b82 |
| mariadb-vfs | wasm64 | built | 97bcd722 |
| nethack | wasm32 | built | 6198392e |
| node | wasm32 | built | cfe2bfc0 |
| spidermonkey-node | wasm32 | built | eee81883 |
| vim-browser-bundle | wasm32 | built | cb17bc3a |
| nethack-browser-bundle | wasm32 | built | 0d6d8f1e |
| rootfs | wasm32 | failed | — |
| shell | wasm32 | failed | — |
| node-vfs | wasm32 | built | f8a54c30 |
Auto-generated; replaced on each push. Raw data in the publish-status workflow artifact.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Supersedes fork-headed PR #737. This replacement keeps the same head commit (9a7ec18) but moves the PR head onto an Automattic/kandelo branch.
Why this is needed
The PHP PHPT suite relies on fork, worker isolation, shared anonymous mappings, SysV and shared-memory visibility, and FPM-style process and socket coordination. If child processes do not inherit and synchronize the right runtime state, PHP sees failures that are really Kandelo process-model bugs.
Why this shape makes sense
These commits are grouped because fork, process, and shared-memory semantics are tightly coupled. Mmap inheritance, forked worker state, exec readers, dlopened side modules, and shared-memory sync all interact at process boundaries.
Why this is the correct fix
The branch fixes the process-runtime invariants directly. Preserving shared mappings across fork and synchronizing shared memory at the host boundary matches the Unix behavior PHP depends on and avoids marking core process tests as unsupported.
Stack
Base: integration/kd-6nz-php-phpt-socket-network-base, after the socket and network replacement layer.
Verification
Branch-location correction only. Replacement head SHA matches fork-headed PR #737 exactly.