fork: size continuation save buffers from live frames#862
Open
brandonpayton wants to merge 1 commit into
Open
Conversation
Phase B-1 matrix build status —
|
| Package | Arch | Status | Sha |
|---|---|---|---|
| libcurl | wasm32 | built | 83c7331a |
| libcxx | wasm32 | built | 2f85dbef |
| libcxx | wasm64 | built | 9c79648f |
| libpng | wasm32 | built | 3d47436d |
| libxml2 | wasm32 | built | f57e4ebf |
| libxml2 | wasm64 | built | d7bb9f55 |
| openssl | wasm32 | built | 37ca91fe |
| openssl | wasm64 | built | 9bbc9fce |
| sqlite | wasm32 | built | a3f0308c |
| sqlite | wasm64 | failed | — |
| zlib | wasm32 | built | 48858a3b |
| zlib | wasm64 | built | 7c8161b5 |
| bc | wasm32 | failed | — |
| bzip2 | wasm32 | failed | — |
| coreutils | wasm32 | failed | — |
| curl | wasm32 | failed | — |
| dash | wasm32 | failed | — |
| diffutils | wasm32 | failed | — |
| dinit | wasm32 | failed | — |
| fbdoom | wasm32 | failed | — |
| file | wasm32 | failed | — |
| findutils | wasm32 | failed | — |
| gawk | wasm32 | failed | — |
| git | wasm32 | failed | — |
| grep | wasm32 | failed | — |
| gzip | wasm32 | failed | — |
| hello | wasm32 | failed | — |
| kandelo-sdk | wasm32 | failed | — |
| kernel | wasm32 | failed | — |
| less | wasm32 | failed | — |
| lsof | wasm32 | failed | — |
| m4 | wasm32 | failed | — |
| make | wasm32 | failed | — |
| mariadb | wasm32 | failed | — |
| mariadb | wasm64 | failed | — |
| modeset | wasm32 | failed | — |
| msmtpd | wasm32 | failed | — |
| nano | wasm32 | failed | — |
| ncurses | wasm32 | failed | — |
| netcat | wasm32 | failed | — |
| nginx | wasm32 | failed | — |
| php | wasm32 | failed | — |
| posix-utils-lite | wasm32 | failed | — |
| sed | wasm32 | failed | — |
| spidermonkey | wasm32 | failed | — |
| tar | wasm32 | failed | — |
| tcl | wasm32 | failed | — |
| unzip | wasm32 | failed | — |
| userspace | wasm32 | failed | — |
| vim | wasm32 | failed | — |
| wget | wasm32 | failed | — |
| xz | wasm32 | failed | — |
| zip | wasm32 | failed | — |
| zstd | wasm32 | failed | — |
| bash | wasm32 | failed | — |
| mariadb-test | wasm32 | failed | — |
| mariadb-vfs | wasm32 | failed | — |
| mariadb-vfs | wasm64 | failed | — |
| nethack | wasm32 | failed | — |
| node | wasm32 | failed | — |
| spidermonkey-node | wasm32 | failed | — |
| vim-browser-bundle | wasm32 | failed | — |
| nethack-browser-bundle | wasm32 | failed | — |
| rootfs | wasm32 | failed | — |
| shell | wasm32 | failed | — |
| lamp | wasm32 | failed | — |
| node-vfs | wasm32 | failed | — |
| wordpress | wasm32 | failed | — |
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.
Summary
This completes the elastic fork-save-buffer fix on top of #845. PR #845 turns fixed-buffer overruns into truthful failures; this PR prevents the GTK/LXDE overrun by letting opted-in fork-instrumented programs expose a live frame-byte counter and by giving those programs a larger host-reserved fork-save region.
Changes:
wasm-fork-instrument --frame-counterand exports_wpk_fork_active_bytesonly for flagged programs__abi_version,__wasm_posix_thread_slots,__get_channel_base_addr) so instrumented GTK apps still pass pre-start ABI checksWASM_POSIX_FORK_FRAME_COUNTER=1into the fork instrumentation wrapper for GTK/LXDE fork-heavy buildsValidation
Final branch checks:
bash scripts/dev-shell.sh bash -c 'cargo test -p fork-instrument --target $(rustc -vV | awk '\''/^host/{print $2}'\'')'bash scripts/dev-shell.sh bash scripts/build-fork-instrument-tool.shbash scripts/dev-shell.sh bash -c 'bash scripts/check-abi-version.sh && npm --prefix host run typecheck'git diff --checkLXDE validation against the failing software:
/Users/brandon/emdash/worktrees/Kandelo/emdash/_lxde-elastic-validateWASM_POSIX_FORK_FRAME_COUNTER=1.g_spawn_async(..., G_SPAWN_SEARCH_PATH, ...)double-fork path for the validation cache._wpk_fork_active_bytes.bash scripts/dev-shell.sh node scripts/validate-lxde-fork-browser.mjs: BrowserKernel + Xfbdev + openbox + lxpanel + pcmanfm started, lxpanel Menu -> Text Editor spawned a second leafpad through the double-fork path (leafpad count 1 -> 2), and noforkSaveBufferOverrun, save-buffer overflow, or worker-never-start diagnostics were emitted.Earlier branch validation before the final marker-export carveout:
bash scripts/build-musl.shbash build.shNot measured in this PR: final real-world performance overhead for lxpanel with vs. without
--frame-counter.