Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

gh-110105: Fix MSVC ARM64 atomic add of 16 and 8-bit values #110116

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

colesbury
Copy link
Contributor

@colesbury colesbury commented Sep 29, 2023

MSVC versions starting with 19.33 (and fixed in 19.37) do not properly sign extend the value read from the atomic pointer in _InterlockedExchangeAdd8 and _InterlockedExchangeAdd16. Work around this issue by using a compare-exchange loop for all MSVC versions prior to 19.37 on ARM64.

MSVC versions starting with 19.33 (and fixed in 19.37) do not properly
sign extend the value read from the atomic pointer in
`_InterlockedExchangeAdd8` and `_InterlockedExchangeAdd16`. Work around
this issue by using a compare-exchange loop for all MSVC versions prior
to 19.37 on ARM64.
@colesbury
Copy link
Contributor Author

@zooba are you able to test this on your private ARM64 buildbot? I did some minimal testing by making sure the new code paths work on Windows x64, but I don't have access to a Windows arm64 machine. GHA unfortunately doesn't have Windows arm64 runners.

@colesbury
Copy link
Contributor Author

!buildbot ARM

@bedevere-bot
Copy link

🤖 New build scheduled with the buildbot fleet by @colesbury for commit 3f8c15d 🤖

The command will test the builders whose names match following regular expression: ARM

The builders matched are:

  • ARM64 macOS PR
  • ARM64 Windows Non-Debug PR
  • ARM Raspbian PR
  • ARM64 Windows PR

@zooba
Copy link
Member

zooba commented Sep 29, 2023

I strongly suspect it's going to be all the operations, not just add. Because the test crashes we never find out which other ones fail (it would be better to return an exit code than to assert in these tests).

And I'm afraid I won't have a chance to run tests until Monday.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants