Segfault the guest process when we encounter an unaligned atomic cmpxchg8b #1667
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.
Like #1429, but less wrong.
My prior PR misinterpreted certain paragraphs of Intel's processor documentation. Unaligned
lock cmpxchg8b
maintains atomicity regardless of alignment; this is not emulatable with ARM atomics alone. Properly emulating this requires a complicated locking setup that would almost certainly harm the performance of well-behaved x86 processes. In fact, I'm pretty sure the prior PR never worked - I've noticed this crash doesn't always occur when you launchmariadbd
; and it's entirely possible that I was just getting very lucky with heap allocations that just so happened to align whatever packed structs are there.So, instead, here's a new PR that triggers a segfault on unaligned atomic access. This will keep the user from losing any other work they might have been doing in other guest processes.