Repository navigation
exec: fix uneven private pools and concurrent pool update - #1962
warpdesign wants to merge 2 commits into
Conversation
c49568f to
d8677b2
Compare
Allow terminal remainders in Allocate/Deallocate regions without writing a free-chunk header into an unusable tail. Preserve allocation alignment, restore the original free count on coalescing, and reject corrupt aligned pools and overflowing ranges using pointer-sized arithmetic. Serialize plain-header Allocate/Deallocate transactions with the existing memory lock on non-SMP targets. Longer validation exposes task switches while UFO shares a private pool between its intro and filesystem processes; a concurrent allocation can otherwise overwrite a node retained by Deallocate. Keep existing SMP header locks and managed callback paths. Advance exec.library to 51.12. Add Exec component normal/quick regressions for UFO-sized and uneven pools, all free orders, guards, fragmentation, shared-pool processes and Forbid nesting. A host harness compiles the production core with 64-bit types under ASan/UBSan at 16/32-byte alignment, including SMP concurrency and managed requests above 4 GiB. Native checks pass 508/508; host configurations pass 999/999, 1959/1959, 1011/1011 and 1971/1971. Original code rejects the uneven pools, and the four-process test reproduces unsynchronized list corruption before the locking change.
d8677b2 to
13263d3
Compare
|
I've reviewed the diff and the PR-head files, but haven't built or run them. These are the points I'd like looked at. Possible bugs
Locking
Smaller issues
Points 1 and 3 matter most, because they can produce the same kind of fatal alert this PR is meant to fix. |
Support uneven private-pool capacities without losing tail bytes or violating allocation alignment. Serialize non-SMP Allocate/Deallocate updates to prevent shared-pool corruption. Fixes UFO’s allocator alerts, with native and 64-bit sanitizer regressions.