From 82d4dbfc06a745b9404152b3281eb9559ca1f0d3 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Thu, 17 Oct 2024 12:21:32 -0600 Subject: [PATCH 1/3] Update dependencies from https://github.com/dotnet/arcade build 20241016.1 (#108947) Microsoft.DotNet.Arcade.Sdk , Microsoft.DotNet.Build.Tasks.Archives , Microsoft.DotNet.Build.Tasks.Feed , Microsoft.DotNet.Build.Tasks.Installers , Microsoft.DotNet.Build.Tasks.Packaging , Microsoft.DotNet.Build.Tasks.TargetFramework , Microsoft.DotNet.Build.Tasks.Templating , Microsoft.DotNet.Build.Tasks.Workloads , Microsoft.DotNet.CodeAnalysis , Microsoft.DotNet.GenAPI , Microsoft.DotNet.GenFacades , Microsoft.DotNet.Helix.Sdk , Microsoft.DotNet.PackageTesting , Microsoft.DotNet.RemoteExecutor , Microsoft.DotNet.SharedFramework.Sdk , Microsoft.DotNet.VersionTools.Tasks , Microsoft.DotNet.XUnitConsoleRunner , Microsoft.DotNet.XUnitExtensions From Version 8.0.0-beta.24508.1 -> To Version 8.0.0-beta.24516.1 Co-authored-by: dotnet-maestro[bot] --- NuGet.config | 7 -- eng/Version.Details.xml | 72 +++++++++---------- eng/Versions.props | 30 ++++---- .../steps/get-delegation-sas.yml | 11 ++- .../templates/steps/get-delegation-sas.yml | 11 ++- global.json | 6 +- 6 files changed, 74 insertions(+), 63 deletions(-) diff --git a/NuGet.config b/NuGet.config index d1b04861eaa70b..ea005c53c77b11 100644 --- a/NuGet.config +++ b/NuGet.config @@ -10,13 +10,6 @@ - - - - - - - diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index d5701f45f965e7..8b459fa1509561 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -111,9 +111,9 @@ - + https://github.com/dotnet/arcade - e5b13e054339e41d422212a0ecaf24fec20cb5a1 + f7fb1fec01b91be69e4dcc5290a0bff3f28e214f @@ -121,69 +121,69 @@ 73f0850939d96131c28cf6ea6ee5aacb4da0083a - + https://github.com/dotnet/arcade - e5b13e054339e41d422212a0ecaf24fec20cb5a1 + f7fb1fec01b91be69e4dcc5290a0bff3f28e214f - + https://github.com/dotnet/arcade - e5b13e054339e41d422212a0ecaf24fec20cb5a1 + f7fb1fec01b91be69e4dcc5290a0bff3f28e214f - + https://github.com/dotnet/arcade - e5b13e054339e41d422212a0ecaf24fec20cb5a1 + f7fb1fec01b91be69e4dcc5290a0bff3f28e214f - + https://github.com/dotnet/arcade - e5b13e054339e41d422212a0ecaf24fec20cb5a1 + f7fb1fec01b91be69e4dcc5290a0bff3f28e214f - + https://github.com/dotnet/arcade - e5b13e054339e41d422212a0ecaf24fec20cb5a1 + f7fb1fec01b91be69e4dcc5290a0bff3f28e214f - + https://github.com/dotnet/arcade - e5b13e054339e41d422212a0ecaf24fec20cb5a1 + f7fb1fec01b91be69e4dcc5290a0bff3f28e214f - + https://github.com/dotnet/arcade - e5b13e054339e41d422212a0ecaf24fec20cb5a1 + f7fb1fec01b91be69e4dcc5290a0bff3f28e214f - + https://github.com/dotnet/arcade - e5b13e054339e41d422212a0ecaf24fec20cb5a1 + f7fb1fec01b91be69e4dcc5290a0bff3f28e214f - + https://github.com/dotnet/arcade - e5b13e054339e41d422212a0ecaf24fec20cb5a1 + f7fb1fec01b91be69e4dcc5290a0bff3f28e214f - + https://github.com/dotnet/arcade - e5b13e054339e41d422212a0ecaf24fec20cb5a1 + f7fb1fec01b91be69e4dcc5290a0bff3f28e214f - + https://github.com/dotnet/arcade - e5b13e054339e41d422212a0ecaf24fec20cb5a1 + f7fb1fec01b91be69e4dcc5290a0bff3f28e214f - + https://github.com/dotnet/arcade - e5b13e054339e41d422212a0ecaf24fec20cb5a1 + f7fb1fec01b91be69e4dcc5290a0bff3f28e214f - + https://github.com/dotnet/arcade - e5b13e054339e41d422212a0ecaf24fec20cb5a1 + f7fb1fec01b91be69e4dcc5290a0bff3f28e214f - + https://github.com/dotnet/arcade - e5b13e054339e41d422212a0ecaf24fec20cb5a1 + f7fb1fec01b91be69e4dcc5290a0bff3f28e214f - + https://github.com/dotnet/arcade - e5b13e054339e41d422212a0ecaf24fec20cb5a1 + f7fb1fec01b91be69e4dcc5290a0bff3f28e214f - + https://github.com/dotnet/arcade - e5b13e054339e41d422212a0ecaf24fec20cb5a1 + f7fb1fec01b91be69e4dcc5290a0bff3f28e214f https://github.com/dotnet/runtime-assets @@ -334,9 +334,9 @@ https://github.com/dotnet/xharness 2195e37696de37d2c2b0f83d73f49c96d9b584de - + https://github.com/dotnet/arcade - e5b13e054339e41d422212a0ecaf24fec20cb5a1 + f7fb1fec01b91be69e4dcc5290a0bff3f28e214f https://dev.azure.com/dnceng/internal/_git/dotnet-optimization diff --git a/eng/Versions.props b/eng/Versions.props index 5faf5f839ef762..9557205b78c927 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -87,21 +87,21 @@ 8.0.100 - 8.0.0-beta.24508.1 - 8.0.0-beta.24508.1 - 8.0.0-beta.24508.1 - 8.0.0-beta.24508.1 - 8.0.0-beta.24508.1 - 2.5.1-beta.24508.1 - 8.0.0-beta.24508.1 - 8.0.0-beta.24508.1 - 8.0.0-beta.24508.1 - 8.0.0-beta.24508.1 - 8.0.0-beta.24508.1 - 8.0.0-beta.24508.1 - 8.0.0-beta.24508.1 - 8.0.0-beta.24508.1 - 8.0.0-beta.24508.1 + 8.0.0-beta.24516.1 + 8.0.0-beta.24516.1 + 8.0.0-beta.24516.1 + 8.0.0-beta.24516.1 + 8.0.0-beta.24516.1 + 2.5.1-beta.24516.1 + 8.0.0-beta.24516.1 + 8.0.0-beta.24516.1 + 8.0.0-beta.24516.1 + 8.0.0-beta.24516.1 + 8.0.0-beta.24516.1 + 8.0.0-beta.24516.1 + 8.0.0-beta.24516.1 + 8.0.0-beta.24516.1 + 8.0.0-beta.24516.1 6.0.0-preview.1.102 diff --git a/eng/common/templates-official/steps/get-delegation-sas.yml b/eng/common/templates-official/steps/get-delegation-sas.yml index c0e8f91317f077..c690cc0a070cdd 100644 --- a/eng/common/templates-official/steps/get-delegation-sas.yml +++ b/eng/common/templates-official/steps/get-delegation-sas.yml @@ -28,7 +28,16 @@ steps: # Calculate the expiration of the SAS token and convert to UTC $expiry = (Get-Date).AddHours(${{ parameters.expiryInHours }}).ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ssZ") - $sas = az storage container generate-sas --account-name ${{ parameters.storageAccount }} --name ${{ parameters.container }} --permissions ${{ parameters.permissions }} --expiry $expiry --auth-mode login --as-user -o tsv + # Temporarily work around a helix issue where SAS tokens with / in them will cause incorrect downloads + # of correlation payloads. https://github.com/dotnet/dnceng/issues/3484 + $sas = "" + do { + $sas = az storage container generate-sas --account-name ${{ parameters.storageAccount }} --name ${{ parameters.container }} --permissions ${{ parameters.permissions }} --expiry $expiry --auth-mode login --as-user -o tsv + if ($LASTEXITCODE -ne 0) { + Write-Error "Failed to generate SAS token." + exit 1 + } + } while($sas.IndexOf('/') -ne -1) if ($LASTEXITCODE -ne 0) { Write-Error "Failed to generate SAS token." diff --git a/eng/common/templates/steps/get-delegation-sas.yml b/eng/common/templates/steps/get-delegation-sas.yml index c0e8f91317f077..c690cc0a070cdd 100644 --- a/eng/common/templates/steps/get-delegation-sas.yml +++ b/eng/common/templates/steps/get-delegation-sas.yml @@ -28,7 +28,16 @@ steps: # Calculate the expiration of the SAS token and convert to UTC $expiry = (Get-Date).AddHours(${{ parameters.expiryInHours }}).ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ssZ") - $sas = az storage container generate-sas --account-name ${{ parameters.storageAccount }} --name ${{ parameters.container }} --permissions ${{ parameters.permissions }} --expiry $expiry --auth-mode login --as-user -o tsv + # Temporarily work around a helix issue where SAS tokens with / in them will cause incorrect downloads + # of correlation payloads. https://github.com/dotnet/dnceng/issues/3484 + $sas = "" + do { + $sas = az storage container generate-sas --account-name ${{ parameters.storageAccount }} --name ${{ parameters.container }} --permissions ${{ parameters.permissions }} --expiry $expiry --auth-mode login --as-user -o tsv + if ($LASTEXITCODE -ne 0) { + Write-Error "Failed to generate SAS token." + exit 1 + } + } while($sas.IndexOf('/') -ne -1) if ($LASTEXITCODE -ne 0) { Write-Error "Failed to generate SAS token." diff --git a/global.json b/global.json index a2a0581ed84a93..4aea1744d82984 100644 --- a/global.json +++ b/global.json @@ -8,9 +8,9 @@ "dotnet": "8.0.110" }, "msbuild-sdks": { - "Microsoft.DotNet.Arcade.Sdk": "8.0.0-beta.24508.1", - "Microsoft.DotNet.Helix.Sdk": "8.0.0-beta.24508.1", - "Microsoft.DotNet.SharedFramework.Sdk": "8.0.0-beta.24508.1", + "Microsoft.DotNet.Arcade.Sdk": "8.0.0-beta.24516.1", + "Microsoft.DotNet.Helix.Sdk": "8.0.0-beta.24516.1", + "Microsoft.DotNet.SharedFramework.Sdk": "8.0.0-beta.24516.1", "Microsoft.Build.NoTargets": "3.7.0", "Microsoft.Build.Traversal": "3.4.0", "Microsoft.NET.Sdk.IL": "8.0.0-rc.1.23406.6" From c1ae962610643a3c17bcf9621017ac42ff7703f7 Mon Sep 17 00:00:00 2001 From: vseanreesermsft <78103370+vseanreesermsft@users.noreply.github.com> Date: Tue, 5 Nov 2024 13:20:27 -0800 Subject: [PATCH 2/3] Update branding to 8.0.12 (#109562) --- eng/Versions.props | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/eng/Versions.props b/eng/Versions.props index 9557205b78c927..d06793a6fa0dfe 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -1,11 +1,11 @@ - 8.0.11 + 8.0.12 8 0 - 11 + 12 8.0.100 7.0.20 6.0.$([MSBuild]::Add($(PatchVersion),25)) From 69f5d6439a6f06fdcbc92ab8dc79bbf470729b00 Mon Sep 17 00:00:00 2001 From: Vlad Brezae Date: Mon, 11 Nov 2024 13:09:19 +0200 Subject: [PATCH 3/3] [mono][sgen] Add separate card mark function to be used with debug When marking cards for a non-array object or a an element vt in an object, it is enough to mark a card for any address within that object/vt because they are always fully scanned. Cardtable consistency checks are not accounting for this detail and it is difficult to have it implemented. Instead, when having such debug flags enabled, we use an explicit approach where every single card is being marked. --- src/mono/mono/sgen/sgen-cardtable.c | 32 +++++++++++++++++++++++++++-- src/mono/mono/sgen/sgen-cardtable.h | 2 +- src/mono/mono/sgen/sgen-gc.c | 2 +- 3 files changed, 32 insertions(+), 4 deletions(-) diff --git a/src/mono/mono/sgen/sgen-cardtable.c b/src/mono/mono/sgen/sgen-cardtable.c index 6a662fb605019f..e344ec15fe228f 100644 --- a/src/mono/mono/sgen/sgen-cardtable.c +++ b/src/mono/mono/sgen/sgen-cardtable.c @@ -165,6 +165,31 @@ sgen_card_table_wbarrier_range_copy (gpointer _dest, gconstpointer _src, int siz } } +// Marks more cards so that it works with remset consistency debug checks +static void +sgen_card_table_wbarrier_range_copy_debug (gpointer _dest, gconstpointer _src, int size) +{ + GCObject **dest = (GCObject **)_dest; + GCObject **src = (GCObject **)_src; + + size_t nursery_bits = sgen_nursery_bits; + char *start = sgen_nursery_start; + G_GNUC_UNUSED char *end = sgen_nursery_end; + + while (size) { + GCObject *value = *src; + *dest = value; + if (SGEN_PTR_IN_NURSERY (value, nursery_bits, start, end) || sgen_concurrent_collection_in_progress) { + volatile guint8 *card_address = (volatile guint8 *)sgen_card_table_get_card_address ((mword)dest); + *card_address = 1; + sgen_dummy_use (value); + } + ++src; + ++dest; + size -= SIZEOF_VOID_P; + } +} + MONO_RESTORE_WARNING #ifdef SGEN_HAVE_OVERLAPPING_CARDS @@ -606,7 +631,7 @@ sgen_cardtable_scan_object (GCObject *obj, mword block_obj_size, guint8 *cards, } void -sgen_card_table_init (SgenRememberedSet *remset) +sgen_card_table_init (SgenRememberedSet *remset, gboolean consistency_checks) { sgen_cardtable = (guint8 *)sgen_alloc_os_memory (CARD_COUNT_IN_BYTES, (SgenAllocFlags)(SGEN_ALLOC_INTERNAL | SGEN_ALLOC_ACTIVATE), "card table", MONO_MEM_ACCOUNT_SGEN_CARD_TABLE); @@ -637,7 +662,10 @@ sgen_card_table_init (SgenRememberedSet *remset) remset->find_address = sgen_card_table_find_address; remset->find_address_with_cards = sgen_card_table_find_address_with_cards; - remset->wbarrier_range_copy = sgen_card_table_wbarrier_range_copy; + if (consistency_checks) + remset->wbarrier_range_copy = sgen_card_table_wbarrier_range_copy_debug; + else + remset->wbarrier_range_copy = sgen_card_table_wbarrier_range_copy; need_mod_union = sgen_get_major_collector ()->is_concurrent; } diff --git a/src/mono/mono/sgen/sgen-cardtable.h b/src/mono/mono/sgen/sgen-cardtable.h index 1ea3055fce085d..e07bc2cf5c0348 100644 --- a/src/mono/mono/sgen/sgen-cardtable.h +++ b/src/mono/mono/sgen/sgen-cardtable.h @@ -30,7 +30,7 @@ void sgen_card_table_preclean_mod_union (guint8 *cards, guint8 *cards_preclean, guint8* sgen_get_card_table_configuration (int *shift_bits, gpointer *mask); guint8* sgen_get_target_card_table_configuration (int *shift_bits, target_mgreg_t *mask); -void sgen_card_table_init (SgenRememberedSet *remset); +void sgen_card_table_init (SgenRememberedSet *remset, gboolean consistency_checks); /*How many bytes a single card covers*/ #define CARD_BITS 9 diff --git a/src/mono/mono/sgen/sgen-gc.c b/src/mono/mono/sgen/sgen-gc.c index 5024faa35173cb..5338b9dc5df0a1 100644 --- a/src/mono/mono/sgen/sgen-gc.c +++ b/src/mono/mono/sgen/sgen-gc.c @@ -3895,7 +3895,7 @@ sgen_gc_init (void) memset (&remset, 0, sizeof (remset)); - sgen_card_table_init (&remset); + sgen_card_table_init (&remset, remset_consistency_checks); sgen_register_root (NULL, 0, sgen_make_user_root_descriptor (sgen_mark_normal_gc_handles), ROOT_TYPE_NORMAL, MONO_ROOT_SOURCE_GC_HANDLE, GINT_TO_POINTER (ROOT_TYPE_NORMAL), "GC Handles (SGen, Normal)");