Repository navigation
fix(runtime): bound and account for binary copy work - #38
Merged
Merged
Conversation
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.
Why
A huge binary:copy/2 request could abort every process instead of notifying its monitoring parent.
What changed
Before and after
Before: The original overflow ended the whole program with exit 134 before its parent could receive DOWN.
After: The overflow now delivers DOWN with system_limit; copying yields in chunks of at most 65,536 output bytes.
This changes native program behavior, not an on-screen view; execution transcripts demonstrate error delivery and cooperative copying.
Checked
Live validation: Demonstrated for this version. 4 of 4 scenarios driven live in the product.
How it was checked
cargo build --release --locked -p nera-runtime; cargo build --release --locked: passed.
cargo clippy --workspace --all-targets --locked -- -D warnings: passed.
cargo test --workspace --locked --no-fail-fast: 2,163 passed, zero failed, one ignored.
python3 scripts/test-allocator-config.py: passed.
./target/release/nera test -j 1 --timeout 30: 489 passed, zero failed, two documented skips.
python3 scripts/test-stacktrace-order.py: passed.
cargo test --locked -p nera-runtime ffi::binary_ops::copy:: -- --nocapture: five tests passed ten consecutive runs without retries.
Native copy fixtures ran ten times per selected scheduler mode; the same entries passed ten times on OTP 29.1.2.
python3 scripts/test-base64-scheduler.py: existing encode, binary-decode and list-decode scheduling journeys passed.
scripts/test-cross.sh passed for x86_64-apple-darwin and aarch64-unknown-linux-gnu; these are object checks, not target-native runtime validation.
Risk
Risk above low: Novelty, medium — New repetition state reuses the existing cooperative binary-work adapter.
Full risk assessment
Not done
Allocation and garbage collection remain synchronous; successful reservation does not prevent operating-system out-of-memory termination.
Native Windows and Linux aarch64 runtime execution are not established by these local checks.
Pipeline
Updates from git push no-mistakes
Infinitary checked this version: an independent review that also judged the documents, and live validation the review accepted.