Uh oh!
There was an error while loading. Please reload this page.
Fix write barriers in NativeAOT - #74325
Conversation
Uh oh!
There was an error while loading. Please reload this page.
VSadov
commented
Aug 22, 2022
/azp run runtime-extra-platforms |
|
Azure Pipelines successfully started running 1 pipeline(s). |
I am running a scenario that used to fail ~50% with this fix and there are no failures after 10 iterations. This issue was definitely responsible for most failures. |
mangod9
commented
Aug 22, 2022
so looks like this fix is specific for NativeAOT, but vanilla crossgen2 arm64 failures need further investigation? |
VSadov
commented
Aug 22, 2022
Sadly there were still quite a few failures when i left it run overnight. About 30 core dumps out of 108 rebuilds. |
VSadov
commented
Aug 22, 2022
yes, this change would have no effect on CoreCLR |
AntonLapounov
commented
Aug 22, 2022
/backport to release/7.0-rc1 |
Started backporting to release/7.0-rc1: https://github.com/dotnet/runtime/actions/runs/2906418073 |
@AntonLapounov backporting to release/7.0-rc1 failed, the patch most likely resulted in conflicts: $ git am --3way --ignore-whitespace --keep-non-patch changes.patch
Patch format detection failed.
Error: The process '/usr/bin/git' failed with exit code 128Please backport manually! |
AntonLapounov
commented
Aug 22, 2022
Did you use Michal's repro or a different one? |
VSadov
commented
Aug 22, 2022
no, I just build a subset or coreclr in a loop, which uses the currently built crossgen2 to build other stuff. |
AntonLapounov
commented
Aug 23, 2022
/backport to release/7.0 |
Started backporting to release/7.0: https://github.com/dotnet/runtime/actions/runs/2914545828 |
For ARM64, use unsigned address comparisons in write barriers. In the
INSERT_CHECKED_WRITE_BARRIER_COREmacro use theccmpinstruction to optimize for the case when the destination belongs to the heap.For all architectures, make sure to exclude the
g_GCShadowEnd,g_ephemeral_high, andg_highest_addressupper bounds in the corresponding range checks. That is the current behavior on x64 except forg_GCShadowEnd.Fixes#72645.