From f5bc37b62e1298d35e920954b592dfa1135ce058 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 14 Mar 2025 18:10:48 +0100 Subject: [PATCH 01/52] run stress tests nightly against staging branches (#113476) Backport of #113432 to release/9.0-staging Contributes to #113372. --- eng/pipelines/libraries/stress/http.yml | 4 ++-- eng/pipelines/libraries/stress/ssl.yml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/eng/pipelines/libraries/stress/http.yml b/eng/pipelines/libraries/stress/http.yml index 3290eda51ae02f..9fb0de31c0c205 100644 --- a/eng/pipelines/libraries/stress/http.yml +++ b/eng/pipelines/libraries/stress/http.yml @@ -8,11 +8,11 @@ pr: schedules: - cron: "0 13 * * *" # 1PM UTC => 5 AM PST displayName: HttpStress nightly run + always: true branches: include: - main - - release/8.0 - - release/9.0 + - release/*-staging variables: - template: ../variables.yml diff --git a/eng/pipelines/libraries/stress/ssl.yml b/eng/pipelines/libraries/stress/ssl.yml index 230a2bef377304..ed1306990e294b 100644 --- a/eng/pipelines/libraries/stress/ssl.yml +++ b/eng/pipelines/libraries/stress/ssl.yml @@ -8,11 +8,11 @@ pr: schedules: - cron: "0 13 * * *" # 1PM UTC => 5 AM PST displayName: SslStress nightly run + always: true branches: include: - main - - release/8.0 - - release/9.0 + - release/*-staging variables: - template: ../variables.yml From ad3b3400ccf3291c7e9674576d5843325858154d Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 17 Mar 2025 12:09:29 +0100 Subject: [PATCH 02/52] [release/9.0] [browser][http] mute JS exceptions about network errors + HEAD verb (#113261) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: pavelsavara Co-authored-by: campersau Co-authored-by: Alexander Köplinger --- .../System/Net/Http/ResponseStreamTest.cs | 95 ++++++++++++++++++- .../NetCoreServer/Handlers/EchoHandler.cs | 63 ++++++++---- src/mono/browser/runtime/http.ts | 40 ++++---- 3 files changed, 162 insertions(+), 36 deletions(-) diff --git a/src/libraries/Common/tests/System/Net/Http/ResponseStreamTest.cs b/src/libraries/Common/tests/System/Net/Http/ResponseStreamTest.cs index 7f58fd5b2424e8..61958c04a26b0c 100644 --- a/src/libraries/Common/tests/System/Net/Http/ResponseStreamTest.cs +++ b/src/libraries/Common/tests/System/Net/Http/ResponseStreamTest.cs @@ -230,6 +230,99 @@ await client.GetAsync(remoteServer.EchoUri, HttpCompletionOption.ResponseHeaders #if NET + public static IEnumerable HttpMethods => new object[][] + { + new [] { HttpMethod.Get }, + new [] { HttpMethod.Head }, + new [] { HttpMethod.Post }, + new [] { HttpMethod.Put }, + new [] { HttpMethod.Delete }, + new [] { HttpMethod.Options }, + new [] { HttpMethod.Patch }, + }; + + public static IEnumerable HttpMethodsAndAbort => new object[][] + { + new object[] { HttpMethod.Get, "abortBeforeHeaders" }, + new object[] { HttpMethod.Head , "abortBeforeHeaders"}, + new object[] { HttpMethod.Post , "abortBeforeHeaders"}, + new object[] { HttpMethod.Put , "abortBeforeHeaders"}, + new object[] { HttpMethod.Delete , "abortBeforeHeaders"}, + new object[] { HttpMethod.Options , "abortBeforeHeaders"}, + new object[] { HttpMethod.Patch , "abortBeforeHeaders"}, + + new object[] { HttpMethod.Get, "abortAfterHeaders" }, + new object[] { HttpMethod.Post , "abortAfterHeaders"}, + new object[] { HttpMethod.Put , "abortAfterHeaders"}, + new object[] { HttpMethod.Delete , "abortAfterHeaders"}, + new object[] { HttpMethod.Options , "abortAfterHeaders"}, + new object[] { HttpMethod.Patch , "abortAfterHeaders"}, + + new object[] { HttpMethod.Get, "abortDuringBody" }, + new object[] { HttpMethod.Post , "abortDuringBody"}, + new object[] { HttpMethod.Put , "abortDuringBody"}, + new object[] { HttpMethod.Delete , "abortDuringBody"}, + new object[] { HttpMethod.Options , "abortDuringBody"}, + new object[] { HttpMethod.Patch , "abortDuringBody"}, + + }; + + [MemberData(nameof(HttpMethods))] + [ConditionalTheory(typeof(PlatformDetection), nameof(PlatformDetection.IsBrowser))] + public async Task BrowserHttpHandler_StreamingResponse(HttpMethod method) + { + var WebAssemblyEnableStreamingResponseKey = new HttpRequestOptionsKey("WebAssemblyEnableStreamingResponse"); + + var req = new HttpRequestMessage(method, Configuration.Http.RemoteHttp11Server.BaseUri + "echo.ashx"); + req.Options.Set(WebAssemblyEnableStreamingResponseKey, true); + + if (method == HttpMethod.Post) + { + req.Content = new StringContent("hello world"); + } + + using (HttpClient client = CreateHttpClientForRemoteServer(Configuration.Http.RemoteHttp11Server)) + // we need to switch off Response buffering of default ResponseContentRead option + using (HttpResponseMessage response = await client.SendAsync(req, HttpCompletionOption.ResponseHeadersRead)) + { + using var content = response.Content; + Assert.Equal(HttpStatusCode.OK, response.StatusCode); + Assert.Equal(typeof(StreamContent), content.GetType()); + Assert.NotEqual(0, content.Headers.ContentLength); + if (method != HttpMethod.Head) + { + var data = await content.ReadAsByteArrayAsync(); + Assert.NotEqual(0, data.Length); + } + } + } + + [MemberData(nameof(HttpMethodsAndAbort))] + [ConditionalTheory(typeof(PlatformDetection), nameof(PlatformDetection.IsBrowser))] + public async Task BrowserHttpHandler_StreamingResponseAbort(HttpMethod method, string abort) + { + var WebAssemblyEnableStreamingResponseKey = new HttpRequestOptionsKey("WebAssemblyEnableStreamingResponse"); + + var req = new HttpRequestMessage(method, Configuration.Http.RemoteHttp11Server.BaseUri + "echo.ashx?" + abort + "=true"); + req.Options.Set(WebAssemblyEnableStreamingResponseKey, true); + + if (method == HttpMethod.Post || method == HttpMethod.Put || method == HttpMethod.Patch) + { + req.Content = new StringContent("hello world"); + } + + using HttpClient client = CreateHttpClientForRemoteServer(Configuration.Http.RemoteHttp11Server); + if (abort == "abortDuringBody") + { + using var res = await client.SendAsync(req, HttpCompletionOption.ResponseHeadersRead); + await Assert.ThrowsAsync(() => res.Content.ReadAsByteArrayAsync()); + } + else + { + await Assert.ThrowsAsync(() => client.SendAsync(req, HttpCompletionOption.ResponseHeadersRead)); + } + } + [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsChromium))] public async Task BrowserHttpHandler_Streaming() { @@ -486,7 +579,7 @@ public async Task BrowserHttpHandler_StreamingRequest_Http1Fails() [OuterLoop] [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsChromium))] - public async Task BrowserHttpHandler_StreamingResponse() + public async Task BrowserHttpHandler_StreamingResponseLarge() { var WebAssemblyEnableStreamingResponseKey = new HttpRequestOptionsKey("WebAssemblyEnableStreamingResponse"); diff --git a/src/libraries/Common/tests/System/Net/Prerequisites/NetCoreServer/Handlers/EchoHandler.cs b/src/libraries/Common/tests/System/Net/Prerequisites/NetCoreServer/Handlers/EchoHandler.cs index 667e99c29dc398..f9f8b0c24f2e01 100644 --- a/src/libraries/Common/tests/System/Net/Prerequisites/NetCoreServer/Handlers/EchoHandler.cs +++ b/src/libraries/Common/tests/System/Net/Prerequisites/NetCoreServer/Handlers/EchoHandler.cs @@ -22,26 +22,22 @@ public static async Task InvokeAsync(HttpContext context) return; } - // Add original request method verb as a custom response header. - context.Response.Headers["X-HttpRequest-Method"] = context.Request.Method; - - // Echo back JSON encoded payload. - RequestInformation info = await RequestInformation.CreateAsync(context.Request); - string echoJson = info.SerializeToJson(); - - byte[] bytes = Encoding.UTF8.GetBytes(echoJson); + var qs = context.Request.QueryString.HasValue ? context.Request.QueryString.Value : ""; var delay = 0; - if (context.Request.QueryString.HasValue) + if (qs.Contains("delay1sec")) { - if (context.Request.QueryString.Value.Contains("delay1sec")) - { - delay = 1000; - } - else if (context.Request.QueryString.Value.Contains("delay10sec")) - { - delay = 10000; - } + delay = 1000; + } + else if (qs.Contains("delay10sec")) + { + delay = 10000; + } + + if (qs.Contains("abortBeforeHeaders")) + { + context.Abort(); + return; } if (delay > 0) @@ -49,6 +45,14 @@ public static async Task InvokeAsync(HttpContext context) context.Features.Get().DisableBuffering(); } + // Echo back JSON encoded payload. + RequestInformation info = await RequestInformation.CreateAsync(context.Request); + string echoJson = info.SerializeToJson(); + byte[] bytes = Encoding.UTF8.GetBytes(echoJson); + + // Add original request method verb as a custom response header. + context.Response.Headers["X-HttpRequest-Method"] = context.Request.Method; + // Compute MD5 hash so that clients can verify the received data. using (MD5 md5 = MD5.Create()) { @@ -60,11 +64,32 @@ public static async Task InvokeAsync(HttpContext context) context.Response.ContentLength = bytes.Length; } - if (delay > 0) + await context.Response.StartAsync(CancellationToken.None); + + if (qs.Contains("abortAfterHeaders")) + { + await Task.Delay(10); + context.Abort(); + return; + } + + if (HttpMethods.IsHead(context.Request.Method)) + { + return; + } + + if (delay > 0 || qs.Contains("abortDuringBody")) { - await context.Response.StartAsync(CancellationToken.None); await context.Response.Body.WriteAsync(bytes, 0, 10); await context.Response.Body.FlushAsync(); + if (qs.Contains("abortDuringBody")) + { + await context.Response.Body.FlushAsync(); + await Task.Delay(10); + context.Abort(); + return; + } + await Task.Delay(delay); await context.Response.Body.WriteAsync(bytes, 10, bytes.Length-10); await context.Response.Body.FlushAsync(); diff --git a/src/mono/browser/runtime/http.ts b/src/mono/browser/runtime/http.ts index 743972efd8df71..74f86f88791c4d 100644 --- a/src/mono/browser/runtime/http.ts +++ b/src/mono/browser/runtime/http.ts @@ -4,11 +4,12 @@ import BuildConfiguration from "consts:configuration"; import { wrap_as_cancelable_promise } from "./cancelable-promise"; -import { ENVIRONMENT_IS_NODE, Module, loaderHelpers, mono_assert } from "./globals"; +import { ENVIRONMENT_IS_NODE, loaderHelpers, mono_assert } from "./globals"; import { assert_js_interop } from "./invoke-js"; import { MemoryViewType, Span } from "./marshal"; import type { VoidPtr } from "./types/emscripten"; import { ControllablePromise } from "./types/internal"; +import { mono_log_debug } from "./logging"; function verifyEnvironment () { @@ -72,12 +73,11 @@ export function http_wasm_create_controller (): HttpController { return controller; } -function handle_abort_error (promise:Promise) { +function mute_unhandledrejection (promise:Promise) { promise.catch((err) => { if (err && err !== "AbortError" && err.name !== "AbortError" ) { - Module.err("Unexpected error: " + err); + mono_log_debug("http muted: " + err); } - // otherwise, it's expected }); } @@ -86,15 +86,15 @@ export function http_wasm_abort (controller: HttpController): void { try { if (!controller.isAborted) { if (controller.streamWriter) { - handle_abort_error(controller.streamWriter.abort()); + mute_unhandledrejection(controller.streamWriter.abort()); controller.isAborted = true; } if (controller.streamReader) { - handle_abort_error(controller.streamReader.cancel()); + mute_unhandledrejection(controller.streamReader.cancel()); controller.isAborted = true; } } - if (!controller.isAborted) { + if (!controller.isAborted && !controller.abortController.signal.aborted) { controller.abortController.abort("AbortError"); } } catch (err) { @@ -138,8 +138,8 @@ export function http_wasm_fetch_stream (controller: HttpController, url: string, if (BuildConfiguration === "Debug") commonAsserts(controller); const transformStream = new TransformStream(); controller.streamWriter = transformStream.writable.getWriter(); - handle_abort_error(controller.streamWriter.closed); - handle_abort_error(controller.streamWriter.ready); + mute_unhandledrejection(controller.streamWriter.closed); + mute_unhandledrejection(controller.streamWriter.ready); const fetch_promise = http_wasm_fetch(controller, url, header_names, header_values, option_names, option_values, transformStream.readable); return fetch_promise; } @@ -177,16 +177,18 @@ export function http_wasm_fetch (controller: HttpController, url: string, header } // make the fetch cancellable controller.responsePromise = wrap_as_cancelable_promise(() => { - return loaderHelpers.fetch_like(url, options); + return loaderHelpers.fetch_like(url, options).then((res: Response) => { + controller.response = res; + return null;// drop the response from the promise chain + }); }); // avoid processing headers if the fetch is canceled - controller.responsePromise.then((res: Response) => { - controller.response = res; + controller.responsePromise.then(() => { + mono_assert(controller.response, "expected response"); controller.responseHeaderNames = []; controller.responseHeaderValues = []; - if (res.headers && (res.headers).entries) { - const entries: Iterable = (res.headers).entries(); - + if (controller.response.headers && (controller.response.headers).entries) { + const entries: Iterable = (controller.response.headers).entries(); for (const pair of entries) { controller.responseHeaderNames.push(pair[0]); controller.responseHeaderValues.push(pair[1]); @@ -250,9 +252,15 @@ export function http_wasm_get_streamed_response_bytes (controller: HttpControlle // the bufferPtr is pinned by the caller const view = new Span(bufferPtr, bufferLength, MemoryViewType.Byte); return wrap_as_cancelable_promise(async () => { + await controller.responsePromise; mono_assert(controller.response, "expected response"); + if (!controller.response.body) { + // in FF when the verb is HEAD, the body is null + return 0; + } if (!controller.streamReader) { - controller.streamReader = controller.response.body!.getReader(); + controller.streamReader = controller.response.body.getReader(); + mute_unhandledrejection(controller.streamReader.closed); } if (!controller.currentStreamReaderChunk || controller.currentBufferOffset === undefined) { controller.currentStreamReaderChunk = await controller.streamReader.read(); From 4d66ebb8721865dba2d497fd179662dab2a9f87a Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 18 Mar 2025 13:07:39 +0100 Subject: [PATCH 03/52] [release/9.0-staging] Fix double dispose of GCHandle in BrowserWebSocket (#113541) Co-authored-by: Filip Navara Co-authored-by: pavelsavara --- .../WebSockets/BrowserWebSockets/BrowserWebSocket.cs | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/src/libraries/System.Net.WebSockets.Client/src/System/Net/WebSockets/BrowserWebSockets/BrowserWebSocket.cs b/src/libraries/System.Net.WebSockets.Client/src/System/Net/WebSockets/BrowserWebSockets/BrowserWebSocket.cs index d21e80ba41fee5..826c3beda3e3dd 100644 --- a/src/libraries/System.Net.WebSockets.Client/src/System/Net/WebSockets/BrowserWebSockets/BrowserWebSocket.cs +++ b/src/libraries/System.Net.WebSockets.Client/src/System/Net/WebSockets/BrowserWebSockets/BrowserWebSocket.cs @@ -399,7 +399,7 @@ private async Task SendAsyncCore(ArraySegment buffer, WebSocketMessageType if (sendTask != null) // this is optimization for single-threaded build, see resolvedPromise() in web-socket.ts. Null means synchronously resolved. { - await CancellationHelper(sendTask, cancellationToken, previousState, pinBuffer).ConfigureAwait(false); + await CancellationHelper(sendTask, cancellationToken, previousState).ConfigureAwait(false); } } catch (JSException ex) @@ -442,7 +442,7 @@ private async Task ReceiveAsyncCore(ArraySegment b if (receiveTask != null) // this is optimization for single-threaded build, see resolvedPromise() in web-socket.ts. Null means synchronously resolved. { - await CancellationHelper(receiveTask, cancellationToken, previousState, pinBuffer).ConfigureAwait(false); + await CancellationHelper(receiveTask, cancellationToken, previousState).ConfigureAwait(false); } return ConvertResponse(); @@ -550,13 +550,12 @@ private async Task CloseAsyncCore(WebSocketCloseStatus closeStatus, string? stat } } - private async Task CancellationHelper(Task promise, CancellationToken cancellationToken, WebSocketState previousState, IDisposable? disposable = null) + private async Task CancellationHelper(Task promise, CancellationToken cancellationToken, WebSocketState previousState) { try { if (promise.IsCompletedSuccessfully) { - disposable?.Dispose(); return; } if (promise.IsCompleted) @@ -602,10 +601,6 @@ private async Task CancellationHelper(Task promise, CancellationToken cancellati throw new WebSocketException(WebSocketError.NativeError, ex); } } - finally - { - disposable?.Dispose(); - } } // needs to be called with locked _lockObject From 54ba56fd353ad5b24f764404c19120aca88c3a96 Mon Sep 17 00:00:00 2001 From: Anton Firszov Date: Tue, 18 Mar 2025 14:01:27 +0100 Subject: [PATCH 04/52] [release/9.0-staging] [HttpStress] Fix Linux HttpStress build (#113617) Backport of #111664 to release/9.0-staging Fixes #111660. --- eng/pipelines/libraries/stress/http.yml | 2 +- .../tests/StressTests/HttpStress/Dockerfile | 7 ++++--- .../tests/StressTests/HttpStress/docker-compose.yml | 2 +- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/eng/pipelines/libraries/stress/http.yml b/eng/pipelines/libraries/stress/http.yml index 9fb0de31c0c205..fdfd004b96eb3e 100644 --- a/eng/pipelines/libraries/stress/http.yml +++ b/eng/pipelines/libraries/stress/http.yml @@ -37,7 +37,7 @@ extends: DUMPS_SHARE_MOUNT_ROOT: "/dumps-share" pool: name: $(DncEngPublicBuildPool) - demands: ImageOverride -equals 1es-ubuntu-1804-open + demands: ImageOverride -equals Build.Ubuntu.2204.Amd64.Open steps: - checkout: self diff --git a/src/libraries/System.Net.Http/tests/StressTests/HttpStress/Dockerfile b/src/libraries/System.Net.Http/tests/StressTests/HttpStress/Dockerfile index 8368cc8f7e4784..90f846b28f8875 100644 --- a/src/libraries/System.Net.Http/tests/StressTests/HttpStress/Dockerfile +++ b/src/libraries/System.Net.Http/tests/StressTests/HttpStress/Dockerfile @@ -10,7 +10,8 @@ RUN apt-get update -y && \ RUN git clone --depth 1 --single-branch --branch v2.3.5 --recursive https://github.com/microsoft/msquic RUN cd msquic/ && \ mkdir build && \ - cmake -B build -DCMAKE_BUILD_TYPE=Debug -DQUIC_ENABLE_LOGGING=false -DQUIC_USE_SYSTEM_LIBCRYPTO=true -DQUIC_BUILD_TOOLS=off -DQUIC_BUILD_TEST=off -DQUIC_BUILD_PERF=off -DQUIC_TLS=openssl3 -DQUIC_ENABLE_SANITIZERS=on && \ + cmake -B build -DCMAKE_BUILD_TYPE=Debug -DQUIC_ENABLE_LOGGING=false -DQUIC_USE_SYSTEM_LIBCRYPTO=true -DQUIC_BUILD_TOOLS=off -DQUIC_BUILD_TEST=off -DQUIC_BUILD_PERF=off -DQUIC_TLS=openssl3 && \ + # -DQUIC_ENABLE_SANITIZERS=on && \ cd build && \ cmake --build . --config Debug RUN cd msquic/build/bin/Debug && \ @@ -41,8 +42,8 @@ ENV DOTNET_DbgMiniDumpName="/dumps-share/coredump.%p" EXPOSE 5001 # configure adress sanitizer -ENV ASAN_OPTIONS='detect_leaks=0' -ENV LD_PRELOAD=/usr/lib/gcc/x86_64-linux-gnu/12/libasan.so +# ENV ASAN_OPTIONS='detect_leaks=0' +# ENV LD_PRELOAD=/usr/lib/gcc/x86_64-linux-gnu/12/libasan.so ENV VERSION=$VERSION ENV CONFIGURATION=$CONFIGURATION diff --git a/src/libraries/System.Net.Http/tests/StressTests/HttpStress/docker-compose.yml b/src/libraries/System.Net.Http/tests/StressTests/HttpStress/docker-compose.yml index c22be392756f26..f0f06320076aa9 100644 --- a/src/libraries/System.Net.Http/tests/StressTests/HttpStress/docker-compose.yml +++ b/src/libraries/System.Net.Http/tests/StressTests/HttpStress/docker-compose.yml @@ -1,4 +1,4 @@ -version: '3' +version: '3' # Although the version attribute is obsolete and should be ignored, it's seemingly not the case on Build.Ubuntu.2204.Amd64.Open services: client: build: From 92262983b92920487bc819dcc4d6948b4e1e3b24 Mon Sep 17 00:00:00 2001 From: Andrew Au Date: Tue, 18 Mar 2025 11:55:17 -0700 Subject: [PATCH 05/52] Use minipal_getcpufeatures to detect for AVX (#113032) (#113489) --- src/coreclr/gc/CMakeLists.txt | 4 ++ src/coreclr/gc/sample/CMakeLists.txt | 1 + src/coreclr/gc/vxsort/isa_detection.cpp | 81 ++----------------------- 3 files changed, 10 insertions(+), 76 deletions(-) diff --git a/src/coreclr/gc/CMakeLists.txt b/src/coreclr/gc/CMakeLists.txt index 89937554c04177..4ffe829dac687e 100644 --- a/src/coreclr/gc/CMakeLists.txt +++ b/src/coreclr/gc/CMakeLists.txt @@ -93,6 +93,10 @@ if(CLR_CMAKE_TARGET_ARCH_AMD64) list(APPEND GC_LINK_LIBRARIES gc_vxsort ) + list(APPEND GC_SOURCES + ${CLR_SRC_NATIVE_DIR}/minipal/cpufeatures.c + ) + include(${CLR_SRC_NATIVE_DIR}/minipal/configure.cmake) endif(CLR_CMAKE_TARGET_ARCH_AMD64) diff --git a/src/coreclr/gc/sample/CMakeLists.txt b/src/coreclr/gc/sample/CMakeLists.txt index 1f297fd2313329..be894bf5d81be9 100644 --- a/src/coreclr/gc/sample/CMakeLists.txt +++ b/src/coreclr/gc/sample/CMakeLists.txt @@ -36,6 +36,7 @@ if (CLR_CMAKE_TARGET_ARCH_AMD64 AND CLR_CMAKE_TARGET_WIN32) ../vxsort/smallsort/bitonic_sort.AVX512.int64_t.generated.cpp ../vxsort/smallsort/bitonic_sort.AVX512.int32_t.generated.cpp ../vxsort/smallsort/avx2_load_mask_tables.cpp + ${CLR_SRC_NATIVE_DIR}/minipal/cpufeatures.c ) endif (CLR_CMAKE_TARGET_ARCH_AMD64 AND CLR_CMAKE_TARGET_WIN32) diff --git a/src/coreclr/gc/vxsort/isa_detection.cpp b/src/coreclr/gc/vxsort/isa_detection.cpp index 93c7288663c42f..b069c8be9bee04 100644 --- a/src/coreclr/gc/vxsort/isa_detection.cpp +++ b/src/coreclr/gc/vxsort/isa_detection.cpp @@ -2,14 +2,10 @@ // The .NET Foundation licenses this file to you under the MIT license. #include "common.h" - -#ifdef TARGET_WINDOWS -#include -#include -#endif - #include "do_vxsort.h" +#include + enum class SupportedISA { None = 0, @@ -17,77 +13,12 @@ enum class SupportedISA AVX512F = 1 << (int)InstructionSet::AVX512F }; -#if defined(TARGET_AMD64) && defined(TARGET_WINDOWS) - -SupportedISA DetermineSupportedISA() -{ - // register definitions to make the following code more readable - enum reg - { - EAX = 0, - EBX = 1, - ECX = 2, - EDX = 3, - COUNT = 4 - }; - - // bit definitions to make code more readable - enum bits - { - OCXSAVE = 1<<27, - AVX = 1<<28, - AVX2 = 1<< 5, - AVX512F = 1<<16, - AVX512DQ = 1<<17, - }; - int reg[COUNT]; - - __cpuid(reg, 0); - if (reg[EAX] < 7) - return SupportedISA::None; - - __cpuid(reg, 1); - - // both AVX and OCXSAVE feature flags must be enabled - if ((reg[ECX] & (OCXSAVE|AVX)) != (OCXSAVE | AVX)) - return SupportedISA::None; - - // get xcr0 register - DWORD64 xcr0 = _xgetbv(0); - - // get OS XState info - DWORD64 FeatureMask = GetEnabledXStateFeatures(); - - // get processor extended feature flag info - __cpuidex(reg, 7, 0); - - // check if all of AVX2, AVX512F and AVX512DQ are supported by both processor and OS - if ((reg[EBX] & (AVX2 | AVX512F | AVX512DQ)) == (AVX2 | AVX512F | AVX512DQ) && - (xcr0 & 0xe6) == 0xe6 && - (FeatureMask & (XSTATE_MASK_AVX | XSTATE_MASK_AVX512)) == (XSTATE_MASK_AVX | XSTATE_MASK_AVX512)) - { - return (SupportedISA)((int)SupportedISA::AVX2 | (int)SupportedISA::AVX512F); - } - - // check if AVX2 is supported by both processor and OS - if ((reg[EBX] & AVX2) && - (xcr0 & 0x06) == 0x06 && - (FeatureMask & XSTATE_MASK_AVX) == XSTATE_MASK_AVX) - { - return SupportedISA::AVX2; - } - - return SupportedISA::None; -} - -#elif defined(TARGET_UNIX) - SupportedISA DetermineSupportedISA() { - __builtin_cpu_init(); - if (__builtin_cpu_supports("avx2")) + int cpuFeatures = minipal_getcpufeatures(); + if ((cpuFeatures & XArchIntrinsicConstants_Avx2) != 0) { - if (__builtin_cpu_supports("avx512f")) + if ((cpuFeatures & XArchIntrinsicConstants_Avx512) != 0) return (SupportedISA)((int)SupportedISA::AVX2 | (int)SupportedISA::AVX512F); else return SupportedISA::AVX2; @@ -98,8 +29,6 @@ SupportedISA DetermineSupportedISA() } } -#endif // defined(TARGET_UNIX) - static bool s_initialized; static SupportedISA s_supportedISA; From 0fb125acfb165229d55976349adf8f510b9fb3b0 Mon Sep 17 00:00:00 2001 From: Vladimir Sadov Date: Tue, 18 Mar 2025 17:35:15 -0700 Subject: [PATCH 06/52] Use FLS detach callback as a thread termination notification. Another try. (#112809) (#113055) * Use FLS detach as thread termination notification on windows. * use _ASSERTE_ALL_BUILDS * one more case * InitFlsSlot throws per convention used in threading initialization * OsDetachThread could be void * Update src/coreclr/vm/ceemain.cpp * ensure CoInitialize * Asserts to fail deterministically. * comments * scope the failfast to Windows and tweak the comments a bit. * better assert * Apply suggestions from code review * Undo unnecessary finalizer thread changes * reverse the failfast condition * handle destruction of unattached threads * PR feedback * Update src/coreclr/vm/ceemain.cpp * set g_fComStarted as soon as we call CoInitialize * Naming nit * fix a typpo + better comment --------- Co-authored-by: Jan Kotas --- src/coreclr/nativeaot/Runtime/threadstore.cpp | 2 +- src/coreclr/vm/ceemain.cpp | 176 ++++++++++++++---- src/coreclr/vm/ceemain.h | 4 + src/coreclr/vm/finalizerthread.cpp | 27 ++- src/coreclr/vm/finalizerthread.h | 2 + src/coreclr/vm/interoputil.cpp | 29 +-- src/coreclr/vm/threads.cpp | 16 +- src/coreclr/vm/threads.h | 2 +- 8 files changed, 189 insertions(+), 69 deletions(-) diff --git a/src/coreclr/nativeaot/Runtime/threadstore.cpp b/src/coreclr/nativeaot/Runtime/threadstore.cpp index c2b42491a387d9..c03907e4eed665 100644 --- a/src/coreclr/nativeaot/Runtime/threadstore.cpp +++ b/src/coreclr/nativeaot/Runtime/threadstore.cpp @@ -162,7 +162,7 @@ void ThreadStore::DetachCurrentThread() } // Unregister from OS notifications - // This can return false if detach notification is spurious and does not belong to this thread. + // This can return false if a thread did not register for OS notification. if (!PalDetachThread(pDetachingThread)) { return; diff --git a/src/coreclr/vm/ceemain.cpp b/src/coreclr/vm/ceemain.cpp index 3a1ab790f4753f..4143d763fbca04 100644 --- a/src/coreclr/vm/ceemain.cpp +++ b/src/coreclr/vm/ceemain.cpp @@ -889,6 +889,10 @@ void EEStartupHelper() } #endif + // This isn't done as part of InitializeGarbageCollector() above because + // debugger must be initialized before creating EE thread objects + FinalizerThread::FinalizerThreadCreate(); + InitPreStubManager(); #ifdef FEATURE_COMINTEROP @@ -926,10 +930,6 @@ void EEStartupHelper() #endif // FEATURE_PERFTRACING GenAnalysis::Initialize(); - // This isn't done as part of InitializeGarbageCollector() above because thread - // creation requires AppDomains to have been set up. - FinalizerThread::FinalizerThreadCreate(); - // Now we really have fully initialized the garbage collector SetGarbageCollectorFullyInitialized(); @@ -982,6 +982,12 @@ void EEStartupHelper() g_MiniMetaDataBuffMaxSize, MEM_COMMIT, PAGE_READWRITE); #endif // FEATURE_MINIMETADATA_IN_TRIAGEDUMPS +#ifdef TARGET_WINDOWS + // By now finalizer thread should have initialized FLS slot for thread cleanup notifications. + // And ensured that COM is initialized (must happen before allocating FLS slot). + // Make sure that this was done. + FinalizerThread::WaitForFinalizerThreadStart(); +#endif g_fEEStarted = TRUE; g_EEStartupStatus = S_OK; hr = S_OK; @@ -1707,6 +1713,135 @@ BOOL STDMETHODCALLTYPE EEDllMain( // TRUE on success, FALSE on error. #endif // !defined(CORECLR_EMBEDDED) +static void RuntimeThreadShutdown(void* thread) +{ + Thread* pThread = (Thread*)thread; + _ASSERTE(pThread == GetThreadNULLOk()); + + if (pThread) + { +#ifdef FEATURE_COMINTEROP + // reset the CoInitialize state + // so we don't call CoUninitialize during thread detach + pThread->ResetCoInitialized(); +#endif // FEATURE_COMINTEROP + // For case where thread calls ExitThread directly, we need to reset the + // frame pointer. Otherwise stackwalk would AV. We need to do it in cooperative mode. + // We need to set m_GCOnTransitionsOK so this thread won't trigger GC when toggle GC mode + if (pThread->m_pFrame != FRAME_TOP) + { +#ifdef _DEBUG + pThread->m_GCOnTransitionsOK = FALSE; +#endif + GCX_COOP_NO_DTOR(); + pThread->m_pFrame = FRAME_TOP; + GCX_COOP_NO_DTOR_END(); + } + + pThread->DetachThread(TRUE); + } + else + { + // Since we don't actually cleanup the TLS data along this path, verify that it is already cleaned up + AssertThreadStaticDataFreed(); + } + + ThreadDetaching(); +} + +#ifdef TARGET_WINDOWS + +// Index for the fiber local storage of the attached thread pointer +static uint32_t g_flsIndex = FLS_OUT_OF_INDEXES; + +#define FLS_STATE_CLEAR 0 +#define FLS_STATE_ARMED 1 +#define FLS_STATE_INVOKED 2 + +static __declspec(thread) byte t_flsState; + +// This is called when each *fiber* is destroyed. When the home fiber of a thread is destroyed, +// it means that the thread itself is destroyed. +// Since we receive that notification outside of the Loader Lock, it allows us to safely acquire +// the ThreadStore lock in the RuntimeThreadShutdown. +static void __stdcall FiberDetachCallback(void* lpFlsData) +{ + _ASSERTE(g_flsIndex != FLS_OUT_OF_INDEXES); + _ASSERTE(lpFlsData); + + if (t_flsState == FLS_STATE_ARMED) + { + RuntimeThreadShutdown(lpFlsData); + } + + t_flsState = FLS_STATE_INVOKED; +} + +void InitFlsSlot() +{ + // We use fiber detach callbacks to run our thread shutdown code because the fiber detach + // callback is made without the OS loader lock + g_flsIndex = FlsAlloc(FiberDetachCallback); + if (g_flsIndex == FLS_OUT_OF_INDEXES) + { + COMPlusThrowWin32(); + } +} + +// Register the thread with OS to be notified when thread is about to be destroyed +// It fails fast if a different thread was already registered with the current fiber. +// Parameters: +// thread - thread to attach +static void OsAttachThread(void* thread) +{ + if (t_flsState == FLS_STATE_INVOKED) + { + _ASSERTE_ALL_BUILDS(!"Attempt to execute managed code after the .NET runtime thread state has been destroyed."); + } + + t_flsState = FLS_STATE_ARMED; + + // Associate the current fiber with the current thread. This makes the current fiber the thread's "home" + // fiber. This fiber is the only fiber allowed to execute managed code on this thread. When this fiber + // is destroyed, we consider the thread to be destroyed. + _ASSERTE(thread != NULL); + FlsSetValue(g_flsIndex, thread); +} + +// Detach thread from OS notifications. +// It fails fast if some other thread value was attached to the current fiber. +// Parameters: +// thread - thread to detach +void OsDetachThread(void* thread) +{ + ASSERT(g_flsIndex != FLS_OUT_OF_INDEXES); + void* threadFromCurrentFiber = FlsGetValue(g_flsIndex); + + if (threadFromCurrentFiber == NULL) + { + // Thread is not attached. + // This could come from DestroyThread called when refcount reaches 0 + // and the thread may have already been detached or never attached. + // We leave t_flsState as-is to keep track whether our callback has been called. + return; + } + + if (threadFromCurrentFiber != thread) + { + _ASSERTE_ALL_BUILDS(!"Detaching a thread from the wrong fiber"); + } + + // Leave the existing FLS value, to keep the callback "armed" so that we could observe the termination callback. + // After that we will not allow to attach as we will no longer be able to clean up. + t_flsState = FLS_STATE_CLEAR; +} + +void EnsureTlsDestructionMonitor() +{ + OsAttachThread(GetThread()); +} + +#else struct TlsDestructionMonitor { bool m_activated = false; @@ -1720,36 +1855,7 @@ struct TlsDestructionMonitor { if (m_activated) { - Thread* thread = GetThreadNULLOk(); - if (thread) - { -#ifdef FEATURE_COMINTEROP - // reset the CoInitialize state - // so we don't call CoUninitialize during thread detach - thread->ResetCoInitialized(); -#endif // FEATURE_COMINTEROP - // For case where thread calls ExitThread directly, we need to reset the - // frame pointer. Otherwise stackwalk would AV. We need to do it in cooperative mode. - // We need to set m_GCOnTransitionsOK so this thread won't trigger GC when toggle GC mode - if (thread->m_pFrame != FRAME_TOP) - { -#ifdef _DEBUG - thread->m_GCOnTransitionsOK = FALSE; -#endif - GCX_COOP_NO_DTOR(); - thread->m_pFrame = FRAME_TOP; - GCX_COOP_NO_DTOR_END(); - } - - thread->DetachThread(TRUE); - } - else - { - // Since we don't actually cleanup the TLS data along this path, verify that it is already cleaned up - AssertThreadStaticDataFreed(); - } - - ThreadDetaching(); + RuntimeThreadShutdown(GetThreadNULLOk()); } } }; @@ -1763,6 +1869,8 @@ void EnsureTlsDestructionMonitor() tls_destructionMonitor.Activate(); } +#endif + #ifdef DEBUGGING_SUPPORTED // // InitializeDebugger initialized the Runtime-side COM+ Debugging Services diff --git a/src/coreclr/vm/ceemain.h b/src/coreclr/vm/ceemain.h index 1404a5a04237ff..120082d30572ca 100644 --- a/src/coreclr/vm/ceemain.h +++ b/src/coreclr/vm/ceemain.h @@ -46,6 +46,10 @@ void ForceEEShutdown(ShutdownCompleteAction sca = SCA_ExitProcessWhenShutdownCom void ThreadDetaching(); void EnsureTlsDestructionMonitor(); +#ifdef TARGET_WINDOWS +void InitFlsSlot(); +void OsDetachThread(void* thread); +#endif void SetLatchedExitCode (INT32 code); INT32 GetLatchedExitCode (void); diff --git a/src/coreclr/vm/finalizerthread.cpp b/src/coreclr/vm/finalizerthread.cpp index 97ace9a32353b8..546a8d1eba240f 100644 --- a/src/coreclr/vm/finalizerthread.cpp +++ b/src/coreclr/vm/finalizerthread.cpp @@ -433,11 +433,19 @@ DWORD WINAPI FinalizerThread::FinalizerThreadStart(void *args) LOG((LF_GC, LL_INFO10, "Finalizer thread starting...\n")); -#if defined(FEATURE_COMINTEROP_APARTMENT_SUPPORT) && !defined(FEATURE_COMINTEROP) - // Make sure the finalizer thread is set to MTA to avoid hitting - // DevDiv Bugs 180773 - [Stress Failure] AV at CoreCLR!SafeQueryInterfaceHelper - GetFinalizerThread()->SetApartment(Thread::AS_InMTA); -#endif // FEATURE_COMINTEROP_APARTMENT_SUPPORT && !FEATURE_COMINTEROP +#ifdef TARGET_WINDOWS +#ifdef FEATURE_COMINTEROP + // Making finalizer thread MTA early ensures that COM is initialized before we initialize our thread + // termination callback. + ::CoInitializeEx(NULL, COINIT_MULTITHREADED); + g_fComStarted = true; +#endif + + InitFlsSlot(); + + // handshake with EE initialization, as now we can attach Thread objects to native threads. + hEventFinalizerDone->Set(); +#endif s_FinalizerThreadOK = GetFinalizerThread()->HasStarted(); @@ -550,6 +558,15 @@ void FinalizerThread::SignalFinalizationDone(int observedFullGcCount) hEventFinalizerDone->Set(); } +void FinalizerThread::WaitForFinalizerThreadStart() +{ + // this should be only called during EE startup + _ASSERTE(!g_fEEStarted); + + hEventFinalizerDone->Wait(INFINITE,FALSE); + hEventFinalizerDone->Reset(); +} + // Wait for the finalizer thread to complete one pass. void FinalizerThread::FinalizerThreadWait() { diff --git a/src/coreclr/vm/finalizerthread.h b/src/coreclr/vm/finalizerthread.h index 03aae7b4e9cf6d..eda53d2e2d7a69 100644 --- a/src/coreclr/vm/finalizerthread.h +++ b/src/coreclr/vm/finalizerthread.h @@ -65,6 +65,8 @@ class FinalizerThread } } + static void WaitForFinalizerThreadStart(); + static void FinalizerThreadWait(); static void SignalFinalizationDone(int observedFullGcCount); diff --git a/src/coreclr/vm/interoputil.cpp b/src/coreclr/vm/interoputil.cpp index a96ced9828dfc2..c5342d0fdbab6f 100644 --- a/src/coreclr/vm/interoputil.cpp +++ b/src/coreclr/vm/interoputil.cpp @@ -1414,22 +1414,8 @@ VOID EnsureComStarted(BOOL fCoInitCurrentThread) } CONTRACTL_END; - if (g_fComStarted == FALSE) - { - FinalizerThread::GetFinalizerThread()->SetRequiresCoInitialize(); - - // Attempt to set the thread's apartment model (to MTA by default). May not - // succeed (if someone beat us to the punch). That doesn't matter (since - // COM+ objects are now apartment agile), we only care that a CoInitializeEx - // has been performed on this thread by us. - if (fCoInitCurrentThread) - GetThread()->SetApartment(Thread::AS_InMTA); - - // set the finalizer event - FinalizerThread::EnableFinalization(); - - g_fComStarted = TRUE; - } + // COM is expected to be started on finalizer thread during startup + _ASSERTE(g_fComStarted); } HRESULT EnsureComStartedNoThrow(BOOL fCoInitCurrentThread) @@ -1446,15 +1432,8 @@ HRESULT EnsureComStartedNoThrow(BOOL fCoInitCurrentThread) HRESULT hr = S_OK; - if (!g_fComStarted) - { - GCX_COOP(); - EX_TRY - { - EnsureComStarted(fCoInitCurrentThread); - } - EX_CATCH_HRESULT(hr); - } + // COM is expected to be started on finalizer thread during startup + _ASSERTE(g_fComStarted); return hr; } diff --git a/src/coreclr/vm/threads.cpp b/src/coreclr/vm/threads.cpp index 8c60b2b5a7982f..66fafaa12966ad 100644 --- a/src/coreclr/vm/threads.cpp +++ b/src/coreclr/vm/threads.cpp @@ -353,13 +353,23 @@ void SetThread(Thread* t) { LIMITED_METHOD_CONTRACT + Thread* origThread = gCurrentThreadInfo.m_pThread; gCurrentThreadInfo.m_pThread = t; if (t != NULL) { + _ASSERTE(origThread == NULL); InitializeCurrentThreadsStaticData(t); EnsureTlsDestructionMonitor(); t->InitRuntimeThreadLocals(); } +#ifdef TARGET_WINDOWS + else if (origThread != NULL) + { + // Unregister from OS notifications + // This can return false if a thread did not register for OS notification. + OsDetachThread(origThread); + } +#endif // Clear or set the app domain to the one domain based on if the thread is being nulled out or set gCurrentThreadInfo.m_pAppDomain = t == NULL ? NULL : AppDomain::GetCurrentDomain(); @@ -865,7 +875,7 @@ void DestroyThread(Thread *th) // Public function: DetachThread() // Marks the thread as needing to be destroyed, but doesn't destroy it yet. //------------------------------------------------------------------------- -HRESULT Thread::DetachThread(BOOL fDLLThreadDetach) +HRESULT Thread::DetachThread(BOOL inTerminationCallback) { // !!! Can not use contract here. // !!! Contract depends on Thread object for GC_TRIGGERS. @@ -890,9 +900,9 @@ HRESULT Thread::DetachThread(BOOL fDLLThreadDetach) pErrorInfo->Release(); } - // Revoke our IInitializeSpy registration only if we are not in DLL_THREAD_DETACH + // Revoke our IInitializeSpy registration only if we are not in a thread termination callback // (COM will do it or may have already done it automatically in that case). - if (!fDLLThreadDetach) + if (!inTerminationCallback) { RevokeApartmentSpy(); } diff --git a/src/coreclr/vm/threads.h b/src/coreclr/vm/threads.h index 8d3e74ee6fedb8..562b97b68bdf63 100644 --- a/src/coreclr/vm/threads.h +++ b/src/coreclr/vm/threads.h @@ -685,7 +685,7 @@ class Thread }; public: - HRESULT DetachThread(BOOL fDLLThreadDetach); + HRESULT DetachThread(BOOL inTerminationCallback); void SetThreadState(ThreadState ts) { From c763a3cd52fbd18b564869aadf2a38304ab6b12c Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 24 Mar 2025 12:13:13 +0000 Subject: [PATCH 07/52] [release/9.0-staging] [Json] Avoid writing to PipeWriter if IAsyncEnumerable throws before first item (#113699) * [Json] Avoid writing to PipeWriter if IAsyncEnumerable throws before first item * update --------- Co-authored-by: Brennan --- .../Metadata/JsonTypeInfoOfT.WriteHelpers.cs | 5 +- .../JsonSerializerWrapper.Reflection.cs | 94 ++++++++++++++++++- 2 files changed, 97 insertions(+), 2 deletions(-) diff --git a/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/Metadata/JsonTypeInfoOfT.WriteHelpers.cs b/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/Metadata/JsonTypeInfoOfT.WriteHelpers.cs index f8f53f2d343e64..20fa6e339be1ac 100644 --- a/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/Metadata/JsonTypeInfoOfT.WriteHelpers.cs +++ b/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/Metadata/JsonTypeInfoOfT.WriteHelpers.cs @@ -169,7 +169,6 @@ rootValue is not null && try { isFinalBlock = EffectiveConverter.WriteCore(writer, rootValue, Options, ref state); - writer.Flush(); if (state.SuppressFlush) { @@ -179,6 +178,7 @@ rootValue is not null && } else { + writer.Flush(); FlushResult result = await pipeWriter.FlushAsync(cancellationToken).ConfigureAwait(false); if (result.IsCanceled || result.IsCompleted) { @@ -230,6 +230,9 @@ rootValue is not null && } catch { + // Reset the writer in exception cases as we don't want the writer.Dispose() call to flush any pending bytes. + writer.Reset(); + writer.Dispose(); // On exception, walk the WriteStack for any orphaned disposables and try to dispose them. await state.DisposePendingDisposablesOnExceptionAsync().ConfigureAwait(false); throw; diff --git a/src/libraries/System.Text.Json/tests/System.Text.Json.Tests/Serialization/JsonSerializerWrapper.Reflection.cs b/src/libraries/System.Text.Json/tests/System.Text.Json.Tests/Serialization/JsonSerializerWrapper.Reflection.cs index a0a8167ec328c9..972aef40796120 100644 --- a/src/libraries/System.Text.Json/tests/System.Text.Json.Tests/Serialization/JsonSerializerWrapper.Reflection.cs +++ b/src/libraries/System.Text.Json/tests/System.Text.Json.Tests/Serialization/JsonSerializerWrapper.Reflection.cs @@ -886,11 +886,13 @@ private int ReadExactlyFromSource(byte[] buffer, int offset, int count) } // TODO: Deserialize to use PipeReader overloads once implemented - private class AsyncPipelinesSerializerWrapper : JsonSerializerWrapper + private class AsyncPipelinesSerializerWrapper : StreamingJsonSerializerWrapper { public override JsonSerializerOptions DefaultOptions => JsonSerializerOptions.Default; public override bool SupportsNullValueOnDeserialize => true; + public override bool IsAsyncSerializer => true; + public override async Task DeserializeWrapper(string json, JsonSerializerOptions options = null) { return await JsonSerializer.DeserializeAsync(new MemoryStream(Encoding.UTF8.GetBytes(json)), options); @@ -915,6 +917,31 @@ public override async Task DeserializeWrapper(string json, Type type, Js return await JsonSerializer.DeserializeAsync(new MemoryStream(Encoding.UTF8.GetBytes(json)), type, context); } + public override Task DeserializeWrapper(Stream utf8Json, Type returnType, JsonSerializerOptions? options = null) + { + return JsonSerializer.DeserializeAsync(utf8Json, returnType, options).AsTask(); + } + + public override Task DeserializeWrapper(Stream utf8Json, JsonSerializerOptions? options = null) + { + return JsonSerializer.DeserializeAsync(utf8Json, options).AsTask(); + } + + public override Task DeserializeWrapper(Stream utf8Json, Type returnType, JsonSerializerContext context) + { + return JsonSerializer.DeserializeAsync(utf8Json, returnType, context).AsTask(); + } + + public override Task DeserializeWrapper(Stream utf8Json, JsonTypeInfo jsonTypeInfo) + { + return JsonSerializer.DeserializeAsync(utf8Json, jsonTypeInfo).AsTask(); + } + + public override Task DeserializeWrapper(Stream utf8Json, JsonTypeInfo jsonTypeInfo) + { + return JsonSerializer.DeserializeAsync(utf8Json, jsonTypeInfo).AsTask(); + } + public override async Task SerializeWrapper(object value, Type inputType, JsonSerializerOptions options = null) { Pipe pipe = new Pipe(); @@ -969,6 +996,71 @@ public override async Task SerializeWrapper(object value, JsonTypeInfo j pipe.Reader.AdvanceTo(result.Buffer.End); return stringResult; } + + public override async Task SerializeWrapper(Stream stream, object value, Type inputType, JsonSerializerOptions? options = null) + { + var writer = PipeWriter.Create(stream); + try + { + await JsonSerializer.SerializeAsync(writer, value, inputType, options); + } + finally + { + await writer.FlushAsync(); + } + } + + public override async Task SerializeWrapper(Stream stream, T value, JsonSerializerOptions? options = null) + { + var writer = PipeWriter.Create(stream); + try + { + await JsonSerializer.SerializeAsync(writer, value, options); + } + finally + { + await writer.FlushAsync(); + } + } + + public override async Task SerializeWrapper(Stream stream, object value, Type inputType, JsonSerializerContext context) + { + var writer = PipeWriter.Create(stream); + try + { + await JsonSerializer.SerializeAsync(writer, value, inputType, context); + } + finally + { + await writer.FlushAsync(); + } + } + + public override async Task SerializeWrapper(Stream stream, T value, JsonTypeInfo jsonTypeInfo) + { + var writer = PipeWriter.Create(stream); + try + { + await JsonSerializer.SerializeAsync(writer, value, jsonTypeInfo); + } + finally + { + await writer.FlushAsync(); + } + } + + public override async Task SerializeWrapper(Stream stream, object value, JsonTypeInfo jsonTypeInfo) + { + var writer = PipeWriter.Create(stream); + try + { + await JsonSerializer.SerializeAsync(writer, value, jsonTypeInfo); + } + finally + { + await writer.FlushAsync(); + } + } } } } From bb1ff113ae6c3aa7c8e33dd3a0ae0a30089a58d4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Fi=C5=A1era?= Date: Mon, 24 Mar 2025 13:26:06 +0100 Subject: [PATCH 08/52] [browser] Remove experimental args from NodeJS WBT runner (part2) (#113753) --- src/mono/wasm/Wasm.Build.Tests/WasmSIMDTests.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/src/mono/wasm/Wasm.Build.Tests/WasmSIMDTests.cs b/src/mono/wasm/Wasm.Build.Tests/WasmSIMDTests.cs index e87ed3450fcd96..08ac8512665b75 100644 --- a/src/mono/wasm/Wasm.Build.Tests/WasmSIMDTests.cs +++ b/src/mono/wasm/Wasm.Build.Tests/WasmSIMDTests.cs @@ -41,7 +41,6 @@ public void Build_NoAOT_ShouldNotRelink(BuildArgs buildArgs, RunHost host, strin Assert.DoesNotContain("Compiling native assets with emcc", output); RunAndTestWasmApp(buildArgs, - extraXHarnessArgs: host == RunHost.NodeJS ? "--engine-arg=--experimental-wasm-simd --engine-arg=--experimental-wasm-eh" : "", expectedExitCode: 42, test: output => { From f488c542c27c9d8aa38d969c61c4943d979201a8 Mon Sep 17 00:00:00 2001 From: Nikola Milosavljevic Date: Mon, 24 Mar 2025 08:43:50 -0700 Subject: [PATCH 09/52] Update openssl dependency for openSUSE (#113548) --- .../dotnet-runtime-deps/dotnet-runtime-deps-opensuse.42.proj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/installer/pkg/sfx/installers/dotnet-runtime-deps/dotnet-runtime-deps-opensuse.42.proj b/src/installer/pkg/sfx/installers/dotnet-runtime-deps/dotnet-runtime-deps-opensuse.42.proj index 6453d117728d4e..369bf7f7cabfcd 100644 --- a/src/installer/pkg/sfx/installers/dotnet-runtime-deps/dotnet-runtime-deps-opensuse.42.proj +++ b/src/installer/pkg/sfx/installers/dotnet-runtime-deps/dotnet-runtime-deps-opensuse.42.proj @@ -5,6 +5,6 @@ - + \ No newline at end of file From c8613e5a58d0450f8ff7aa0f32afd7497a15d684 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 26 Mar 2025 08:34:22 -0700 Subject: [PATCH 10/52] JIT: avoid fp divide by zero in profile synthesis (#113418) This can trip up users that have enabled floating point exceptions. While we don't generally support changing the exception modes we also can easily avoid dividing by zero here. Addresses #113369 Co-authored-by: Andy Ayers --- src/coreclr/jit/fgprofilesynthesis.cpp | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/coreclr/jit/fgprofilesynthesis.cpp b/src/coreclr/jit/fgprofilesynthesis.cpp index b9ff493c87d49f..b9cd5043a37165 100644 --- a/src/coreclr/jit/fgprofilesynthesis.cpp +++ b/src/coreclr/jit/fgprofilesynthesis.cpp @@ -1408,12 +1408,19 @@ void ProfileSynthesis::GaussSeidelSolver() countVector[block->bbNum] = newWeight; // Remember max absolute and relative change - // (note rel residual will be infinite at times, that's ok) + // (note rel residual will be as large as 1e9 at times, that's ok) // // Note we are using a "point" bound here ("infinity norm") rather than say // computing the L2-norm of the entire residual vector. // - weight_t const blockRelResidual = change / oldWeight; + weight_t const smallFractionOfChange = 1e-9 * change; + weight_t relDivisor = oldWeight; + if (relDivisor < smallFractionOfChange) + { + relDivisor = smallFractionOfChange; + } + + weight_t const blockRelResidual = change / relDivisor; if ((relResidualBlock == nullptr) || (blockRelResidual > relResidual)) { From 2b075e2a230ed26cc10d4a1f092e582617924b2f Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 26 Mar 2025 08:34:33 -0700 Subject: [PATCH 11/52] Do not substitute return values of constrained calls (#113462) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixes #110932. The constraint would need to be resolved first. Co-authored-by: Michal Strehovský --- .../Compiler/SubstitutedILProvider.cs | 4 +-- .../TrimmingBehaviors/DeadCodeElimination.cs | 29 +++++++++++++++++++ 2 files changed, 31 insertions(+), 2 deletions(-) diff --git a/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/SubstitutedILProvider.cs b/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/SubstitutedILProvider.cs index 6b339f8a89d2e3..fd2442c4b6b41c 100644 --- a/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/SubstitutedILProvider.cs +++ b/src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/SubstitutedILProvider.cs @@ -748,12 +748,12 @@ private bool TryGetConstantArgument(MethodIL methodIL, byte[] body, OpcodeFlags[ { BodySubstitution substitution = _substitutionProvider.GetSubstitution(method); if (substitution != null && substitution.Value is int - && (opcode != ILOpcode.callvirt || !method.IsVirtual)) + && ((opcode != ILOpcode.callvirt && !method.Signature.IsStatic) || !method.IsVirtual)) { constant = (int)substitution.Value; return true; } - if ((opcode != ILOpcode.callvirt || !method.IsVirtual) + if (((opcode != ILOpcode.callvirt && !method.Signature.IsStatic) || !method.IsVirtual) && TryGetMethodConstantValue(method, out constant)) { return true; diff --git a/src/tests/nativeaot/SmokeTests/TrimmingBehaviors/DeadCodeElimination.cs b/src/tests/nativeaot/SmokeTests/TrimmingBehaviors/DeadCodeElimination.cs index 0a6090f8092432..032c3a07d7dea6 100644 --- a/src/tests/nativeaot/SmokeTests/TrimmingBehaviors/DeadCodeElimination.cs +++ b/src/tests/nativeaot/SmokeTests/TrimmingBehaviors/DeadCodeElimination.cs @@ -12,6 +12,7 @@ class DeadCodeElimination public static int Run() { SanityTest.Run(); + Test110932Regression.Run(); TestInstanceMethodOptimization.Run(); TestReflectionInvokeSignatures.Run(); TestAbstractTypeNeverDerivedVirtualsOptimization.Run(); @@ -52,6 +53,34 @@ public static void Run() } } + class Test110932Regression + { + static bool s_trueConst = true; + static bool s_falseConst = false; + + interface I + { + static virtual bool GetValue() => false; + } + + class C : I + { + static bool I.GetValue() => true; + } + + public static void Run() + { + if (!Call()) + throw new Exception(); + } + static bool Call() where T : I + { + if (T.GetValue()) + return s_trueConst; + return s_falseConst; + } + } + class TestInstanceMethodOptimization { class UnreferencedType { } From 51e319d0e166db89e540be95ff65134881b8aa1f Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 27 Mar 2025 10:34:03 +0100 Subject: [PATCH 12/52] [release/9.0] Test failure - SendAsync_RequestVersion20_ResponseVersion20 (#113649) * Trying to add user agent header. * Test another way * Change server to httpbin * Update Http2NoPushHost and add Http2NoPushGetUris for improved testing --------- Co-authored-by: Roman Konecny --- src/libraries/Common/tests/System/Net/Configuration.Http.cs | 3 ++- .../System/Net/Http/HttpClientHandlerTest.RemoteServer.cs | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/libraries/Common/tests/System/Net/Configuration.Http.cs b/src/libraries/Common/tests/System/Net/Configuration.Http.cs index f7e6fc759c0dd5..310e0c801e593a 100644 --- a/src/libraries/Common/tests/System/Net/Configuration.Http.cs +++ b/src/libraries/Common/tests/System/Net/Configuration.Http.cs @@ -21,7 +21,7 @@ public static partial class Http // This server doesn't use HTTP/2 server push (push promise) feature. Some HttpClient implementations // don't support servers that use push right now. - public static string Http2NoPushHost => GetValue("DOTNET_TEST_HTTP2NOPUSHHOST", "www.microsoft.com"); + public static string Http2NoPushHost => GetValue("DOTNET_TEST_HTTP2NOPUSHHOST", "httpbin.org"); // Domain server environment. public static string DomainJoinedHttpHost => GetValue("DOTNET_TEST_DOMAINJOINED_HTTPHOST"); @@ -106,6 +106,7 @@ public static Uri[] GetEchoServerList() public static readonly object[][] Http2Servers = { new object[] { new Uri("https://" + Http2Host) } }; public static readonly object[][] Http2NoPushServers = { new object[] { new Uri("https://" + Http2NoPushHost) } }; + public static readonly object[][] Http2NoPushGetUris = { new object[] { new Uri("https://" + Http2NoPushHost + "/get") } }; public static readonly RemoteServer RemoteHttp11Server = new RemoteServer(new Uri("http://" + Host + "/"), HttpVersion.Version11); public static readonly RemoteServer RemoteSecureHttp11Server = new RemoteServer(new Uri("https://" + SecureHost + "/"), HttpVersion.Version11); diff --git a/src/libraries/Common/tests/System/Net/Http/HttpClientHandlerTest.RemoteServer.cs b/src/libraries/Common/tests/System/Net/Http/HttpClientHandlerTest.RemoteServer.cs index 04cfc593343f85..733d1a55677fd8 100644 --- a/src/libraries/Common/tests/System/Net/Http/HttpClientHandlerTest.RemoteServer.cs +++ b/src/libraries/Common/tests/System/Net/Http/HttpClientHandlerTest.RemoteServer.cs @@ -31,6 +31,7 @@ public sealed class HttpClientHandler_RemoteServerTest : HttpClientHandlerTestBa public static readonly object[][] Http2Servers = Configuration.Http.Http2Servers; public static readonly object[][] Http2NoPushServers = Configuration.Http.Http2NoPushServers; + public static readonly object[][] Http2NoPushGetUris = Configuration.Http.Http2NoPushGetUris; // Standard HTTP methods defined in RFC7231: http://tools.ietf.org/html/rfc7231#section-4.3 // "GET", "HEAD", "POST", "PUT", "DELETE", "OPTIONS", "TRACE" @@ -1364,7 +1365,7 @@ public async Task SendAsync_RequestVersion20_ResponseVersion20IfHttp2Supported(U } [OuterLoop("Uses external servers")] - [ConditionalTheory(nameof(IsWindows10Version1607OrGreater)), MemberData(nameof(Http2NoPushServers))] + [ConditionalTheory(nameof(IsWindows10Version1607OrGreater)), MemberData(nameof(Http2NoPushGetUris))] public async Task SendAsync_RequestVersion20_ResponseVersion20(Uri server) { // Sync API supported only up to HTTP/1.1 From b41d940c8b6a99276d089ee1daee265e630b27c1 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 31 Mar 2025 08:40:39 -0400 Subject: [PATCH 13/52] [release/9.0-staging] [mono] Missing memory barrier leads to crash in multi-threaded scenarios (#113740) Backport of https://github.com/dotnet/runtime/pull/113140 Issue #109410 appears to be a case where klass is 0 when we perform an isinst operation, but the cache and obj are nonzero and look like valid addresses. klass is either a compile-time (well, jit-time) constant or being fetched out of the cache (it looks like it can be either depending on some sort of rgctx condition). This PR adds null checks in two places along with a memory barrier in the location where we believe an uninitialized cache is being published to other threads. --------- Co-authored-by: Katelyn Gadd --- src/mono/mono/metadata/object.c | 1 + src/mono/mono/mini/jit-icalls.c | 7 ++++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/mono/mono/metadata/object.c b/src/mono/mono/metadata/object.c index 1c1a632a4003e7..fe952d04c25a41 100644 --- a/src/mono/mono/metadata/object.c +++ b/src/mono/mono/metadata/object.c @@ -6806,6 +6806,7 @@ mono_object_handle_isinst (MonoObjectHandle obj, MonoClass *klass, MonoError *er { error_init (error); + if (!m_class_is_inited (klass)) mono_class_init_internal (klass); diff --git a/src/mono/mono/mini/jit-icalls.c b/src/mono/mono/mini/jit-icalls.c index df7c332f8fcd4c..a62f6959f2b2b7 100644 --- a/src/mono/mono/mini/jit-icalls.c +++ b/src/mono/mono/mini/jit-icalls.c @@ -1702,7 +1702,7 @@ mono_throw_type_load (MonoClass* klass) mono_error_set_type_load_class (error, klass, "Attempting to load invalid type '%s'.", klass_name); g_free (klass_name); } - + mono_error_set_pending_exception (error); } @@ -1743,6 +1743,11 @@ mini_init_method_rgctx (MonoMethodRuntimeGenericContext *mrgctx, MonoGSharedMeth mono_method_get_context (m), m->klass); g_assert (data); + // we need a barrier before publishing data via mrgctx->infos [i] because the contents of data may not + // have been published to all cores and another thread may read zeroes or partially initialized data + // out of it, even though we have a barrier before publication of entries in mrgctx->entries below + mono_memory_barrier(); + /* The first few entries are stored inline, the rest are stored in mrgctx->entries */ if (i < ninline) mrgctx->infos [i] = data; From dcd6c39357209eb2f975e38fdea2325fadc86440 Mon Sep 17 00:00:00 2001 From: Juan Hoyos <19413848+hoyosjs@users.noreply.github.com> Date: Tue, 1 Apr 2025 13:28:30 -0700 Subject: [PATCH 14/52] [release/9.0] Move DAC signing identity to PME (#114031) --- .../coreclr/templates/sign-diagnostic-files.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/eng/pipelines/coreclr/templates/sign-diagnostic-files.yml b/eng/pipelines/coreclr/templates/sign-diagnostic-files.yml index 2e6ec556150b8f..bd4dec5965e21a 100644 --- a/eng/pipelines/coreclr/templates/sign-diagnostic-files.yml +++ b/eng/pipelines/coreclr/templates/sign-diagnostic-files.yml @@ -15,12 +15,12 @@ steps: - task: EsrpCodeSigning@5 displayName: Sign Diagnostic Binaries inputs: - ConnectedServiceName: 'diagnostics-esrp-kvcertuser' - AppRegistrationClientId: '2234cdec-a13f-4bb2-aa63-04c57fd7a1f9' - AppRegistrationTenantId: '72f988bf-86f1-41af-91ab-2d7cd011db47' - AuthAKVName: 'clrdiag-esrp-id' - AuthCertName: 'dotnetesrp-diagnostics-aad-ssl-cert' - AuthSignCertName: 'dotnet-diagnostics-esrp-pki-onecert' + ConnectedServiceName: 'diagnostics-esrp-kvcertuser-pme' + AppRegistrationClientId: '22346933-af99-4e94-97d5-7fa1dcf4bba6' + AppRegistrationTenantId: '975f013f-7f24-47e8-a7d3-abc4752bf346' + AuthAKVName: 'clrdiag-esrp-pme' + AuthCertName: 'dac-dnceng-ssl-cert' + AuthSignCertName: 'dac-dnceng-esrpclient-cert' FolderPath: ${{ parameters.basePath }} Pattern: | **/mscordaccore*.dll From d72e56efa62af8454af2c461900328fb6fbd21a8 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Wed, 2 Apr 2025 12:03:07 -0600 Subject: [PATCH 15/52] [release/9.0-staging] Update dependencies from dotnet/icu (#113460) * Update dependencies from https://github.com/dotnet/icu build 20250312.2 Microsoft.NETCore.Runtime.ICU.Transport From Version 9.0.0-rtm.25157.1 -> To Version 9.0.0-rtm.25162.2 * Update dependencies from https://github.com/dotnet/icu build 20250313.1 Microsoft.NETCore.Runtime.ICU.Transport From Version 9.0.0-rtm.25157.1 -> To Version 9.0.0-rtm.25163.1 * Update dependencies from https://github.com/dotnet/icu build 20250314.1 Microsoft.NETCore.Runtime.ICU.Transport From Version 9.0.0-rtm.25157.1 -> To Version 9.0.0-rtm.25164.1 * Update dependencies from https://github.com/dotnet/icu build 20250317.3 Microsoft.NETCore.Runtime.ICU.Transport From Version 9.0.0-rtm.25157.1 -> To Version 9.0.0-rtm.25167.3 * Update dependencies from https://github.com/dotnet/icu build 20250320.1 Microsoft.NETCore.Runtime.ICU.Transport From Version 9.0.0-rtm.25157.1 -> To Version 9.0.0-rtm.25170.1 * Update dependencies from https://github.com/dotnet/icu build 20250327.1 Microsoft.NETCore.Runtime.ICU.Transport From Version 9.0.0-rtm.25157.1 -> To Version 9.0.0-rtm.25177.1 --------- Co-authored-by: dotnet-maestro[bot] Co-authored-by: Larry Ewing --- NuGet.config | 4 ++-- eng/Version.Details.xml | 4 ++-- eng/Versions.props | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/NuGet.config b/NuGet.config index 9d44e25da71a31..db5b1af50a8164 100644 --- a/NuGet.config +++ b/NuGet.config @@ -10,10 +10,10 @@ - + + - 9.0.0-rtm.24511.16 - 9.0.0-rtm.25157.1 + 9.0.0-rtm.25177.1 9.0.0-rtm.24466.4 2.4.8 From 5da49f4e834fd5ecc3bd3fac5af227a2578ee664 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Wed, 2 Apr 2025 12:05:40 -0600 Subject: [PATCH 16/52] [release/9.0] Update dependencies from dotnet/emsdk (#113483) * Update dependencies from https://github.com/dotnet/emsdk build 20250313.3 Microsoft.SourceBuild.Intermediate.emsdk , Microsoft.NET.Workload.Emscripten.Current.Manifest-9.0.100 , Microsoft.NET.Workload.Emscripten.Current.Manifest-9.0.100.Transport From Version 9.0.4-servicing.25157.2 -> To Version 9.0.4-servicing.25163.3 * Update dependencies from https://github.com/dotnet/emsdk build 20250314.2 Microsoft.SourceBuild.Intermediate.emsdk , Microsoft.NET.Workload.Emscripten.Current.Manifest-9.0.100 , Microsoft.NET.Workload.Emscripten.Current.Manifest-9.0.100.Transport From Version 9.0.4-servicing.25157.2 -> To Version 9.0.4-servicing.25164.2 * Update dependencies from https://github.com/dotnet/emsdk build 20250317.2 Microsoft.SourceBuild.Intermediate.emsdk , Microsoft.NET.Workload.Emscripten.Current.Manifest-9.0.100 , Microsoft.NET.Workload.Emscripten.Current.Manifest-9.0.100.Transport From Version 9.0.4-servicing.25157.2 -> To Version 9.0.4-servicing.25167.2 * Update dependencies from https://github.com/dotnet/emsdk build 20250320.1 Microsoft.SourceBuild.Intermediate.emsdk , Microsoft.NET.Workload.Emscripten.Current.Manifest-9.0.100 , Microsoft.NET.Workload.Emscripten.Current.Manifest-9.0.100.Transport From Version 9.0.4-servicing.25157.2 -> To Version 9.0.4-servicing.25170.1 * Update dependencies from https://github.com/dotnet/emsdk build 20250321.1 Microsoft.SourceBuild.Intermediate.emsdk , Microsoft.NET.Workload.Emscripten.Current.Manifest-9.0.100 , Microsoft.NET.Workload.Emscripten.Current.Manifest-9.0.100.Transport From Version 9.0.4-servicing.25157.2 -> To Version 9.0.4-servicing.25171.1 * Update dependencies from https://github.com/dotnet/emsdk build 20250327.1 Microsoft.SourceBuild.Intermediate.emsdk , Microsoft.NET.Workload.Emscripten.Current.Manifest-9.0.100 , Microsoft.NET.Workload.Emscripten.Current.Manifest-9.0.100.Transport From Version 9.0.4-servicing.25157.2 -> To Version 9.0.4-servicing.25177.1 Dependency coherency updates runtime.linux-arm64.Microsoft.NETCore.Runtime.JIT.Tools,runtime.linux-x64.Microsoft.NETCore.Runtime.JIT.Tools,runtime.linux-musl-arm64.Microsoft.NETCore.Runtime.JIT.Tools,runtime.linux-musl-x64.Microsoft.NETCore.Runtime.JIT.Tools,runtime.win-arm64.Microsoft.NETCore.Runtime.JIT.Tools,runtime.win-x64.Microsoft.NETCore.Runtime.JIT.Tools,runtime.osx-arm64.Microsoft.NETCore.Runtime.JIT.Tools,runtime.osx-x64.Microsoft.NETCore.Runtime.JIT.Tools,runtime.linux-arm64.Microsoft.NETCore.Runtime.Mono.LLVM.Sdk,runtime.linux-arm64.Microsoft.NETCore.Runtime.Mono.LLVM.Tools,runtime.linux-musl-arm64.Microsoft.NETCore.Runtime.Mono.LLVM.Sdk,runtime.linux-musl-arm64.Microsoft.NETCore.Runtime.Mono.LLVM.Tools,runtime.linux-x64.Microsoft.NETCore.Runtime.Mono.LLVM.Sdk,runtime.linux-x64.Microsoft.NETCore.Runtime.Mono.LLVM.Tools,runtime.linux-musl-x64.Microsoft.NETCore.Runtime.Mono.LLVM.Sdk,runtime.linux-musl-x64.Microsoft.NETCore.Runtime.Mono.LLVM.Tools,runtime.win-x64.Microsoft.NETCore.Runtime.Mono.LLVM.Sdk,runtime.win-x64.Microsoft.NETCore.Runtime.Mono.LLVM.Tools,runtime.osx-arm64.Microsoft.NETCore.Runtime.Mono.LLVM.Sdk,runtime.osx-arm64.Microsoft.NETCore.Runtime.Mono.LLVM.Tools,runtime.osx-x64.Microsoft.NETCore.Runtime.Mono.LLVM.Sdk,runtime.osx-x64.Microsoft.NETCore.Runtime.Mono.LLVM.Tools From Version 19.1.0-alpha.1.25113.2 -> To Version 19.1.0-alpha.1.25163.1 (parent: Microsoft.NET.Workload.Emscripten.Current.Manifest-9.0.100.Transport --------- Co-authored-by: dotnet-maestro[bot] --- NuGet.config | 3 +- eng/Version.Details.xml | 98 ++++++++++++++++++++--------------------- eng/Versions.props | 46 +++++++++---------- 3 files changed, 73 insertions(+), 74 deletions(-) diff --git a/NuGet.config b/NuGet.config index deafa2a01414c9..b650c892d811e4 100644 --- a/NuGet.config +++ b/NuGet.config @@ -9,10 +9,9 @@ - + - - + https://github.com/dotnet/emsdk - 78be8cdf4f0bfd93018fd7a87f8282a41d041298 + b8d8fec81291264a825ba4c803ad50577b9d2265 @@ -226,61 +226,61 @@ https://github.com/dotnet/runtime-assets 739921bd3405841c06d3f74701c9e6ccfbd19e2e - + https://github.com/dotnet/llvm-project - f98a0db595fe3f28dac4594acc7114b16281d090 + 158c0c35f7a4ca5b2214cb259ba581396458c502 - + https://github.com/dotnet/llvm-project - f98a0db595fe3f28dac4594acc7114b16281d090 + 158c0c35f7a4ca5b2214cb259ba581396458c502 - + https://github.com/dotnet/llvm-project - f98a0db595fe3f28dac4594acc7114b16281d090 + 158c0c35f7a4ca5b2214cb259ba581396458c502 - + https://github.com/dotnet/llvm-project - f98a0db595fe3f28dac4594acc7114b16281d090 + 158c0c35f7a4ca5b2214cb259ba581396458c502 - + https://github.com/dotnet/llvm-project - f98a0db595fe3f28dac4594acc7114b16281d090 + 158c0c35f7a4ca5b2214cb259ba581396458c502 - + https://github.com/dotnet/llvm-project - f98a0db595fe3f28dac4594acc7114b16281d090 + 158c0c35f7a4ca5b2214cb259ba581396458c502 - + https://github.com/dotnet/llvm-project - f98a0db595fe3f28dac4594acc7114b16281d090 + 158c0c35f7a4ca5b2214cb259ba581396458c502 - + https://github.com/dotnet/llvm-project - f98a0db595fe3f28dac4594acc7114b16281d090 + 158c0c35f7a4ca5b2214cb259ba581396458c502 - + https://github.com/dotnet/llvm-project - f98a0db595fe3f28dac4594acc7114b16281d090 + 158c0c35f7a4ca5b2214cb259ba581396458c502 - + https://github.com/dotnet/llvm-project - f98a0db595fe3f28dac4594acc7114b16281d090 + 158c0c35f7a4ca5b2214cb259ba581396458c502 - + https://github.com/dotnet/llvm-project - f98a0db595fe3f28dac4594acc7114b16281d090 + 158c0c35f7a4ca5b2214cb259ba581396458c502 - + https://github.com/dotnet/llvm-project - f98a0db595fe3f28dac4594acc7114b16281d090 + 158c0c35f7a4ca5b2214cb259ba581396458c502 - + https://github.com/dotnet/llvm-project - f98a0db595fe3f28dac4594acc7114b16281d090 + 158c0c35f7a4ca5b2214cb259ba581396458c502 - + https://github.com/dotnet/llvm-project - f98a0db595fe3f28dac4594acc7114b16281d090 + 158c0c35f7a4ca5b2214cb259ba581396458c502 https://github.com/dotnet/runtime diff --git a/eng/Versions.props b/eng/Versions.props index 8ba353723841c2..8cdb4c0e813716 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -225,39 +225,39 @@ 2.4.8 9.0.0-alpha.1.24167.3 - 19.1.0-alpha.1.25113.2 - 19.1.0-alpha.1.25113.2 - 19.1.0-alpha.1.25113.2 - 19.1.0-alpha.1.25113.2 - 19.1.0-alpha.1.25113.2 - 19.1.0-alpha.1.25113.2 - 19.1.0-alpha.1.25113.2 - 19.1.0-alpha.1.25113.2 - 19.1.0-alpha.1.25113.2 - 19.1.0-alpha.1.25113.2 - 19.1.0-alpha.1.25113.2 - 19.1.0-alpha.1.25113.2 - 19.1.0-alpha.1.25113.2 - 19.1.0-alpha.1.25113.2 + 19.1.0-alpha.1.25163.1 + 19.1.0-alpha.1.25163.1 + 19.1.0-alpha.1.25163.1 + 19.1.0-alpha.1.25163.1 + 19.1.0-alpha.1.25163.1 + 19.1.0-alpha.1.25163.1 + 19.1.0-alpha.1.25163.1 + 19.1.0-alpha.1.25163.1 + 19.1.0-alpha.1.25163.1 + 19.1.0-alpha.1.25163.1 + 19.1.0-alpha.1.25163.1 + 19.1.0-alpha.1.25163.1 + 19.1.0-alpha.1.25163.1 + 19.1.0-alpha.1.25163.1 - 9.0.4-servicing.25157.2 + 9.0.4-servicing.25177.1 9.0.4 $(MicrosoftNETWorkloadEmscriptenCurrentManifest90100Version) 1.1.87-gba258badda 1.0.0-v3.14.0.5722 - 19.1.0-alpha.1.25113.2 - 19.1.0-alpha.1.25113.2 - 19.1.0-alpha.1.25113.2 - 19.1.0-alpha.1.25113.2 - 19.1.0-alpha.1.25113.2 - 19.1.0-alpha.1.25113.2 - 19.1.0-alpha.1.25113.2 - 19.1.0-alpha.1.25113.2 + 19.1.0-alpha.1.25163.1 + 19.1.0-alpha.1.25163.1 + 19.1.0-alpha.1.25163.1 + 19.1.0-alpha.1.25163.1 + 19.1.0-alpha.1.25163.1 + 19.1.0-alpha.1.25163.1 + 19.1.0-alpha.1.25163.1 + 19.1.0-alpha.1.25163.1 3.1.7 1.0.406601 From 2817c2ab88c032d78b250f91516b0fc79a4619e3 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Wed, 2 Apr 2025 12:06:38 -0600 Subject: [PATCH 17/52] Update dependencies from https://github.com/dotnet/runtime-assets build 20250313.2 (#113516) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Microsoft.DotNet.CilStrip.Sources , System.ComponentModel.TypeConverter.TestData , System.Data.Common.TestData , System.Drawing.Common.TestData , System.Formats.Tar.TestData , System.IO.Compression.TestData , System.IO.Packaging.TestData , System.Net.TestData , System.Private.Runtime.UnicodeData , System.Runtime.Numerics.TestData , System.Runtime.TimeZoneData , System.Security.Cryptography.X509Certificates.TestData , System.Text.RegularExpressions.TestData , System.Windows.Extensions.TestData From Version 9.0.0-beta.25113.2 -> To Version 9.0.0-beta.25163.2 Co-authored-by: dotnet-maestro[bot] Co-authored-by: Carlos Sánchez López <1175054+carlossanlop@users.noreply.github.com> --- eng/Version.Details.xml | 56 ++++++++++++++++++++--------------------- eng/Versions.props | 28 ++++++++++----------- 2 files changed, 42 insertions(+), 42 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index d0bda1450a3b9e..8e9c5421998b7d 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -174,57 +174,57 @@ https://github.com/dotnet/arcade 5da211e1c42254cb35e7ef3d5a8428fb24853169 - + https://github.com/dotnet/runtime-assets - 739921bd3405841c06d3f74701c9e6ccfbd19e2e + aedfa03dd61c8e5ef1253d33a245d884669b0476 - + https://github.com/dotnet/runtime-assets - 739921bd3405841c06d3f74701c9e6ccfbd19e2e + aedfa03dd61c8e5ef1253d33a245d884669b0476 - + https://github.com/dotnet/runtime-assets - 739921bd3405841c06d3f74701c9e6ccfbd19e2e + aedfa03dd61c8e5ef1253d33a245d884669b0476 - + https://github.com/dotnet/runtime-assets - 739921bd3405841c06d3f74701c9e6ccfbd19e2e + aedfa03dd61c8e5ef1253d33a245d884669b0476 - + https://github.com/dotnet/runtime-assets - 739921bd3405841c06d3f74701c9e6ccfbd19e2e + aedfa03dd61c8e5ef1253d33a245d884669b0476 - + https://github.com/dotnet/runtime-assets - 739921bd3405841c06d3f74701c9e6ccfbd19e2e + aedfa03dd61c8e5ef1253d33a245d884669b0476 - + https://github.com/dotnet/runtime-assets - 739921bd3405841c06d3f74701c9e6ccfbd19e2e + aedfa03dd61c8e5ef1253d33a245d884669b0476 - + https://github.com/dotnet/runtime-assets - 739921bd3405841c06d3f74701c9e6ccfbd19e2e + aedfa03dd61c8e5ef1253d33a245d884669b0476 - + https://github.com/dotnet/runtime-assets - 739921bd3405841c06d3f74701c9e6ccfbd19e2e + aedfa03dd61c8e5ef1253d33a245d884669b0476 - + https://github.com/dotnet/runtime-assets - 739921bd3405841c06d3f74701c9e6ccfbd19e2e + aedfa03dd61c8e5ef1253d33a245d884669b0476 - + https://github.com/dotnet/runtime-assets - 739921bd3405841c06d3f74701c9e6ccfbd19e2e + aedfa03dd61c8e5ef1253d33a245d884669b0476 - + https://github.com/dotnet/runtime-assets - 739921bd3405841c06d3f74701c9e6ccfbd19e2e + aedfa03dd61c8e5ef1253d33a245d884669b0476 - + https://github.com/dotnet/runtime-assets - 739921bd3405841c06d3f74701c9e6ccfbd19e2e + aedfa03dd61c8e5ef1253d33a245d884669b0476 https://github.com/dotnet/llvm-project @@ -356,9 +356,9 @@ https://github.com/dotnet/hotreload-utils fd21b154f1152569e7fa49a4e030927eccbf4aaa - + https://github.com/dotnet/runtime-assets - 739921bd3405841c06d3f74701c9e6ccfbd19e2e + aedfa03dd61c8e5ef1253d33a245d884669b0476 https://github.com/dotnet/roslyn diff --git a/eng/Versions.props b/eng/Versions.props index 8847e2bb2b0fd5..2d5642ed7e5880 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -141,20 +141,20 @@ 8.0.0 8.0.0 - 9.0.0-beta.25113.2 - 9.0.0-beta.25113.2 - 9.0.0-beta.25113.2 - 9.0.0-beta.25113.2 - 9.0.0-beta.25113.2 - 9.0.0-beta.25113.2 - 9.0.0-beta.25113.2 - 9.0.0-beta.25113.2 - 9.0.0-beta.25113.2 - 9.0.0-beta.25113.2 - 9.0.0-beta.25113.2 - 9.0.0-beta.25113.2 - 9.0.0-beta.25113.2 - 9.0.0-beta.25113.2 + 9.0.0-beta.25163.2 + 9.0.0-beta.25163.2 + 9.0.0-beta.25163.2 + 9.0.0-beta.25163.2 + 9.0.0-beta.25163.2 + 9.0.0-beta.25163.2 + 9.0.0-beta.25163.2 + 9.0.0-beta.25163.2 + 9.0.0-beta.25163.2 + 9.0.0-beta.25163.2 + 9.0.0-beta.25163.2 + 9.0.0-beta.25163.2 + 9.0.0-beta.25163.2 + 9.0.0-beta.25163.2 1.0.0-prerelease.24462.2 1.0.0-prerelease.24462.2 From bed3bb696e7c7f6142dc21dcf78eccb11402a1a2 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Wed, 2 Apr 2025 12:15:53 -0600 Subject: [PATCH 18/52] [release/9.0-staging] Update dependencies from dotnet/cecil (#113461) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Update dependencies from https://github.com/dotnet/cecil build 20250312.2 Microsoft.SourceBuild.Intermediate.cecil , Microsoft.DotNet.Cecil From Version 0.11.5-alpha.25112.2 -> To Version 0.11.5-alpha.25162.2 * Update dependencies from https://github.com/dotnet/cecil build 20250316.5 Microsoft.SourceBuild.Intermediate.cecil , Microsoft.DotNet.Cecil From Version 0.11.5-alpha.25112.2 -> To Version 0.11.5-alpha.25166.5 * Update dependencies from https://github.com/dotnet/cecil build 20250323.2 Microsoft.SourceBuild.Intermediate.cecil , Microsoft.DotNet.Cecil From Version 0.11.5-alpha.25112.2 -> To Version 0.11.5-alpha.25173.2 --------- Co-authored-by: dotnet-maestro[bot] Co-authored-by: Carlos Sánchez López <1175054+carlossanlop@users.noreply.github.com> --- eng/Version.Details.xml | 8 ++++---- eng/Versions.props | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 8e9c5421998b7d..9e52993098857b 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -54,14 +54,14 @@ 803d8598f98fb4efd94604b32627ee9407f246db - + https://github.com/dotnet/cecil - 8debcd23b73a27992a5fdb2229f546e453619d11 + e9c26dfe3cdc9cafe5acd2bb9aa1fa1b4cbcc72f - + https://github.com/dotnet/cecil - 8debcd23b73a27992a5fdb2229f546e453619d11 + e9c26dfe3cdc9cafe5acd2bb9aa1fa1b4cbcc72f diff --git a/eng/Versions.props b/eng/Versions.props index 2d5642ed7e5880..190c833431e4bc 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -215,7 +215,7 @@ 9.0.0-preview-20241010.1 - 0.11.5-alpha.25112.2 + 0.11.5-alpha.25173.2 9.0.0-rtm.24511.16 From 480bf2b7d56a45021998f31611edc59ff36a996b Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Wed, 2 Apr 2025 12:16:10 -0600 Subject: [PATCH 19/52] Update dependencies from https://github.com/dotnet/arcade build 20250314.2 (#113561) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Microsoft.SourceBuild.Intermediate.arcade , 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.XliffTasks , Microsoft.DotNet.XUnitAssert , Microsoft.DotNet.XUnitConsoleRunner , Microsoft.DotNet.XUnitExtensions From Version 9.0.0-beta.25111.5 -> To Version 9.0.0-beta.25164.2 Co-authored-by: dotnet-maestro[bot] Co-authored-by: Carlos Sánchez López <1175054+carlossanlop@users.noreply.github.com> --- eng/Version.Details.xml | 84 +++++++++---------- eng/Versions.props | 32 +++---- .../core-templates/steps/generate-sbom.yml | 2 +- eng/common/generate-sbom-prep.ps1 | 20 +++-- eng/common/generate-sbom-prep.sh | 17 ++-- eng/common/templates-official/job/job.yml | 1 + eng/common/tools.ps1 | 4 +- eng/common/tools.sh | 4 +- global.json | 10 +-- 9 files changed, 94 insertions(+), 80 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 9e52993098857b..59906ce1092344 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -92,87 +92,87 @@ - + https://github.com/dotnet/arcade - 5da211e1c42254cb35e7ef3d5a8428fb24853169 + 5ba9ca776c1d0bb72b2791591e54cf51fc52dfee - + https://github.com/dotnet/arcade - 5da211e1c42254cb35e7ef3d5a8428fb24853169 + 5ba9ca776c1d0bb72b2791591e54cf51fc52dfee - + https://github.com/dotnet/arcade - 5da211e1c42254cb35e7ef3d5a8428fb24853169 + 5ba9ca776c1d0bb72b2791591e54cf51fc52dfee - + https://github.com/dotnet/arcade - 5da211e1c42254cb35e7ef3d5a8428fb24853169 + 5ba9ca776c1d0bb72b2791591e54cf51fc52dfee - + https://github.com/dotnet/arcade - 5da211e1c42254cb35e7ef3d5a8428fb24853169 + 5ba9ca776c1d0bb72b2791591e54cf51fc52dfee - + https://github.com/dotnet/arcade - 5da211e1c42254cb35e7ef3d5a8428fb24853169 + 5ba9ca776c1d0bb72b2791591e54cf51fc52dfee - + https://github.com/dotnet/arcade - 5da211e1c42254cb35e7ef3d5a8428fb24853169 + 5ba9ca776c1d0bb72b2791591e54cf51fc52dfee - + https://github.com/dotnet/arcade - 5da211e1c42254cb35e7ef3d5a8428fb24853169 + 5ba9ca776c1d0bb72b2791591e54cf51fc52dfee - + https://github.com/dotnet/arcade - 5da211e1c42254cb35e7ef3d5a8428fb24853169 + 5ba9ca776c1d0bb72b2791591e54cf51fc52dfee - + https://github.com/dotnet/arcade - 5da211e1c42254cb35e7ef3d5a8428fb24853169 + 5ba9ca776c1d0bb72b2791591e54cf51fc52dfee - + https://github.com/dotnet/arcade - 5da211e1c42254cb35e7ef3d5a8428fb24853169 + 5ba9ca776c1d0bb72b2791591e54cf51fc52dfee - + https://github.com/dotnet/arcade - 5da211e1c42254cb35e7ef3d5a8428fb24853169 + 5ba9ca776c1d0bb72b2791591e54cf51fc52dfee - + https://github.com/dotnet/arcade - 5da211e1c42254cb35e7ef3d5a8428fb24853169 + 5ba9ca776c1d0bb72b2791591e54cf51fc52dfee - + https://github.com/dotnet/arcade - 5da211e1c42254cb35e7ef3d5a8428fb24853169 + 5ba9ca776c1d0bb72b2791591e54cf51fc52dfee - + https://github.com/dotnet/arcade - 5da211e1c42254cb35e7ef3d5a8428fb24853169 + 5ba9ca776c1d0bb72b2791591e54cf51fc52dfee - + https://github.com/dotnet/arcade - 5da211e1c42254cb35e7ef3d5a8428fb24853169 + 5ba9ca776c1d0bb72b2791591e54cf51fc52dfee - + https://github.com/dotnet/arcade - 5da211e1c42254cb35e7ef3d5a8428fb24853169 + 5ba9ca776c1d0bb72b2791591e54cf51fc52dfee - + https://github.com/dotnet/arcade - 5da211e1c42254cb35e7ef3d5a8428fb24853169 + 5ba9ca776c1d0bb72b2791591e54cf51fc52dfee - + https://github.com/dotnet/arcade - 5da211e1c42254cb35e7ef3d5a8428fb24853169 + 5ba9ca776c1d0bb72b2791591e54cf51fc52dfee - + https://github.com/dotnet/arcade - 5da211e1c42254cb35e7ef3d5a8428fb24853169 + 5ba9ca776c1d0bb72b2791591e54cf51fc52dfee https://github.com/dotnet/runtime-assets @@ -332,9 +332,9 @@ https://github.com/dotnet/xharness edc52ac68c1bf77e3b107fc8a448674a6d058d8a - + https://github.com/dotnet/arcade - 5da211e1c42254cb35e7ef3d5a8428fb24853169 + 5ba9ca776c1d0bb72b2791591e54cf51fc52dfee https://dev.azure.com/dnceng/internal/_git/dotnet-optimization diff --git a/eng/Versions.props b/eng/Versions.props index 190c833431e4bc..9d0f6bb09e0217 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -85,22 +85,22 @@ 9.0.104 - 9.0.0-beta.25111.5 - 9.0.0-beta.25111.5 - 9.0.0-beta.25111.5 - 9.0.0-beta.25111.5 - 2.9.0-beta.25111.5 - 9.0.0-beta.25111.5 - 2.9.0-beta.25111.5 - 9.0.0-beta.25111.5 - 9.0.0-beta.25111.5 - 9.0.0-beta.25111.5 - 9.0.0-beta.25111.5 - 9.0.0-beta.25111.5 - 9.0.0-beta.25111.5 - 9.0.0-beta.25111.5 - 9.0.0-beta.25111.5 - 9.0.0-beta.25111.5 + 9.0.0-beta.25164.2 + 9.0.0-beta.25164.2 + 9.0.0-beta.25164.2 + 9.0.0-beta.25164.2 + 2.9.0-beta.25164.2 + 9.0.0-beta.25164.2 + 2.9.0-beta.25164.2 + 9.0.0-beta.25164.2 + 9.0.0-beta.25164.2 + 9.0.0-beta.25164.2 + 9.0.0-beta.25164.2 + 9.0.0-beta.25164.2 + 9.0.0-beta.25164.2 + 9.0.0-beta.25164.2 + 9.0.0-beta.25164.2 + 9.0.0-beta.25164.2 1.4.0 diff --git a/eng/common/core-templates/steps/generate-sbom.yml b/eng/common/core-templates/steps/generate-sbom.yml index d938b60e1bb534..56a090094824f4 100644 --- a/eng/common/core-templates/steps/generate-sbom.yml +++ b/eng/common/core-templates/steps/generate-sbom.yml @@ -38,7 +38,7 @@ steps: PackageName: ${{ parameters.packageName }} BuildDropPath: ${{ parameters.buildDropPath }} PackageVersion: ${{ parameters.packageVersion }} - ManifestDirPath: ${{ parameters.manifestDirPath }} + ManifestDirPath: ${{ parameters.manifestDirPath }}/$(ARTIFACT_NAME) ${{ if ne(parameters.IgnoreDirectories, '') }}: AdditionalComponentDetectorArgs: '--IgnoreDirectories ${{ parameters.IgnoreDirectories }}' diff --git a/eng/common/generate-sbom-prep.ps1 b/eng/common/generate-sbom-prep.ps1 index 3e5c1c74a1c50d..a0c7d792a76fbe 100644 --- a/eng/common/generate-sbom-prep.ps1 +++ b/eng/common/generate-sbom-prep.ps1 @@ -4,18 +4,26 @@ Param( . $PSScriptRoot\pipeline-logging-functions.ps1 +# Normally - we'd listen to the manifest path given, but 1ES templates will overwrite if this level gets uploaded directly +# with their own overwriting ours. So we create it as a sub directory of the requested manifest path. +$ArtifactName = "${env:SYSTEM_STAGENAME}_${env:AGENT_JOBNAME}_SBOM" +$SafeArtifactName = $ArtifactName -replace '["/:<>\\|?@*"() ]', '_' +$SbomGenerationDir = Join-Path $ManifestDirPath $SafeArtifactName + +Write-Host "Artifact name before : $ArtifactName" +Write-Host "Artifact name after : $SafeArtifactName" + Write-Host "Creating dir $ManifestDirPath" + # create directory for sbom manifest to be placed -if (!(Test-Path -path $ManifestDirPath)) +if (!(Test-Path -path $SbomGenerationDir)) { - New-Item -ItemType Directory -path $ManifestDirPath - Write-Host "Successfully created directory $ManifestDirPath" + New-Item -ItemType Directory -path $SbomGenerationDir + Write-Host "Successfully created directory $SbomGenerationDir" } else{ Write-PipelineTelemetryError -category 'Build' "Unable to create sbom folder." } Write-Host "Updating artifact name" -$artifact_name = "${env:SYSTEM_STAGENAME}_${env:AGENT_JOBNAME}_SBOM" -replace '["/:<>\\|?@*"() ]', '_' -Write-Host "Artifact name $artifact_name" -Write-Host "##vso[task.setvariable variable=ARTIFACT_NAME]$artifact_name" +Write-Host "##vso[task.setvariable variable=ARTIFACT_NAME]$SafeArtifactName" diff --git a/eng/common/generate-sbom-prep.sh b/eng/common/generate-sbom-prep.sh index d5c76dc827b496..b8ecca72bbf506 100644 --- a/eng/common/generate-sbom-prep.sh +++ b/eng/common/generate-sbom-prep.sh @@ -14,19 +14,24 @@ done scriptroot="$( cd -P "$( dirname "$source" )" && pwd )" . $scriptroot/pipeline-logging-functions.sh + +# replace all special characters with _, some builds use special characters like : in Agent.Jobname, that is not a permissible name while uploading artifacts. +artifact_name=$SYSTEM_STAGENAME"_"$AGENT_JOBNAME"_SBOM" +safe_artifact_name="${artifact_name//["/:<>\\|?@*$" ]/_}" manifest_dir=$1 -if [ ! -d "$manifest_dir" ] ; then - mkdir -p "$manifest_dir" - echo "Sbom directory created." $manifest_dir +# Normally - we'd listen to the manifest path given, but 1ES templates will overwrite if this level gets uploaded directly +# with their own overwriting ours. So we create it as a sub directory of the requested manifest path. +sbom_generation_dir="$manifest_dir/$safe_artifact_name" + +if [ ! -d "$sbom_generation_dir" ] ; then + mkdir -p "$sbom_generation_dir" + echo "Sbom directory created." $sbom_generation_dir else Write-PipelineTelemetryError -category 'Build' "Unable to create sbom folder." fi -artifact_name=$SYSTEM_STAGENAME"_"$AGENT_JOBNAME"_SBOM" echo "Artifact name before : "$artifact_name -# replace all special characters with _, some builds use special characters like : in Agent.Jobname, that is not a permissible name while uploading artifacts. -safe_artifact_name="${artifact_name//["/:<>\\|?@*$" ]/_}" echo "Artifact name after : "$safe_artifact_name export ARTIFACT_NAME=$safe_artifact_name echo "##vso[task.setvariable variable=ARTIFACT_NAME]$safe_artifact_name" diff --git a/eng/common/templates-official/job/job.yml b/eng/common/templates-official/job/job.yml index 605692d2fb770c..817555505aa602 100644 --- a/eng/common/templates-official/job/job.yml +++ b/eng/common/templates-official/job/job.yml @@ -16,6 +16,7 @@ jobs: parameters: PackageVersion: ${{ parameters.packageVersion }} BuildDropPath: ${{ parameters.buildDropPath }} + ManifestDirPath: $(Build.ArtifactStagingDirectory)/sbom publishArtifacts: false # publish artifacts diff --git a/eng/common/tools.ps1 b/eng/common/tools.ps1 index a46b6deb75986b..22b49e09d09b58 100644 --- a/eng/common/tools.ps1 +++ b/eng/common/tools.ps1 @@ -42,7 +42,7 @@ [bool]$useInstalledDotNetCli = if (Test-Path variable:useInstalledDotNetCli) { $useInstalledDotNetCli } else { $true } # Enable repos to use a particular version of the on-line dotnet-install scripts. -# default URL: https://dotnet.microsoft.com/download/dotnet/scripts/v1/dotnet-install.ps1 +# default URL: https://builds.dotnet.microsoft.com/dotnet/scripts/v1/dotnet-install.ps1 [string]$dotnetInstallScriptVersion = if (Test-Path variable:dotnetInstallScriptVersion) { $dotnetInstallScriptVersion } else { 'v1' } # True to use global NuGet cache instead of restoring packages to repository-local directory. @@ -262,7 +262,7 @@ function GetDotNetInstallScript([string] $dotnetRoot) { if (!(Test-Path $installScript)) { Create-Directory $dotnetRoot $ProgressPreference = 'SilentlyContinue' # Don't display the console progress UI - it's a huge perf hit - $uri = "https://dotnet.microsoft.com/download/dotnet/scripts/$dotnetInstallScriptVersion/dotnet-install.ps1" + $uri = "https://builds.dotnet.microsoft.com/dotnet/scripts/$dotnetInstallScriptVersion/dotnet-install.ps1" Retry({ Write-Host "GET $uri" diff --git a/eng/common/tools.sh b/eng/common/tools.sh index 1159726a10fd6f..01b09b65796c17 100755 --- a/eng/common/tools.sh +++ b/eng/common/tools.sh @@ -54,7 +54,7 @@ warn_as_error=${warn_as_error:-true} use_installed_dotnet_cli=${use_installed_dotnet_cli:-true} # Enable repos to use a particular version of the on-line dotnet-install scripts. -# default URL: https://dotnet.microsoft.com/download/dotnet/scripts/v1/dotnet-install.sh +# default URL: https://builds.dotnet.microsoft.com/dotnet/scripts/v1/dotnet-install.sh dotnetInstallScriptVersion=${dotnetInstallScriptVersion:-'v1'} # True to use global NuGet cache instead of restoring packages to repository-local directory. @@ -295,7 +295,7 @@ function with_retries { function GetDotNetInstallScript { local root=$1 local install_script="$root/dotnet-install.sh" - local install_script_url="https://dotnet.microsoft.com/download/dotnet/scripts/$dotnetInstallScriptVersion/dotnet-install.sh" + local install_script_url="https://builds.dotnet.microsoft.com/dotnet/scripts/$dotnetInstallScriptVersion/dotnet-install.sh" if [[ ! -a "$install_script" ]]; then mkdir -p "$root" diff --git a/global.json b/global.json index 8cf149480ba5d3..2ea15524c4d07a 100644 --- a/global.json +++ b/global.json @@ -1,16 +1,16 @@ { "sdk": { - "version": "9.0.103", + "version": "9.0.104", "allowPrerelease": true, "rollForward": "major" }, "tools": { - "dotnet": "9.0.103" + "dotnet": "9.0.104" }, "msbuild-sdks": { - "Microsoft.DotNet.Arcade.Sdk": "9.0.0-beta.25111.5", - "Microsoft.DotNet.Helix.Sdk": "9.0.0-beta.25111.5", - "Microsoft.DotNet.SharedFramework.Sdk": "9.0.0-beta.25111.5", + "Microsoft.DotNet.Arcade.Sdk": "9.0.0-beta.25164.2", + "Microsoft.DotNet.Helix.Sdk": "9.0.0-beta.25164.2", + "Microsoft.DotNet.SharedFramework.Sdk": "9.0.0-beta.25164.2", "Microsoft.Build.NoTargets": "3.7.0", "Microsoft.Build.Traversal": "3.4.0", "Microsoft.NET.Sdk.IL": "9.0.0-rtm.24511.16" From 19c865bcc1ce8b2b5de9ec41658fc8739385e8a4 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Wed, 2 Apr 2025 12:16:50 -0600 Subject: [PATCH 20/52] [release/9.0-staging] Update dependencies from dotnet/xharness (#113595) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Update dependencies from https://github.com/dotnet/xharness build 20250313.3 Microsoft.DotNet.XHarness.CLI , Microsoft.DotNet.XHarness.TestRunners.Common , Microsoft.DotNet.XHarness.TestRunners.Xunit From Version 9.0.0-prerelease.25113.3 -> To Version 9.0.0-prerelease.25163.3 * Update dependencies from https://github.com/dotnet/xharness build 20250317.9 Microsoft.DotNet.XHarness.CLI , Microsoft.DotNet.XHarness.TestRunners.Common , Microsoft.DotNet.XHarness.TestRunners.Xunit From Version 9.0.0-prerelease.25113.3 -> To Version 9.0.0-prerelease.25167.9 --------- Co-authored-by: dotnet-maestro[bot] Co-authored-by: Carlos Sánchez López <1175054+carlossanlop@users.noreply.github.com> --- .config/dotnet-tools.json | 2 +- eng/Version.Details.xml | 12 ++++++------ eng/Versions.props | 6 +++--- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/.config/dotnet-tools.json b/.config/dotnet-tools.json index 058644afd46753..ff000f6af709b8 100644 --- a/.config/dotnet-tools.json +++ b/.config/dotnet-tools.json @@ -15,7 +15,7 @@ ] }, "microsoft.dotnet.xharness.cli": { - "version": "9.0.0-prerelease.25113.3", + "version": "9.0.0-prerelease.25167.9", "commands": [ "xharness" ] diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 59906ce1092344..d055dd4e0a3c1d 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -320,17 +320,17 @@ https://github.com/dotnet/runtime b030c4dfdfa1bf287f10f96006619a06bc2000ae - + https://github.com/dotnet/xharness - edc52ac68c1bf77e3b107fc8a448674a6d058d8a + 8fa551353a0b2c90afb82c507f23afdf966d57c5 - + https://github.com/dotnet/xharness - edc52ac68c1bf77e3b107fc8a448674a6d058d8a + 8fa551353a0b2c90afb82c507f23afdf966d57c5 - + https://github.com/dotnet/xharness - edc52ac68c1bf77e3b107fc8a448674a6d058d8a + 8fa551353a0b2c90afb82c507f23afdf966d57c5 https://github.com/dotnet/arcade diff --git a/eng/Versions.props b/eng/Versions.props index 9d0f6bb09e0217..27c4808b1b5bbf 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -184,9 +184,9 @@ 1.4.0 17.4.0-preview-20220707-01 - 9.0.0-prerelease.25113.3 - 9.0.0-prerelease.25113.3 - 9.0.0-prerelease.25113.3 + 9.0.0-prerelease.25167.9 + 9.0.0-prerelease.25167.9 + 9.0.0-prerelease.25167.9 9.0.0-alpha.0.25153.2 3.12.0 4.5.0 From 1d5d6cba0b1f458933d36a4213707a3d2addc926 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Wed, 2 Apr 2025 12:18:02 -0600 Subject: [PATCH 21/52] Update dependencies from https://github.com/dotnet/roslyn build 20250323.5 (#113821) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Microsoft.SourceBuild.Intermediate.roslyn , Microsoft.CodeAnalysis , Microsoft.CodeAnalysis.CSharp , Microsoft.Net.Compilers.Toolset From Version 4.12.0-3.25124.2 -> To Version 4.12.0-3.25173.5 Co-authored-by: dotnet-maestro[bot] Co-authored-by: Carlos Sánchez López <1175054+carlossanlop@users.noreply.github.com> --- eng/Version.Details.xml | 8 ++++---- eng/Versions.props | 6 +++--- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index d055dd4e0a3c1d..2c9d1e0b022329 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -360,15 +360,15 @@ https://github.com/dotnet/runtime-assets aedfa03dd61c8e5ef1253d33a245d884669b0476 - + https://github.com/dotnet/roslyn 3f5cf9fbbd91f2047e988801a5142ca1cb6bab45 - + https://github.com/dotnet/roslyn 3f5cf9fbbd91f2047e988801a5142ca1cb6bab45 - + https://github.com/dotnet/roslyn 3f5cf9fbbd91f2047e988801a5142ca1cb6bab45 @@ -381,7 +381,7 @@ 16865ea61910500f1022ad2b96c499e5df02c228 - + https://github.com/dotnet/roslyn 3f5cf9fbbd91f2047e988801a5142ca1cb6bab45 diff --git a/eng/Versions.props b/eng/Versions.props index 27c4808b1b5bbf..5ed5b3fc471653 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -44,9 +44,9 @@ Any tools that contribute to the design-time experience should use the MicrosoftCodeAnalysisVersion_LatestVS property above to ensure they do not break the local dev experience. --> - 4.12.0-3.25124.2 - 4.12.0-3.25124.2 - 4.12.0-3.25124.2 + 4.12.0-3.25173.5 + 4.12.0-3.25173.5 + 4.12.0-3.25173.5 <_AOTBuildCommand Condition="'$(ContinuousIntegrationBuild)' != 'true'">$(_AOTBuildCommand) /p:RuntimeSrcDir=$(RepoRoot) /p:RuntimeConfig=$(Configuration) - <_AOTBuildCommand>$(_AOTBuildCommand) /p:XHARNESS_EXECUTION_DIR="$XHARNESS_EXECUTION_DIR" /p:RunAOTCompilation=$(RunAOTCompilation) /p:UseNativeAOTRuntime=$(UseNativeAOTRuntime) /p:TargetOS=$(TargetOS) /p:TargetArchitecture=$(TargetArchitecture) /p:MonoForceInterpreter=$(MonoForceInterpreter) /p:MonoEnableLLVM=true /p:DevTeamProvisioning=$(DevTeamProvisioning) /p:UsePortableRuntimePack=true /p:Configuration=$(Configuration) /p:EnableAggressiveTrimming=$(EnableAggressiveTrimming) + <_AOTBuildCommand>$(_AOTBuildCommand) /p:XHARNESS_EXECUTION_DIR="$XHARNESS_EXECUTION_DIR" /p:RunAOTCompilation=$(RunAOTCompilation) /p:UseNativeAOTRuntime=$(UseNativeAOTRuntime) /p:TargetOS=$(TargetOS) /p:TargetArchitecture=$(TargetArchitecture) /p:MonoForceInterpreter=$(MonoForceInterpreter) /p:MonoEnableLLVM=true /p:DevTeamProvisioning=$(DevTeamProvisioning) /p:UsePortableRuntimePack=$(UsePortableRuntimePack) /p:Configuration=$(Configuration) <_AOTBuildCommand Condition="'$(NativeLib)' != ''">$(_AOTBuildCommand) /p:NativeLib=$(NativeLib) /p:BundlesResources=$(BundlesResources) /p:ForceLibraryModeGenerateAppBundle=$(ForceLibraryModeGenerateAppBundle) <_AOTBuildCommand>$(_AOTBuildCommand) @@ -77,8 +77,6 @@ - @@ -156,12 +154,6 @@ <_AppleItemsToPass Include="@(ReferenceExtraPathFiles->'%(FileName)%(Extension)')" OriginalItemName__="AppleReferenceExtraPathFiles" /> - <_AppleItemsToPass Include="@(RuntimeHostConfigurationOption)" - OriginalItemName__="_AppleUsedRuntimeHostConfigurationOption" /> - - <_AppleItemsToPass Include="@(TrimmerRootAssembly)" - OriginalItemName__="TrimmerRootAssembly" /> - - + + true true $(NoWarn);IL2103;IL2025;IL2111;IL2122 - false false - false - false false - false + + + + + false + <_DefaultValueAttributeSupport Condition="'$(OverrideDefaultValueAndDesignerHostSupport)' == 'true'">true + <_DesignerHostSupport Condition="'$(OverrideDefaultValueAndDesignerHostSupport)' == 'true'">true + + + + diff --git a/src/mono/msbuild/apple/data/ProxyProjectForAOTOnHelix.proj b/src/mono/msbuild/apple/data/ProxyProjectForAOTOnHelix.proj index 2847f567f469a1..2035333122a2f0 100644 --- a/src/mono/msbuild/apple/data/ProxyProjectForAOTOnHelix.proj +++ b/src/mono/msbuild/apple/data/ProxyProjectForAOTOnHelix.proj @@ -7,7 +7,6 @@ $([MSBuild]::NormalizeDirectory($(TestRootDir), '..', 'extraFiles')) $([MSBuild]::NormalizeDirectory($(TestRootDir), '..', 'obj')) - ConfigureTrimming;_AdjustTrimmedAssembliesToBundle;$(AppleBuildDependsOn) _PublishRuntimePack;_PrepareForAppleBuildAppOnHelix;$(AppleBuildDependsOn);_AfterAppleBuildOnHelix true @@ -71,7 +70,7 @@ - + <_ExtraFiles Include="$(ExtraFilesPath)**\*" /> @@ -95,14 +94,6 @@ - - - - - - - - - - - - - - - - diff --git a/src/tests/FunctionalTests/tvOS/Device/AOT/tvOS.Device.Aot.Test.csproj b/src/tests/FunctionalTests/tvOS/Device/AOT/tvOS.Device.Aot.Test.csproj index 0e2f71fe06b3d0..92271eb0c889ce 100644 --- a/src/tests/FunctionalTests/tvOS/Device/AOT/tvOS.Device.Aot.Test.csproj +++ b/src/tests/FunctionalTests/tvOS/Device/AOT/tvOS.Device.Aot.Test.csproj @@ -19,11 +19,6 @@ false - - - - - From fe141803ffce70da4070a771c7a261b92544cdeb Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 3 Apr 2025 09:57:10 -0700 Subject: [PATCH 25/52] [release/9.0-staging] Fix VS div-by-0 in DacEnumerableHashTable code (#113892) * Fix VS div-by-0 in DacEnumerableHashTable code * Code review feedback --------- Co-authored-by: Mike McLaughlin --- src/coreclr/vm/dacenumerablehash.inl | 69 +++++++++++++++------------- 1 file changed, 37 insertions(+), 32 deletions(-) diff --git a/src/coreclr/vm/dacenumerablehash.inl b/src/coreclr/vm/dacenumerablehash.inl index c2522e156647e4..7a615da7616fec 100644 --- a/src/coreclr/vm/dacenumerablehash.inl +++ b/src/coreclr/vm/dacenumerablehash.inl @@ -345,45 +345,50 @@ DPTR(VALUE) DacEnumerableHashTable::BaseFindFirstEntryByHash do { DWORD cBuckets = GetLength(curBuckets); +// DAC hardening for invalid process state +#ifdef DACCESS_COMPILE + if (cBuckets > 0) +#endif + { + // Compute which bucket the entry belongs in based on the hash. + // +2 to skip "length" and "next" slots + DWORD dwBucket = iHash % cBuckets + SKIP_SPECIAL_SLOTS; - // Compute which bucket the entry belongs in based on the hash. - // +2 to skip "length" and "next" slots - DWORD dwBucket = iHash % cBuckets + SKIP_SPECIAL_SLOTS; - - // Point at the first entry in the bucket chain that stores entries with the given hash code. - PTR_VolatileEntry pEntry = VolatileLoadWithoutBarrier(&curBuckets[dwBucket]); - TADDR expectedEndSentinel = ComputeEndSentinel(BaseEndSentinel(curBuckets), dwBucket); + // Point at the first entry in the bucket chain that stores entries with the given hash code. + PTR_VolatileEntry pEntry = VolatileLoadWithoutBarrier(&curBuckets[dwBucket]); + TADDR expectedEndSentinel = ComputeEndSentinel(BaseEndSentinel(curBuckets), dwBucket); - // Walk the bucket chain one entry at a time. - while (!IsEndSentinel(pEntry)) - { - if (pEntry->m_iHashValue == iHash) + // Walk the bucket chain one entry at a time. + while (!IsEndSentinel(pEntry)) { - // We've found our match. + if (pEntry->m_iHashValue == iHash) + { + // We've found our match. - // Record our current search state into the provided context so that a subsequent call to - // BaseFindNextEntryByHash can pick up the search where it left off. - pContext->m_pEntry = dac_cast(pEntry); - pContext->m_curBuckets = curBuckets; - pContext->m_expectedEndSentinel = dac_cast(expectedEndSentinel); + // Record our current search state into the provided context so that a subsequent call to + // BaseFindNextEntryByHash can pick up the search where it left off. + pContext->m_pEntry = dac_cast(pEntry); + pContext->m_curBuckets = curBuckets; + pContext->m_expectedEndSentinel = dac_cast(expectedEndSentinel); - // Return the address of the sub-classes' embedded entry structure. - return VALUE_FROM_VOLATILE_ENTRY(pEntry); - } + // Return the address of the sub-classes' embedded entry structure. + return VALUE_FROM_VOLATILE_ENTRY(pEntry); + } - // Move to the next entry in the chain. - pEntry = VolatileLoadWithoutBarrier(&pEntry->m_pNextEntry); - } + // Move to the next entry in the chain. + pEntry = VolatileLoadWithoutBarrier(&pEntry->m_pNextEntry); + } - if (!AcceptableEndSentinel(pEntry, expectedEndSentinel)) - { - // If we hit this logic, we've managed to hit a case where the linked list was in the process of being - // moved to a new set of buckets while we were walking the list, and we walked part of the list of the - // bucket in the old hash table (which is fine), and part of the list in the new table, which may not - // be the correct bucket to walk. Most notably, the situation that can cause this will cause the list in - // the old bucket to be missing items. Restart the lookup, as the linked list is unlikely to still be under - // edit a second time. - continue; + if (!AcceptableEndSentinel(pEntry, expectedEndSentinel)) + { + // If we hit this logic, we've managed to hit a case where the linked list was in the process of being + // moved to a new set of buckets while we were walking the list, and we walked part of the list of the + // bucket in the old hash table (which is fine), and part of the list in the new table, which may not + // be the correct bucket to walk. Most notably, the situation that can cause this will cause the list in + // the old bucket to be missing items. Restart the lookup, as the linked list is unlikely to still be under + // edit a second time. + continue; + } } // in a rare case if resize is in progress, look in the new table as well. From 577076b5a4f4ee506ca81b85948b615e0a224b74 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Thu, 3 Apr 2025 11:04:28 -0600 Subject: [PATCH 26/52] [release/9.0-staging] Update dependencies from dotnet/hotreload-utils (#113517) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Update dependencies from https://github.com/dotnet/hotreload-utils build 20250313.2 Microsoft.DotNet.HotReload.Utils.Generator.BuildTool From Version 9.0.0-alpha.0.25153.2 -> To Version 9.0.0-alpha.0.25163.2 * Update dependencies from https://github.com/dotnet/hotreload-utils build 20250324.2 Microsoft.DotNet.HotReload.Utils.Generator.BuildTool From Version 9.0.0-alpha.0.25153.2 -> To Version 9.0.0-alpha.0.25174.2 --------- Co-authored-by: dotnet-maestro[bot] Co-authored-by: Carlos Sánchez López <1175054+carlossanlop@users.noreply.github.com> --- eng/Version.Details.xml | 4 ++-- eng/Versions.props | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 2c9d1e0b022329..8adc4ab8d53f66 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -352,9 +352,9 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-optimization 9d7532585ce71e30ab55f0364d3cecccaf0775d1 - + https://github.com/dotnet/hotreload-utils - fd21b154f1152569e7fa49a4e030927eccbf4aaa + d065cbe6ec82cbf0c78cbd240d8b91bccf117a0f https://github.com/dotnet/runtime-assets diff --git a/eng/Versions.props b/eng/Versions.props index 5ed5b3fc471653..b74b345e4eff23 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -187,7 +187,7 @@ 9.0.0-prerelease.25167.9 9.0.0-prerelease.25167.9 9.0.0-prerelease.25167.9 - 9.0.0-alpha.0.25153.2 + 9.0.0-alpha.0.25174.2 3.12.0 4.5.0 6.0.0 From 4eccf2f0f51fdb513e36489b58857d96af228572 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Thu, 3 Apr 2025 11:04:52 -0600 Subject: [PATCH 27/52] Update dependencies from https://github.com/dotnet/roslyn-analyzers build 20250323.3 (#113822) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Microsoft.CodeAnalysis.Analyzers , Microsoft.CodeAnalysis.NetAnalyzers From Version 3.11.0-beta1.25123.3 -> To Version 3.11.0-beta1.25173.3 Co-authored-by: dotnet-maestro[bot] Co-authored-by: Carlos Sánchez López <1175054+carlossanlop@users.noreply.github.com> --- eng/Version.Details.xml | 4 ++-- eng/Versions.props | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 8adc4ab8d53f66..d534ee40df49c6 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -372,11 +372,11 @@ https://github.com/dotnet/roslyn 3f5cf9fbbd91f2047e988801a5142ca1cb6bab45 - + https://github.com/dotnet/roslyn-analyzers 16865ea61910500f1022ad2b96c499e5df02c228 - + https://github.com/dotnet/roslyn-analyzers 16865ea61910500f1022ad2b96c499e5df02c228 diff --git a/eng/Versions.props b/eng/Versions.props index b74b345e4eff23..39865ec7e39733 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -36,8 +36,8 @@ - 3.11.0-beta1.25123.3 - 9.0.0-preview.25123.3 + 3.11.0-beta1.25173.3 + 9.0.0-preview.25173.3 + - + https://github.com/dotnet/sdk - 346d06baea1cf7113e181e779b056b955973c633 + 8d515d2a57e0c45a81795d7b133300fd8944f3f9 diff --git a/eng/Versions.props b/eng/Versions.props index 39865ec7e39733..9ae486b993a32e 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -83,7 +83,7 @@ 0.2.0 - 9.0.104 + 9.0.105 9.0.0-beta.25164.2 9.0.0-beta.25164.2 From 400abb374b1a00f26acd25f1bdadc258bf206d4c Mon Sep 17 00:00:00 2001 From: vseanreesermsft <78103370+vseanreesermsft@users.noreply.github.com> Date: Thu, 3 Apr 2025 10:06:34 -0700 Subject: [PATCH 29/52] Update branding to 9.0.5 (#114162) --- eng/Versions.props | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/eng/Versions.props b/eng/Versions.props index 8cdb4c0e813716..1d8652020b706d 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -1,11 +1,11 @@ - 9.0.4 + 9.0.5 9 0 - 4 + 5 9.0.100 8.0.$([MSBuild]::Add($(PatchVersion),11)) 7.0.20 From 61286199e9baf51ff405be507f30503e55d0b626 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Thu, 3 Apr 2025 11:12:07 -0600 Subject: [PATCH 30/52] [release/9.0] Update dependencies from dotnet/emsdk (#114185) * Update dependencies from https://github.com/dotnet/emsdk build 20250402.2 Microsoft.SourceBuild.Intermediate.emsdk , Microsoft.NET.Workload.Emscripten.Current.Manifest-9.0.100 , Microsoft.NET.Workload.Emscripten.Current.Manifest-9.0.100.Transport From Version 9.0.4-servicing.25177.1 -> To Version 9.0.4-servicing.25202.2 * Update dependencies from https://github.com/dotnet/emsdk build 20250403.2 Microsoft.SourceBuild.Intermediate.emsdk , Microsoft.NET.Workload.Emscripten.Current.Manifest-9.0.100 , Microsoft.NET.Workload.Emscripten.Current.Manifest-9.0.100.Transport From Version 9.0.4-servicing.25177.1 -> To Version 9.0.5-servicing.25203.2 --------- Co-authored-by: dotnet-maestro[bot] --- NuGet.config | 2 +- eng/Version.Details.xml | 12 ++++++------ eng/Versions.props | 4 ++-- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/NuGet.config b/NuGet.config index b650c892d811e4..ce16c36d7a40be 100644 --- a/NuGet.config +++ b/NuGet.config @@ -9,7 +9,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 79ff13f76c3179..e89c6a04e5fc55 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -64,18 +64,18 @@ 8debcd23b73a27992a5fdb2229f546e453619d11 - + https://github.com/dotnet/emsdk - b8d8fec81291264a825ba4c803ad50577b9d2265 + 3df5eac9e2dfcf5ff544c1a83f2a07ce9270b2f6 - + https://github.com/dotnet/emsdk - b8d8fec81291264a825ba4c803ad50577b9d2265 + 3df5eac9e2dfcf5ff544c1a83f2a07ce9270b2f6 - + https://github.com/dotnet/emsdk - b8d8fec81291264a825ba4c803ad50577b9d2265 + 3df5eac9e2dfcf5ff544c1a83f2a07ce9270b2f6 diff --git a/eng/Versions.props b/eng/Versions.props index 1d8652020b706d..f268a063e363ae 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -243,8 +243,8 @@ Note: when the name is updated, make sure to update dependency name in eng/pipelines/common/xplat-setup.yml like - DarcDependenciesChanged.Microsoft_NET_Workload_Emscripten_Current_Manifest-9_0_100_Transport --> - 9.0.4-servicing.25177.1 - 9.0.4 + 9.0.5-servicing.25203.2 + 9.0.5 $(MicrosoftNETWorkloadEmscriptenCurrentManifest90100Version) 1.1.87-gba258badda From 5c4ffe388c54b1929be36817caa17a5929efc821 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 4 Apr 2025 12:18:58 +0200 Subject: [PATCH 31/52] [release/9.0-staging] Revert disabling of tests for HTTP servers (#114207) * Revert "Disable tests using http://corefx-net-http11.azurewebsites.net (#111235)" This reverts commit de8e1350ff32875098389bea212fcebc8d598b85. * Revert "Disable more tests dependent on http://corefx-net-http11.azurewebsites.net (#111354)" This reverts commit 9fea44166064fb9ca6ef1bab9362f24c47512ae1. --------- Co-authored-by: Radek Zikmund --- .../tests/System/Net/Configuration.Http.cs | 39 +++---------------- .../System/Net/Configuration.WebSockets.cs | 13 ++----- .../HttpClientHandlerTest.RemoteServer.cs | 21 +++++----- ...ttpClientHandlerTest.ServerCertificates.cs | 1 - .../FunctionalTests/ServerCertificateTest.cs | 1 - .../FunctionalTests/WinHttpHandlerTest.cs | 2 +- .../tests/FunctionalTests/MetricsTest.cs | 4 +- 7 files changed, 22 insertions(+), 59 deletions(-) diff --git a/src/libraries/Common/tests/System/Net/Configuration.Http.cs b/src/libraries/Common/tests/System/Net/Configuration.Http.cs index 310e0c801e593a..15d426ce9bab42 100644 --- a/src/libraries/Common/tests/System/Net/Configuration.Http.cs +++ b/src/libraries/Common/tests/System/Net/Configuration.Http.cs @@ -64,16 +64,9 @@ public static Uri[] GetEchoServerList() if (PlatformDetection.IsFirefox) { // https://github.com/dotnet/runtime/issues/101115 - // [ActiveIssue("https://github.com/dotnet/runtime/issues/110578)] - // return [RemoteEchoServer]; - return []; + return [RemoteEchoServer]; } - return [ - // [ActiveIssue("https://github.com/dotnet/runtime/issues/110578)] - // RemoteEchoServer, - SecureRemoteEchoServer, - Http2RemoteEchoServer - ]; + return [RemoteEchoServer, SecureRemoteEchoServer, Http2RemoteEchoServer]; } public static readonly Uri RemoteVerifyUploadServer = new Uri("http://" + Host + "/" + VerifyUploadHandler); @@ -89,20 +82,8 @@ public static Uri[] GetEchoServerList() public static Uri RemoteLoopServer => new Uri("ws://" + RemoteLoopHost + "/" + RemoteLoopHandler); public static readonly object[][] EchoServers = GetEchoServerList().Select(x => new object[] { x }).ToArray(); - public static readonly object[][] VerifyUploadServers = { - // [ActiveIssue("https://github.com/dotnet/runtime/issues/110578)] - // new object[] { RemoteVerifyUploadServer }, - new object[] { SecureRemoteVerifyUploadServer }, - new object[] { Http2RemoteVerifyUploadServer } - }; - - public static readonly object[][] CompressedServers = { - // [ActiveIssue("https://github.com/dotnet/runtime/issues/110578)] - // new object[] { RemoteDeflateServer }, - new object[] { RemoteGZipServer }, - new object[] { Http2RemoteDeflateServer }, - new object[] { Http2RemoteGZipServer } - }; + public static readonly object[][] VerifyUploadServers = { new object[] { RemoteVerifyUploadServer }, new object[] { SecureRemoteVerifyUploadServer }, new object[] { Http2RemoteVerifyUploadServer } }; + public static readonly object[][] CompressedServers = { new object[] { RemoteDeflateServer }, new object[] { RemoteGZipServer }, new object[] { Http2RemoteDeflateServer }, new object[] { Http2RemoteGZipServer } }; public static readonly object[][] Http2Servers = { new object[] { new Uri("https://" + Http2Host) } }; public static readonly object[][] Http2NoPushServers = { new object[] { new Uri("https://" + Http2NoPushHost) } }; @@ -117,17 +98,9 @@ public static IEnumerable GetRemoteServers() if (PlatformDetection.IsFirefox) { // https://github.com/dotnet/runtime/issues/101115 - // [ActiveIssue("https://github.com/dotnet/runtime/issues/110578)] - // return new RemoteServer[] { RemoteHttp11Server }; - return []; + return new RemoteServer[] { RemoteHttp11Server }; } - return new RemoteServer[] - { - // [ActiveIssue("https://github.com/dotnet/runtime/issues/110578)] - // RemoteHttp11Server, - RemoteSecureHttp11Server, - RemoteHttp2Server - }; + return new RemoteServer[] { RemoteHttp11Server, RemoteSecureHttp11Server, RemoteHttp2Server }; } public static readonly IEnumerable RemoteServersMemberData = GetRemoteServers().Select(s => new object[] { s }); diff --git a/src/libraries/Common/tests/System/Net/Configuration.WebSockets.cs b/src/libraries/Common/tests/System/Net/Configuration.WebSockets.cs index d0f1eab545177e..c5686be67b4ef9 100644 --- a/src/libraries/Common/tests/System/Net/Configuration.WebSockets.cs +++ b/src/libraries/Common/tests/System/Net/Configuration.WebSockets.cs @@ -28,14 +28,11 @@ public static object[][] GetEchoServers() { // https://github.com/dotnet/runtime/issues/101115 return new object[][] { - // [ActiveIssue("https://github.com/dotnet/runtime/issues/110578)] - // new object[] { RemoteEchoServer }, - + new object[] { RemoteEchoServer }, }; } return new object[][] { - // [ActiveIssue("https://github.com/dotnet/runtime/issues/110578)] - // new object[] { RemoteEchoServer }, + new object[] { RemoteEchoServer }, new object[] { SecureRemoteEchoServer }, }; } @@ -46,13 +43,11 @@ public static object[][] GetEchoHeadersServers() { // https://github.com/dotnet/runtime/issues/101115 return new object[][] { - // [ActiveIssue("https://github.com/dotnet/runtime/issues/110578)] - // new object[] { RemoteEchoHeadersServer }, + new object[] { RemoteEchoHeadersServer }, }; } return new object[][] { - // [ActiveIssue("https://github.com/dotnet/runtime/issues/110578)] - // new object[] { RemoteEchoHeadersServer }, + new object[] { RemoteEchoHeadersServer }, new object[] { SecureRemoteEchoHeadersServer }, }; } diff --git a/src/libraries/Common/tests/System/Net/Http/HttpClientHandlerTest.RemoteServer.cs b/src/libraries/Common/tests/System/Net/Http/HttpClientHandlerTest.RemoteServer.cs index 733d1a55677fd8..c9cdd591bb4016 100644 --- a/src/libraries/Common/tests/System/Net/Http/HttpClientHandlerTest.RemoteServer.cs +++ b/src/libraries/Common/tests/System/Net/Http/HttpClientHandlerTest.RemoteServer.cs @@ -71,7 +71,7 @@ public async Task UseDefaultCredentials_SetToFalseAndServerNeedsAuth_StatusCodeU handler.UseDefaultCredentials = false; using (HttpClient client = CreateHttpClient(handler)) { - Uri uri = Configuration.Http.RemoteSecureHttp11Server.NegotiateAuthUriForDefaultCreds; + Uri uri = Configuration.Http.RemoteHttp11Server.NegotiateAuthUriForDefaultCreds; _output.WriteLine("Uri: {0}", uri); using (HttpResponseMessage response = await client.GetAsync(uri)) { @@ -602,9 +602,9 @@ public async Task PostAsync_CallMethod_EmptyContent(Configuration.Http.RemoteSer public static IEnumerable ExpectContinueVersion() { return - from expect in new bool?[] { true, false, null } - from version in new Version[] { new Version(1, 0), new Version(1, 1), new Version(2, 0) } - select new object[] { expect, version }; + from expect in new bool?[] {true, false, null} + from version in new Version[] {new Version(1, 0), new Version(1, 1), new Version(2, 0)} + select new object[] {expect, version}; } [OuterLoop("Uses external servers", typeof(PlatformDetection), nameof(PlatformDetection.LocalEchoServerIsNotAvailable))] @@ -776,8 +776,7 @@ public async Task SendAsync_SendRequestUsingMethodToEchoServerWithNoContent_Meth { var request = new HttpRequestMessage( new HttpMethod(method), - serverUri) - { Version = UseVersion }; + serverUri) { Version = UseVersion }; using (HttpResponseMessage response = await client.SendAsync(TestAsync, request)) { @@ -803,8 +802,7 @@ public async Task SendAsync_SendRequestUsingMethodToEchoServerWithContent_Succes { var request = new HttpRequestMessage( new HttpMethod(method), - serverUri) - { Version = UseVersion }; + serverUri) { Version = UseVersion }; request.Content = new StringContent(ExpectedContent); using (HttpResponseMessage response = await client.SendAsync(TestAsync, request)) { @@ -983,7 +981,6 @@ public async Task GetAsync_AllowAutoRedirectTrue_RedirectFromHttpToHttp_StatusCo [OuterLoop("Uses external servers")] [Fact] [ActiveIssue("https://github.com/dotnet/runtime/issues/55083", TestPlatforms.Browser)] - [ActiveIssue("https://github.com/dotnet/runtime/issues/110578")] public async Task GetAsync_AllowAutoRedirectTrue_RedirectFromHttpToHttps_StatusCodeOK() { HttpClientHandler handler = CreateHttpClientHandler(); @@ -1068,9 +1065,9 @@ public async Task GetAsync_MaxAutomaticRedirectionsNServerHops_ThrowsIfTooMany(i handler.MaxAutomaticRedirections = maxHops; using (HttpClient client = CreateHttpClient(handler)) { - Task t = client.GetAsync(Configuration.Http.RemoteSecureHttp11Server.RedirectUriForDestinationUri( + Task t = client.GetAsync(Configuration.Http.RemoteHttp11Server.RedirectUriForDestinationUri( statusCode: 302, - destinationUri: Configuration.Http.RemoteSecureHttp11Server.EchoUri, + destinationUri: Configuration.Http.RemoteHttp11Server.EchoUri, hops: hops)); if (hops <= maxHops) @@ -1078,7 +1075,7 @@ public async Task GetAsync_MaxAutomaticRedirectionsNServerHops_ThrowsIfTooMany(i using (HttpResponseMessage response = await t) { Assert.Equal(HttpStatusCode.OK, response.StatusCode); - Assert.Equal(Configuration.Http.SecureRemoteEchoServer, response.RequestMessage.RequestUri); + Assert.Equal(Configuration.Http.RemoteEchoServer, response.RequestMessage.RequestUri); } } else diff --git a/src/libraries/Common/tests/System/Net/Http/HttpClientHandlerTest.ServerCertificates.cs b/src/libraries/Common/tests/System/Net/Http/HttpClientHandlerTest.ServerCertificates.cs index 95ba0752a5daa4..4dc2eb3fcfdeaf 100644 --- a/src/libraries/Common/tests/System/Net/Http/HttpClientHandlerTest.ServerCertificates.cs +++ b/src/libraries/Common/tests/System/Net/Http/HttpClientHandlerTest.ServerCertificates.cs @@ -97,7 +97,6 @@ public async Task NoCallback_ValidCertificate_SuccessAndExpectedPropertyBehavior [OuterLoop("Uses external servers")] [Fact] - [ActiveIssue("https://github.com/dotnet/runtime/issues/110578")] public async Task UseCallback_NotSecureConnection_CallbackNotCalled() { HttpClientHandler handler = CreateHttpClientHandler(); diff --git a/src/libraries/System.Net.Http.WinHttpHandler/tests/FunctionalTests/ServerCertificateTest.cs b/src/libraries/System.Net.Http.WinHttpHandler/tests/FunctionalTests/ServerCertificateTest.cs index 4f7d573df68b09..df73619bf8dad8 100644 --- a/src/libraries/System.Net.Http.WinHttpHandler/tests/FunctionalTests/ServerCertificateTest.cs +++ b/src/libraries/System.Net.Http.WinHttpHandler/tests/FunctionalTests/ServerCertificateTest.cs @@ -32,7 +32,6 @@ public async Task NoCallback_ValidCertificate_CallbackNotCalled() [OuterLoop] [Fact] - [ActiveIssue("https://github.com/dotnet/runtime/issues/110578")] public async Task UseCallback_NotSecureConnection_CallbackNotCalled() { var handler = new WinHttpHandler(); diff --git a/src/libraries/System.Net.Http.WinHttpHandler/tests/FunctionalTests/WinHttpHandlerTest.cs b/src/libraries/System.Net.Http.WinHttpHandler/tests/FunctionalTests/WinHttpHandlerTest.cs index cc2b97bdde6da7..0abe14c11887bf 100644 --- a/src/libraries/System.Net.Http.WinHttpHandler/tests/FunctionalTests/WinHttpHandlerTest.cs +++ b/src/libraries/System.Net.Http.WinHttpHandler/tests/FunctionalTests/WinHttpHandlerTest.cs @@ -55,7 +55,7 @@ public async Task GetAsync_RedirectResponseHasCookie_CookieSentToFinalUri( string cookieName, string cookieValue) { - Uri uri = System.Net.Test.Common.Configuration.Http.RemoteSecureHttp11Server.RedirectUriForDestinationUri(302, System.Net.Test.Common.Configuration.Http.SecureRemoteEchoServer, 1); + Uri uri = System.Net.Test.Common.Configuration.Http.RemoteHttp11Server.RedirectUriForDestinationUri(302, System.Net.Test.Common.Configuration.Http.RemoteEchoServer, 1); var handler = new WinHttpHandler(); handler.WindowsProxyUsePolicy = WindowsProxyUsePolicy.UseWinInetProxy; handler.CookieUsePolicy = cookieUsePolicy; diff --git a/src/libraries/System.Net.Http/tests/FunctionalTests/MetricsTest.cs b/src/libraries/System.Net.Http/tests/FunctionalTests/MetricsTest.cs index 473be2724c65da..cb8a2b7c833556 100644 --- a/src/libraries/System.Net.Http/tests/FunctionalTests/MetricsTest.cs +++ b/src/libraries/System.Net.Http/tests/FunctionalTests/MetricsTest.cs @@ -381,7 +381,7 @@ public async Task ExternalServer_DurationMetrics_Recorded() using InstrumentRecorder openConnectionsRecorder = SetupInstrumentRecorder(InstrumentNames.OpenConnections); Uri uri = UseVersion == HttpVersion.Version11 - ? Test.Common.Configuration.Http.RemoteSecureHttp11Server.EchoUri + ? Test.Common.Configuration.Http.RemoteHttp11Server.EchoUri : Test.Common.Configuration.Http.RemoteHttp2Server.EchoUri; IPAddress[] addresses = await Dns.GetHostAddressesAsync(uri.Host); addresses = addresses.Union(addresses.Select(a => a.MapToIPv6())).ToArray(); @@ -1259,7 +1259,7 @@ public Task RequestDuration_Redirect_RecordedForEachHttpSpan() }); }, options: new GenericLoopbackOptions() { UseSsl = true }); - }, options: new GenericLoopbackOptions() { UseSsl = false }); + }, options: new GenericLoopbackOptions() { UseSsl = false}); } [Fact] From a9c314d02d5fe3dae90c97862627317925e9cb23 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 4 Apr 2025 20:37:39 -0500 Subject: [PATCH 32/52] Fix build break with cmake 4.0 (#114278) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit cmake 4.0 no longer sets the CMAKE_OSX_SYSROOT variable for macOS targets: https://cmake.org/cmake/help/v4.0/release/4.0.html#other-changes > Builds targeting macOS no longer choose any SDK or pass an -isysroot flag to the compiler by default. Instead, compilers are expected to choose a default macOS SDK on their own. In order to use a compiler that does not do this, users must now specify -DCMAKE_OSX_SYSROOT=macosx when configuring their build. We need to stop passing the variable to swiftc in that case and rely on the default behavior. Co-authored-by: Alexander Köplinger --- .../CMakeLists.txt | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/native/libs/System.Security.Cryptography.Native.Apple/CMakeLists.txt b/src/native/libs/System.Security.Cryptography.Native.Apple/CMakeLists.txt index 84615493f4495c..bc333326b9837e 100644 --- a/src/native/libs/System.Security.Cryptography.Native.Apple/CMakeLists.txt +++ b/src/native/libs/System.Security.Cryptography.Native.Apple/CMakeLists.txt @@ -77,9 +77,14 @@ if (NOT SWIFT_COMPILER_TARGET) endif() endif() +set(SWIFT_SDK_FLAG "") +if (CMAKE_OSX_SYSROOT) + set(SWIFT_SDK_FLAG -sdk ${CMAKE_OSX_SYSROOT}) +endif() + add_custom_command( OUTPUT pal_swiftbindings.o - COMMAND xcrun swiftc -emit-object -static -parse-as-library -enable-library-evolution -g ${SWIFT_OPTIMIZATION_FLAG} -runtime-compatibility-version none -sdk ${CMAKE_OSX_SYSROOT} -target ${SWIFT_COMPILER_TARGET} ${CMAKE_CURRENT_SOURCE_DIR}/pal_swiftbindings.swift -o pal_swiftbindings.o + COMMAND xcrun swiftc -emit-object -static -parse-as-library -enable-library-evolution -g ${SWIFT_OPTIMIZATION_FLAG} -runtime-compatibility-version none ${SWIFT_SDK_FLAG} -target ${SWIFT_COMPILER_TARGET} ${CMAKE_CURRENT_SOURCE_DIR}/pal_swiftbindings.swift -o pal_swiftbindings.o MAIN_DEPENDENCY ${CMAKE_CURRENT_SOURCE_DIR}/pal_swiftbindings.swift COMMENT "Compiling Swift file pal_swiftbindings.swift" ) From 54076862e7025f72b1dc9115b68e54c6c3cd0f67 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20K=C3=B6plinger?= Date: Tue, 8 Apr 2025 09:06:30 +0200 Subject: [PATCH 33/52] Fix inadvertently upgrading compiler warnings to errors (#114323) (#114331) I noticed this while looking at an issue in the 9.0 branch with latest clang which runs into a couple warnings fixed in main with https://github.com/dotnet/runtime/pull/108888. We intentionally don't set `-Werror` in release branches to avoid breaking the build when newer compilers add warnings via https://github.com/dotnet/runtime/blob/37e4d45236e68946db9d264593aa31a9c00534bc/eng/native/configurecompiler.cmake#L564-L567 However this didn't work because msbuild's WarnAsError was still reading the console output of the native build and upgrading any line with "warning: " to an msbuild error and breaking the build. Suppress this by setting IgnoreStandardErrorWarningFormat="true" on the Exec call. We already did this in the coreclr and mono runtime builds, we just missed it in libs.native. --- src/native/libs/build-native.proj | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/native/libs/build-native.proj b/src/native/libs/build-native.proj index 36bfccbfe07ad8..a60ddf43f4000a 100644 --- a/src/native/libs/build-native.proj +++ b/src/native/libs/build-native.proj @@ -70,7 +70,7 @@ - + - + Date: Fri, 11 Apr 2025 10:17:51 -0700 Subject: [PATCH 34/52] [release/9.0] Update dependencies from dotnet/emsdk (#114299) * Update dependencies from https://github.com/dotnet/emsdk build 20250404.2 Microsoft.SourceBuild.Intermediate.emsdk , Microsoft.NET.Workload.Emscripten.Current.Manifest-9.0.100 , Microsoft.NET.Workload.Emscripten.Current.Manifest-9.0.100.Transport From Version 9.0.5-servicing.25203.2 -> To Version 9.0.5-servicing.25204.2 * Update dependencies from https://github.com/dotnet/emsdk build 20250407.3 Microsoft.SourceBuild.Intermediate.emsdk , Microsoft.NET.Workload.Emscripten.Current.Manifest-9.0.100 , Microsoft.NET.Workload.Emscripten.Current.Manifest-9.0.100.Transport From Version 9.0.5-servicing.25203.2 -> To Version 9.0.5-servicing.25207.3 * Update dependencies from https://github.com/dotnet/emsdk build 20250409.3 Microsoft.SourceBuild.Intermediate.emsdk , Microsoft.NET.Workload.Emscripten.Current.Manifest-9.0.100 , Microsoft.NET.Workload.Emscripten.Current.Manifest-9.0.100.Transport From Version 9.0.5-servicing.25203.2 -> To Version 9.0.5-servicing.25209.3 --------- Co-authored-by: dotnet-maestro[bot] --- NuGet.config | 2 +- eng/Version.Details.xml | 10 +++++----- eng/Versions.props | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/NuGet.config b/NuGet.config index ce16c36d7a40be..33e76bd44d00c2 100644 --- a/NuGet.config +++ b/NuGet.config @@ -9,7 +9,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index e89c6a04e5fc55..cef951d29698bb 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -64,18 +64,18 @@ 8debcd23b73a27992a5fdb2229f546e453619d11 - + https://github.com/dotnet/emsdk - 3df5eac9e2dfcf5ff544c1a83f2a07ce9270b2f6 + 3cddc1fe20f0a0c08a1c3942a82c46413e5cc00a https://github.com/dotnet/emsdk - 3df5eac9e2dfcf5ff544c1a83f2a07ce9270b2f6 + 3cddc1fe20f0a0c08a1c3942a82c46413e5cc00a - + https://github.com/dotnet/emsdk - 3df5eac9e2dfcf5ff544c1a83f2a07ce9270b2f6 + 3cddc1fe20f0a0c08a1c3942a82c46413e5cc00a diff --git a/eng/Versions.props b/eng/Versions.props index f268a063e363ae..b16301094bf8cb 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -243,7 +243,7 @@ Note: when the name is updated, make sure to update dependency name in eng/pipelines/common/xplat-setup.yml like - DarcDependenciesChanged.Microsoft_NET_Workload_Emscripten_Current_Manifest-9_0_100_Transport --> - 9.0.5-servicing.25203.2 + 9.0.5-servicing.25209.3 9.0.5 $(MicrosoftNETWorkloadEmscriptenCurrentManifest90100Version) From 7a148c6ab7dc949c944ebfb4e5683e7b04a4272e Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Fri, 11 Apr 2025 10:18:30 -0700 Subject: [PATCH 35/52] Update dependencies from https://github.com/dotnet/runtime-assets build 20250409.2 (#114473) Microsoft.DotNet.CilStrip.Sources , System.ComponentModel.TypeConverter.TestData , System.Data.Common.TestData , System.Drawing.Common.TestData , System.Formats.Tar.TestData , System.IO.Compression.TestData , System.IO.Packaging.TestData , System.Net.TestData , System.Private.Runtime.UnicodeData , System.Runtime.Numerics.TestData , System.Runtime.TimeZoneData , System.Security.Cryptography.X509Certificates.TestData , System.Text.RegularExpressions.TestData , System.Windows.Extensions.TestData From Version 9.0.0-beta.25163.2 -> To Version 9.0.0-beta.25209.2 Co-authored-by: dotnet-maestro[bot] --- NuGet.config | 4 --- eng/Version.Details.xml | 56 ++++++++++++++++++++--------------------- eng/Versions.props | 28 ++++++++++----------- 3 files changed, 42 insertions(+), 46 deletions(-) diff --git a/NuGet.config b/NuGet.config index 27142063d4e67e..b7f4c23cdea826 100644 --- a/NuGet.config +++ b/NuGet.config @@ -10,10 +10,6 @@ - - - - diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 54732153f9187c..9956f4b4db4a44 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -174,57 +174,57 @@ https://github.com/dotnet/arcade 5ba9ca776c1d0bb72b2791591e54cf51fc52dfee - + https://github.com/dotnet/runtime-assets - aedfa03dd61c8e5ef1253d33a245d884669b0476 + f61574bfaaedbf06a84426134b44af1be35bfd62 - + https://github.com/dotnet/runtime-assets - aedfa03dd61c8e5ef1253d33a245d884669b0476 + f61574bfaaedbf06a84426134b44af1be35bfd62 - + https://github.com/dotnet/runtime-assets - aedfa03dd61c8e5ef1253d33a245d884669b0476 + f61574bfaaedbf06a84426134b44af1be35bfd62 - + https://github.com/dotnet/runtime-assets - aedfa03dd61c8e5ef1253d33a245d884669b0476 + f61574bfaaedbf06a84426134b44af1be35bfd62 - + https://github.com/dotnet/runtime-assets - aedfa03dd61c8e5ef1253d33a245d884669b0476 + f61574bfaaedbf06a84426134b44af1be35bfd62 - + https://github.com/dotnet/runtime-assets - aedfa03dd61c8e5ef1253d33a245d884669b0476 + f61574bfaaedbf06a84426134b44af1be35bfd62 - + https://github.com/dotnet/runtime-assets - aedfa03dd61c8e5ef1253d33a245d884669b0476 + f61574bfaaedbf06a84426134b44af1be35bfd62 - + https://github.com/dotnet/runtime-assets - aedfa03dd61c8e5ef1253d33a245d884669b0476 + f61574bfaaedbf06a84426134b44af1be35bfd62 - + https://github.com/dotnet/runtime-assets - aedfa03dd61c8e5ef1253d33a245d884669b0476 + f61574bfaaedbf06a84426134b44af1be35bfd62 - + https://github.com/dotnet/runtime-assets - aedfa03dd61c8e5ef1253d33a245d884669b0476 + f61574bfaaedbf06a84426134b44af1be35bfd62 - + https://github.com/dotnet/runtime-assets - aedfa03dd61c8e5ef1253d33a245d884669b0476 + f61574bfaaedbf06a84426134b44af1be35bfd62 - + https://github.com/dotnet/runtime-assets - aedfa03dd61c8e5ef1253d33a245d884669b0476 + f61574bfaaedbf06a84426134b44af1be35bfd62 - + https://github.com/dotnet/runtime-assets - aedfa03dd61c8e5ef1253d33a245d884669b0476 + f61574bfaaedbf06a84426134b44af1be35bfd62 https://github.com/dotnet/llvm-project @@ -356,9 +356,9 @@ https://github.com/dotnet/hotreload-utils d065cbe6ec82cbf0c78cbd240d8b91bccf117a0f - + https://github.com/dotnet/runtime-assets - aedfa03dd61c8e5ef1253d33a245d884669b0476 + f61574bfaaedbf06a84426134b44af1be35bfd62 https://github.com/dotnet/roslyn diff --git a/eng/Versions.props b/eng/Versions.props index ed2e0c9aa6af17..681ba1f85c2452 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -141,20 +141,20 @@ 8.0.0 8.0.0 - 9.0.0-beta.25163.2 - 9.0.0-beta.25163.2 - 9.0.0-beta.25163.2 - 9.0.0-beta.25163.2 - 9.0.0-beta.25163.2 - 9.0.0-beta.25163.2 - 9.0.0-beta.25163.2 - 9.0.0-beta.25163.2 - 9.0.0-beta.25163.2 - 9.0.0-beta.25163.2 - 9.0.0-beta.25163.2 - 9.0.0-beta.25163.2 - 9.0.0-beta.25163.2 - 9.0.0-beta.25163.2 + 9.0.0-beta.25209.2 + 9.0.0-beta.25209.2 + 9.0.0-beta.25209.2 + 9.0.0-beta.25209.2 + 9.0.0-beta.25209.2 + 9.0.0-beta.25209.2 + 9.0.0-beta.25209.2 + 9.0.0-beta.25209.2 + 9.0.0-beta.25209.2 + 9.0.0-beta.25209.2 + 9.0.0-beta.25209.2 + 9.0.0-beta.25209.2 + 9.0.0-beta.25209.2 + 9.0.0-beta.25209.2 1.0.0-prerelease.24462.2 1.0.0-prerelease.24462.2 From 5c8176dc57b24fe9ba0f2a247f1e9c26d477c311 Mon Sep 17 00:00:00 2001 From: Thays Grazia Date: Fri, 11 Apr 2025 14:54:04 -0300 Subject: [PATCH 36/52] [release/9.0-staging][mono][hotreload]Adjust row_size and size_bitfield from the baseline based on the delta sizes (#114119) * Backport to .net9 --- .../IncreaseMetadataRowSize.cs | 19 + .../IncreaseMetadataRowSize_v1.cs | 817 ++++++++++++++++++ ...Update.Test.IncreaseMetadataRowSize.csproj | 11 + .../deltascript.json | 6 + .../tests/ApplyUpdateTest.cs | 20 + .../tests/System.Runtime.Loader.Tests.csproj | 1 + src/mono/mono/component/hot_reload.c | 99 ++- 7 files changed, 933 insertions(+), 40 deletions(-) create mode 100644 src/libraries/System.Runtime.Loader/tests/ApplyUpdate/System.Reflection.Metadata.ApplyUpdate.Test.IncreaseMetadataRowSize/IncreaseMetadataRowSize.cs create mode 100644 src/libraries/System.Runtime.Loader/tests/ApplyUpdate/System.Reflection.Metadata.ApplyUpdate.Test.IncreaseMetadataRowSize/IncreaseMetadataRowSize_v1.cs create mode 100644 src/libraries/System.Runtime.Loader/tests/ApplyUpdate/System.Reflection.Metadata.ApplyUpdate.Test.IncreaseMetadataRowSize/System.Reflection.Metadata.ApplyUpdate.Test.IncreaseMetadataRowSize.csproj create mode 100644 src/libraries/System.Runtime.Loader/tests/ApplyUpdate/System.Reflection.Metadata.ApplyUpdate.Test.IncreaseMetadataRowSize/deltascript.json diff --git a/src/libraries/System.Runtime.Loader/tests/ApplyUpdate/System.Reflection.Metadata.ApplyUpdate.Test.IncreaseMetadataRowSize/IncreaseMetadataRowSize.cs b/src/libraries/System.Runtime.Loader/tests/ApplyUpdate/System.Reflection.Metadata.ApplyUpdate.Test.IncreaseMetadataRowSize/IncreaseMetadataRowSize.cs new file mode 100644 index 00000000000000..50d47563c20774 --- /dev/null +++ b/src/libraries/System.Runtime.Loader/tests/ApplyUpdate/System.Reflection.Metadata.ApplyUpdate.Test.IncreaseMetadataRowSize/IncreaseMetadataRowSize.cs @@ -0,0 +1,19 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +using System; +namespace System.Reflection.Metadata.ApplyUpdate.Test +{ + public static class IncreaseMetadataRowSize + { + public static void Main(string[] args) { } + public static int VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_1() + { + return 0; + } + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_2(int x2) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_3(int x3) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_4(int x4) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_5(int x5) {} + } + +} diff --git a/src/libraries/System.Runtime.Loader/tests/ApplyUpdate/System.Reflection.Metadata.ApplyUpdate.Test.IncreaseMetadataRowSize/IncreaseMetadataRowSize_v1.cs b/src/libraries/System.Runtime.Loader/tests/ApplyUpdate/System.Reflection.Metadata.ApplyUpdate.Test.IncreaseMetadataRowSize/IncreaseMetadataRowSize_v1.cs new file mode 100644 index 00000000000000..4d876cccc06631 --- /dev/null +++ b/src/libraries/System.Runtime.Loader/tests/ApplyUpdate/System.Reflection.Metadata.ApplyUpdate.Test.IncreaseMetadataRowSize/IncreaseMetadataRowSize_v1.cs @@ -0,0 +1,817 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +using System; +namespace System.Reflection.Metadata.ApplyUpdate.Test +{ + public static class IncreaseMetadataRowSize + { + public static void Main(string[] args) { } + public static int VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_1() + { + return VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_50000(); + } + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_2(int x2) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_3(int x3) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_4(int x4) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_5(int x5) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_6(int x6) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_7(int x7) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_8(int x8) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_9(int x9) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_10(int x10) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_11(int x11) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_12(int x12) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_13(int x13) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_14(int x14) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_15(int x15) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_16(int x16) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_17(int x17) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_18(int x18) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_19(int x19) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_20(int x20) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_21(int x21) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_22(int x22) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_23(int x23) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_24(int x24) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_25(int x25) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_26(int x26) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_27(int x27) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_28(int x28) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_29(int x29) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_30(int x30) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_31(int x31) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_32(int x32) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_33(int x33) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_34(int x34) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_35(int x35) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_36(int x36) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_37(int x37) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_38(int x38) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_39(int x39) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_40(int x40) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_41(int x41) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_42(int x42) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_43(int x43) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_44(int x44) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_45(int x45) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_46(int x46) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_47(int x47) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_48(int x48) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_49(int x49) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_50(int x50) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_51(int x51) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_52(int x52) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_53(int x53) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_54(int x54) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_55(int x55) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_56(int x56) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_57(int x57) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_58(int x58) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_59(int x59) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_60(int x60) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_61(int x61) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_62(int x62) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_63(int x63) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_64(int x64) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_65(int x65) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_66(int x66) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_67(int x67) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_68(int x68) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_69(int x69) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_70(int x70) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_71(int x71) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_72(int x72) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_73(int x73) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_74(int x74) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_75(int x75) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_76(int x76) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_77(int x77) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_78(int x78) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_79(int x79) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_80(int x80) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_81(int x81) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_82(int x82) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_83(int x83) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_84(int x84) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_85(int x85) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_86(int x86) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_87(int x87) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_88(int x88) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_89(int x89) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_90(int x90) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_91(int x91) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_92(int x92) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_93(int x93) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_94(int x94) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_95(int x95) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_96(int x96) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_97(int x97) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_98(int x98) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_99(int x99) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_100(int x100) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_101(int x101) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_102(int x102) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_103(int x103) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_104(int x104) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_105(int x105) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_106(int x106) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_107(int x107) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_108(int x108) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_109(int x109) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_110(int x110) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_111(int x111) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_112(int x112) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_113(int x113) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_114(int x114) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_115(int x115) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_116(int x116) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_117(int x117) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_118(int x118) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_119(int x119) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_120(int x120) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_121(int x121) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_122(int x122) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_123(int x123) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_124(int x124) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_125(int x125) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_126(int x126) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_127(int x127) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_128(int x128) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_129(int x129) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_130(int x130) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_131(int x131) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_132(int x132) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_133(int x133) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_134(int x134) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_135(int x135) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_136(int x136) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_137(int x137) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_138(int x138) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_139(int x139) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_140(int x140) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_141(int x141) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_142(int x142) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_143(int x143) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_144(int x144) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_145(int x145) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_146(int x146) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_147(int x147) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_148(int x148) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_149(int x149) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_150(int x150) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_151(int x151) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_152(int x152) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_153(int x153) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_154(int x154) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_155(int x155) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_156(int x156) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_157(int x157) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_158(int x158) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_159(int x159) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_160(int x160) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_161(int x161) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_162(int x162) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_163(int x163) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_164(int x164) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_165(int x165) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_166(int x166) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_167(int x167) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_168(int x168) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_169(int x169) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_170(int x170) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_171(int x171) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_172(int x172) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_173(int x173) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_174(int x174) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_175(int x175) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_176(int x176) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_177(int x177) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_178(int x178) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_179(int x179) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_180(int x180) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_181(int x181) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_182(int x182) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_183(int x183) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_184(int x184) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_185(int x185) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_186(int x186) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_187(int x187) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_188(int x188) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_189(int x189) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_190(int x190) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_191(int x191) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_192(int x192) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_193(int x193) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_194(int x194) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_195(int x195) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_196(int x196) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_197(int x197) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_198(int x198) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_199(int x199) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_200(int x200) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_201(int x201) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_202(int x202) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_203(int x203) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_204(int x204) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_205(int x205) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_206(int x206) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_207(int x207) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_208(int x208) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_209(int x209) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_210(int x210) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_211(int x211) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_212(int x212) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_213(int x213) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_214(int x214) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_215(int x215) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_216(int x216) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_217(int x217) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_218(int x218) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_219(int x219) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_220(int x220) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_221(int x221) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_222(int x222) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_223(int x223) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_224(int x224) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_225(int x225) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_226(int x226) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_227(int x227) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_228(int x228) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_229(int x229) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_230(int x230) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_231(int x231) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_232(int x232) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_233(int x233) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_234(int x234) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_235(int x235) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_236(int x236) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_237(int x237) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_238(int x238) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_239(int x239) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_240(int x240) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_241(int x241) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_242(int x242) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_243(int x243) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_244(int x244) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_245(int x245) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_246(int x246) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_247(int x247) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_248(int x248) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_249(int x249) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_250(int x250) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_251(int x251) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_252(int x252) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_253(int x253) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_254(int x254) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_255(int x255) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_256(int x256) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_257(int x257) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_258(int x258) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_259(int x259) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_260(int x260) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_261(int x261) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_262(int x262) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_263(int x263) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_264(int x264) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_265(int x265) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_266(int x266) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_267(int x267) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_268(int x268) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_269(int x269) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_270(int x270) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_271(int x271) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_272(int x272) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_273(int x273) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_274(int x274) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_275(int x275) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_276(int x276) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_277(int x277) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_278(int x278) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_279(int x279) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_280(int x280) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_281(int x281) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_282(int x282) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_283(int x283) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_284(int x284) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_285(int x285) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_286(int x286) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_287(int x287) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_288(int x288) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_289(int x289) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_290(int x290) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_291(int x291) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_292(int x292) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_293(int x293) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_294(int x294) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_295(int x295) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_296(int x296) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_297(int x297) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_298(int x298) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_299(int x299) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_300(int x300) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_301(int x301) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_302(int x302) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_303(int x303) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_304(int x304) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_305(int x305) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_306(int x306) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_307(int x307) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_308(int x308) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_309(int x309) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_310(int x310) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_311(int x311) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_312(int x312) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_313(int x313) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_314(int x314) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_315(int x315) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_316(int x316) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_317(int x317) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_318(int x318) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_319(int x319) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_320(int x320) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_321(int x321) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_322(int x322) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_323(int x323) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_324(int x324) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_325(int x325) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_326(int x326) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_327(int x327) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_328(int x328) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_329(int x329) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_330(int x330) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_331(int x331) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_332(int x332) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_333(int x333) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_334(int x334) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_335(int x335) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_336(int x336) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_337(int x337) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_338(int x338) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_339(int x339) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_340(int x340) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_341(int x341) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_342(int x342) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_343(int x343) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_344(int x344) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_345(int x345) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_346(int x346) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_347(int x347) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_348(int x348) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_349(int x349) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_350(int x350) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_351(int x351) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_352(int x352) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_353(int x353) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_354(int x354) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_355(int x355) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_356(int x356) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_357(int x357) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_358(int x358) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_359(int x359) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_360(int x360) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_361(int x361) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_362(int x362) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_363(int x363) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_364(int x364) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_365(int x365) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_366(int x366) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_367(int x367) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_368(int x368) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_369(int x369) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_370(int x370) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_371(int x371) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_372(int x372) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_373(int x373) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_374(int x374) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_375(int x375) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_376(int x376) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_377(int x377) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_378(int x378) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_379(int x379) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_380(int x380) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_381(int x381) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_382(int x382) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_383(int x383) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_384(int x384) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_385(int x385) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_386(int x386) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_387(int x387) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_388(int x388) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_389(int x389) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_390(int x390) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_391(int x391) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_392(int x392) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_393(int x393) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_394(int x394) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_395(int x395) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_396(int x396) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_397(int x397) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_398(int x398) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_399(int x399) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_400(int x400) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_401(int x401) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_402(int x402) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_403(int x403) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_404(int x404) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_405(int x405) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_406(int x406) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_407(int x407) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_408(int x408) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_409(int x409) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_410(int x410) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_411(int x411) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_412(int x412) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_413(int x413) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_414(int x414) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_415(int x415) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_416(int x416) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_417(int x417) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_418(int x418) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_419(int x419) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_420(int x420) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_421(int x421) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_422(int x422) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_423(int x423) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_424(int x424) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_425(int x425) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_426(int x426) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_427(int x427) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_428(int x428) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_429(int x429) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_430(int x430) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_431(int x431) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_432(int x432) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_433(int x433) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_434(int x434) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_435(int x435) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_436(int x436) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_437(int x437) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_438(int x438) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_439(int x439) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_440(int x440) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_441(int x441) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_442(int x442) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_443(int x443) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_444(int x444) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_445(int x445) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_446(int x446) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_447(int x447) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_448(int x448) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_449(int x449) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_450(int x450) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_451(int x451) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_452(int x452) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_453(int x453) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_454(int x454) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_455(int x455) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_456(int x456) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_457(int x457) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_458(int x458) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_459(int x459) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_460(int x460) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_461(int x461) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_462(int x462) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_463(int x463) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_464(int x464) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_465(int x465) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_466(int x466) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_467(int x467) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_468(int x468) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_469(int x469) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_470(int x470) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_471(int x471) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_472(int x472) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_473(int x473) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_474(int x474) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_475(int x475) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_476(int x476) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_477(int x477) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_478(int x478) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_479(int x479) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_480(int x480) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_481(int x481) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_482(int x482) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_483(int x483) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_484(int x484) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_485(int x485) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_486(int x486) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_487(int x487) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_488(int x488) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_489(int x489) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_490(int x490) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_491(int x491) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_492(int x492) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_493(int x493) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_494(int x494) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_495(int x495) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_496(int x496) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_497(int x497) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_498(int x498) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_499(int x499) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_500(int x500) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_501(int x501) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_502(int x502) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_503(int x503) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_504(int x504) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_505(int x505) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_506(int x506) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_507(int x507) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_508(int x508) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_509(int x509) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_510(int x510) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_511(int x511) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_512(int x512) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_513(int x513) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_514(int x514) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_515(int x515) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_516(int x516) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_517(int x517) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_518(int x518) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_519(int x519) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_520(int x520) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_521(int x521) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_522(int x522) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_523(int x523) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_524(int x524) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_525(int x525) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_526(int x526) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_527(int x527) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_528(int x528) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_529(int x529) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_530(int x530) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_531(int x531) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_532(int x532) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_533(int x533) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_534(int x534) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_535(int x535) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_536(int x536) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_537(int x537) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_538(int x538) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_539(int x539) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_540(int x540) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_541(int x541) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_542(int x542) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_543(int x543) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_544(int x544) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_545(int x545) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_546(int x546) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_547(int x547) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_548(int x548) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_549(int x549) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_550(int x550) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_551(int x551) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_552(int x552) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_553(int x553) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_554(int x554) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_555(int x555) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_556(int x556) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_557(int x557) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_558(int x558) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_559(int x559) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_560(int x560) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_561(int x561) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_562(int x562) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_563(int x563) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_564(int x564) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_565(int x565) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_566(int x566) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_567(int x567) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_568(int x568) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_569(int x569) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_570(int x570) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_571(int x571) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_572(int x572) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_573(int x573) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_574(int x574) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_575(int x575) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_576(int x576) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_577(int x577) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_578(int x578) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_579(int x579) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_580(int x580) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_581(int x581) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_582(int x582) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_583(int x583) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_584(int x584) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_585(int x585) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_586(int x586) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_587(int x587) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_588(int x588) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_589(int x589) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_590(int x590) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_591(int x591) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_592(int x592) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_593(int x593) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_594(int x594) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_595(int x595) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_596(int x596) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_597(int x597) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_598(int x598) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_599(int x599) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_600(int x600) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_601(int x601) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_602(int x602) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_603(int x603) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_604(int x604) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_605(int x605) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_606(int x606) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_607(int x607) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_608(int x608) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_609(int x609) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_610(int x610) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_611(int x611) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_612(int x612) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_613(int x613) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_614(int x614) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_615(int x615) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_616(int x616) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_617(int x617) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_618(int x618) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_619(int x619) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_620(int x620) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_621(int x621) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_622(int x622) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_623(int x623) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_624(int x624) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_625(int x625) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_626(int x626) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_627(int x627) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_628(int x628) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_629(int x629) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_630(int x630) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_631(int x631) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_632(int x632) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_633(int x633) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_634(int x634) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_635(int x635) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_636(int x636) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_637(int x637) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_638(int x638) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_639(int x639) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_640(int x640) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_641(int x641) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_642(int x642) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_643(int x643) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_644(int x644) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_645(int x645) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_646(int x646) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_647(int x647) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_648(int x648) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_649(int x649) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_650(int x650) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_651(int x651) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_652(int x652) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_653(int x653) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_654(int x654) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_655(int x655) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_656(int x656) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_657(int x657) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_658(int x658) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_659(int x659) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_660(int x660) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_661(int x661) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_662(int x662) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_663(int x663) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_664(int x664) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_665(int x665) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_666(int x666) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_667(int x667) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_668(int x668) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_669(int x669) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_670(int x670) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_671(int x671) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_672(int x672) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_673(int x673) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_674(int x674) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_675(int x675) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_676(int x676) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_677(int x677) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_678(int x678) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_679(int x679) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_680(int x680) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_681(int x681) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_682(int x682) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_683(int x683) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_684(int x684) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_685(int x685) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_686(int x686) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_687(int x687) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_688(int x688) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_689(int x689) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_690(int x690) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_691(int x691) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_692(int x692) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_693(int x693) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_694(int x694) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_695(int x695) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_696(int x696) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_697(int x697) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_698(int x698) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_699(int x699) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_700(int x700) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_701(int x701) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_702(int x702) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_703(int x703) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_704(int x704) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_705(int x705) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_706(int x706) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_707(int x707) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_708(int x708) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_709(int x709) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_710(int x710) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_711(int x711) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_712(int x712) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_713(int x713) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_714(int x714) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_715(int x715) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_716(int x716) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_717(int x717) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_718(int x718) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_719(int x719) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_720(int x720) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_721(int x721) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_722(int x722) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_723(int x723) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_724(int x724) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_725(int x725) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_726(int x726) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_727(int x727) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_728(int x728) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_729(int x729) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_730(int x730) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_731(int x731) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_732(int x732) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_733(int x733) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_734(int x734) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_735(int x735) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_736(int x736) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_737(int x737) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_738(int x738) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_739(int x739) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_740(int x740) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_741(int x741) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_742(int x742) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_743(int x743) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_744(int x744) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_745(int x745) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_746(int x746) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_747(int x747) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_748(int x748) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_749(int x749) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_750(int x750) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_751(int x751) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_752(int x752) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_753(int x753) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_754(int x754) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_755(int x755) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_756(int x756) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_757(int x757) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_758(int x758) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_759(int x759) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_760(int x760) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_761(int x761) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_762(int x762) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_763(int x763) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_764(int x764) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_765(int x765) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_766(int x766) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_767(int x767) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_768(int x768) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_769(int x769) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_770(int x770) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_771(int x771) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_772(int x772) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_773(int x773) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_774(int x774) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_775(int x775) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_776(int x776) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_777(int x777) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_778(int x778) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_779(int x779) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_780(int x780) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_781(int x781) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_782(int x782) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_783(int x783) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_784(int x784) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_785(int x785) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_786(int x786) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_787(int x787) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_788(int x788) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_789(int x789) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_790(int x790) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_791(int x791) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_792(int x792) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_793(int x793) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_794(int x794) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_795(int x795) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_796(int x796) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_797(int x797) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_798(int x798) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_799(int x799) {} + public static void VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_800(int x800) {} + public static int VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_50000() + { + return 50000; + } + } +} diff --git a/src/libraries/System.Runtime.Loader/tests/ApplyUpdate/System.Reflection.Metadata.ApplyUpdate.Test.IncreaseMetadataRowSize/System.Reflection.Metadata.ApplyUpdate.Test.IncreaseMetadataRowSize.csproj b/src/libraries/System.Runtime.Loader/tests/ApplyUpdate/System.Reflection.Metadata.ApplyUpdate.Test.IncreaseMetadataRowSize/System.Reflection.Metadata.ApplyUpdate.Test.IncreaseMetadataRowSize.csproj new file mode 100644 index 00000000000000..2f3bf85ac967a3 --- /dev/null +++ b/src/libraries/System.Runtime.Loader/tests/ApplyUpdate/System.Reflection.Metadata.ApplyUpdate.Test.IncreaseMetadataRowSize/System.Reflection.Metadata.ApplyUpdate.Test.IncreaseMetadataRowSize.csproj @@ -0,0 +1,11 @@ + + + System.Runtime.Loader.Tests + $(NetCoreAppCurrent) + true + deltascript.json + + + + + diff --git a/src/libraries/System.Runtime.Loader/tests/ApplyUpdate/System.Reflection.Metadata.ApplyUpdate.Test.IncreaseMetadataRowSize/deltascript.json b/src/libraries/System.Runtime.Loader/tests/ApplyUpdate/System.Reflection.Metadata.ApplyUpdate.Test.IncreaseMetadataRowSize/deltascript.json new file mode 100644 index 00000000000000..83003d0d1c90ed --- /dev/null +++ b/src/libraries/System.Runtime.Loader/tests/ApplyUpdate/System.Reflection.Metadata.ApplyUpdate.Test.IncreaseMetadataRowSize/deltascript.json @@ -0,0 +1,6 @@ +{ + "changes": [ + {"document": "IncreaseMetadataRowSize.cs", "update": "IncreaseMetadataRowSize_v1.cs"}, + ] +} + diff --git a/src/libraries/System.Runtime.Loader/tests/ApplyUpdateTest.cs b/src/libraries/System.Runtime.Loader/tests/ApplyUpdateTest.cs index 2fdb62c7e4bfb4..de21f136c4fac2 100644 --- a/src/libraries/System.Runtime.Loader/tests/ApplyUpdateTest.cs +++ b/src/libraries/System.Runtime.Loader/tests/ApplyUpdateTest.cs @@ -983,5 +983,25 @@ public static void TestNewMethodThrows() Assert.True(frame1Name == null || frame1Name.Contains("NewMethodThrows.cs")); }); } + + [ConditionalFact(typeof(ApplyUpdateUtil), nameof (ApplyUpdateUtil.IsSupported))] + void TestIncreaseMetadataRowSize() + { + ApplyUpdateUtil.TestCase(static () => + { + // Get the custom attribtues from a newly-added type and method + // and check that they are the expected ones. + var assm = typeof(ApplyUpdate.Test.IncreaseMetadataRowSize).Assembly; + + ApplyUpdateUtil.ApplyUpdate(assm); + ApplyUpdateUtil.ClearAllReflectionCaches(); + + var r = ApplyUpdate.Test.IncreaseMetadataRowSize.VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_1(); + Assert.Equal(50000, r); + MethodInfo mi = typeof(ApplyUpdate.Test.IncreaseMetadataRowSize).GetMethod("VeryLooooooooooooooooooooooooooooooooongMethodNameToPushTheStringBlobOver64k_800"); + ParameterInfo[] pars = mi.GetParameters(); + Assert.Equal("x800", pars[0].Name); + }); + } } } diff --git a/src/libraries/System.Runtime.Loader/tests/System.Runtime.Loader.Tests.csproj b/src/libraries/System.Runtime.Loader/tests/System.Runtime.Loader.Tests.csproj index 504be89a6d4af2..b8a32824c82c8a 100644 --- a/src/libraries/System.Runtime.Loader/tests/System.Runtime.Loader.Tests.csproj +++ b/src/libraries/System.Runtime.Loader/tests/System.Runtime.Loader.Tests.csproj @@ -67,6 +67,7 @@ + diff --git a/src/mono/mono/component/hot_reload.c b/src/mono/mono/component/hot_reload.c index 300a46a245f92d..5ce5950556581c 100644 --- a/src/mono/mono/component/hot_reload.c +++ b/src/mono/mono/component/hot_reload.c @@ -924,9 +924,7 @@ delta_info_initialize_mutants (const MonoImage *base, const BaselineInfo *base_i g_assert (prev_table != NULL); MonoTableInfo *tbl = &delta->mutants [i]; - if (prev_table->rows_ == 0) { - /* table was empty in the baseline and it was empty in the prior generation, but now we have some rows. Use the format of the mutant table. */ - g_assert (prev_table->row_size == 0); + if (delta->delta_image->tables [i].row_size != 0 || prev_table->rows_ == 0) { tbl->row_size = delta->delta_image->tables [i].row_size; tbl->size_bitfield = delta->delta_image->tables [i].size_bitfield; } else { @@ -940,8 +938,60 @@ delta_info_initialize_mutants (const MonoImage *base, const BaselineInfo *base_i tbl->base = mono_mempool_alloc (delta->pool, tbl->row_size * rows); g_assert (table_info_get_rows (prev_table) == count->prev_gen_rows); - /* copy the old rows and zero out the new ones */ - memcpy ((char*)tbl->base, prev_table->base, count->prev_gen_rows * tbl->row_size); + /* copy the old rows and zero out the new ones */ + /* we need to copy following the new format (uncompressed one)*/ + for (guint32 j = 0 ; j < count->prev_gen_rows; j++) + { + guint32 src_offset = 0, dst_offset = 0; + guint32 dst_bitfield = tbl->size_bitfield; + guint32 src_bitfield = prev_table->size_bitfield; + const char *src_base = (char*)prev_table->base + j * prev_table->row_size; + char *dst_base = (char*)tbl->base + j * tbl->row_size; + for (guint col = 0; col < mono_metadata_table_count (dst_bitfield); ++col) { + guint32 dst_col_size = mono_metadata_table_size (dst_bitfield, col); + guint32 src_col_size = mono_metadata_table_size (src_bitfield, col); + { + const char *src = src_base + src_offset; + char *dst = dst_base + dst_offset; + + /* copy src to dst, via a temporary to adjust for size differences */ + /* FIXME: unaligned access, endianness */ + guint32 tmp; + + switch (src_col_size) { + case 1: + tmp = *(guint8*)src; + break; + case 2: + tmp = *(guint16*)src; + break; + case 4: + tmp = *(guint32*)src; + break; + default: + g_assert_not_reached (); + } + + /* FIXME: unaligned access, endianness */ + switch (dst_col_size) { + case 1: + *(guint8*)dst = (guint8)tmp; + break; + case 2: + *(guint16*)dst = (guint16)tmp; + break; + case 4: + *(guint32*)dst = tmp; + break; + default: + g_assert_not_reached (); + } + } + src_offset += src_col_size; + dst_offset += dst_col_size; + } + g_assert (dst_offset == tbl->row_size); + } memset (((char*)tbl->base) + count->prev_gen_rows * tbl->row_size, 0, count->inserted_rows * tbl->row_size); } } @@ -1386,8 +1436,8 @@ delta_info_mutate_row (MonoImage *image_dmeta, DeltaInfo *cur_delta, guint32 log /* The complication here is that we want the mutant table to look like the table in * the baseline image with respect to column widths, but the delta tables are generally coming in - * uncompressed (4-byte columns). So we have to copy one column at a time and adjust the - * widths as we go. + * uncompressed (4-byte columns). And we have already adjusted the baseline image column widths + * so we can use memcpy here. */ guint32 dst_bitfield = cur_delta->mutants [token_table].size_bitfield; @@ -1401,41 +1451,10 @@ delta_info_mutate_row (MonoImage *image_dmeta, DeltaInfo *cur_delta, guint32 log guint32 dst_col_size = mono_metadata_table_size (dst_bitfield, col); guint32 src_col_size = mono_metadata_table_size (src_bitfield, col); if ((m_SuppressedDeltaColumns [token_table] & (1 << col)) == 0) { + g_assert(src_col_size <= dst_col_size); const char *src = src_base + src_offset; char *dst = dst_base + dst_offset; - - /* copy src to dst, via a temporary to adjust for size differences */ - /* FIXME: unaligned access, endianness */ - guint32 tmp; - - switch (src_col_size) { - case 1: - tmp = *(guint8*)src; - break; - case 2: - tmp = *(guint16*)src; - break; - case 4: - tmp = *(guint32*)src; - break; - default: - g_assert_not_reached (); - } - - /* FIXME: unaligned access, endianness */ - switch (dst_col_size) { - case 1: - *(guint8*)dst = (guint8)tmp; - break; - case 2: - *(guint16*)dst = (guint16)tmp; - break; - case 4: - *(guint32*)dst = tmp; - break; - default: - g_assert_not_reached (); - } + memcpy(dst, src, src_col_size); } src_offset += src_col_size; dst_offset += dst_col_size; From 49619c426690582f894344dca63d3afe482f9a45 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Fri, 11 Apr 2025 11:22:28 -0700 Subject: [PATCH 37/52] [release/9.0-staging] Update dependencies from dotnet/arcade (#114296) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Update dependencies from https://github.com/dotnet/arcade build 20250404.5 Microsoft.SourceBuild.Intermediate.arcade , 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.XliffTasks , Microsoft.DotNet.XUnitAssert , Microsoft.DotNet.XUnitConsoleRunner , Microsoft.DotNet.XUnitExtensions From Version 9.0.0-beta.25164.2 -> To Version 9.0.0-beta.25204.5 * Update dependencies from https://github.com/dotnet/arcade build 20250408.6 Microsoft.SourceBuild.Intermediate.arcade , 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.XliffTasks , Microsoft.DotNet.XUnitAssert , Microsoft.DotNet.XUnitConsoleRunner , Microsoft.DotNet.XUnitExtensions From Version 9.0.0-beta.25164.2 -> To Version 9.0.0-beta.25208.6 --------- Co-authored-by: dotnet-maestro[bot] Co-authored-by: Carlos Sánchez López <1175054+carlossanlop@users.noreply.github.com> --- NuGet.config | 1 + eng/Version.Details.xml | 84 ++++++++++++++++++++--------------------- eng/Versions.props | 32 ++++++++-------- global.json | 10 ++--- 4 files changed, 64 insertions(+), 63 deletions(-) diff --git a/NuGet.config b/NuGet.config index b7f4c23cdea826..13fbfbde8b7243 100644 --- a/NuGet.config +++ b/NuGet.config @@ -9,6 +9,7 @@ + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 9956f4b4db4a44..76221dd2eb3f85 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -92,87 +92,87 @@ - + https://github.com/dotnet/arcade - 5ba9ca776c1d0bb72b2791591e54cf51fc52dfee + aa61e8c20a869bcc994f8b29eb07d927d2bec6f4 - + https://github.com/dotnet/arcade - 5ba9ca776c1d0bb72b2791591e54cf51fc52dfee + aa61e8c20a869bcc994f8b29eb07d927d2bec6f4 - + https://github.com/dotnet/arcade - 5ba9ca776c1d0bb72b2791591e54cf51fc52dfee + aa61e8c20a869bcc994f8b29eb07d927d2bec6f4 - + https://github.com/dotnet/arcade - 5ba9ca776c1d0bb72b2791591e54cf51fc52dfee + aa61e8c20a869bcc994f8b29eb07d927d2bec6f4 - + https://github.com/dotnet/arcade - 5ba9ca776c1d0bb72b2791591e54cf51fc52dfee + aa61e8c20a869bcc994f8b29eb07d927d2bec6f4 - + https://github.com/dotnet/arcade - 5ba9ca776c1d0bb72b2791591e54cf51fc52dfee + aa61e8c20a869bcc994f8b29eb07d927d2bec6f4 - + https://github.com/dotnet/arcade - 5ba9ca776c1d0bb72b2791591e54cf51fc52dfee + aa61e8c20a869bcc994f8b29eb07d927d2bec6f4 - + https://github.com/dotnet/arcade - 5ba9ca776c1d0bb72b2791591e54cf51fc52dfee + aa61e8c20a869bcc994f8b29eb07d927d2bec6f4 - + https://github.com/dotnet/arcade - 5ba9ca776c1d0bb72b2791591e54cf51fc52dfee + aa61e8c20a869bcc994f8b29eb07d927d2bec6f4 - + https://github.com/dotnet/arcade - 5ba9ca776c1d0bb72b2791591e54cf51fc52dfee + aa61e8c20a869bcc994f8b29eb07d927d2bec6f4 - + https://github.com/dotnet/arcade - 5ba9ca776c1d0bb72b2791591e54cf51fc52dfee + aa61e8c20a869bcc994f8b29eb07d927d2bec6f4 - + https://github.com/dotnet/arcade - 5ba9ca776c1d0bb72b2791591e54cf51fc52dfee + aa61e8c20a869bcc994f8b29eb07d927d2bec6f4 - + https://github.com/dotnet/arcade - 5ba9ca776c1d0bb72b2791591e54cf51fc52dfee + aa61e8c20a869bcc994f8b29eb07d927d2bec6f4 - + https://github.com/dotnet/arcade - 5ba9ca776c1d0bb72b2791591e54cf51fc52dfee + aa61e8c20a869bcc994f8b29eb07d927d2bec6f4 - + https://github.com/dotnet/arcade - 5ba9ca776c1d0bb72b2791591e54cf51fc52dfee + aa61e8c20a869bcc994f8b29eb07d927d2bec6f4 - + https://github.com/dotnet/arcade - 5ba9ca776c1d0bb72b2791591e54cf51fc52dfee + aa61e8c20a869bcc994f8b29eb07d927d2bec6f4 - + https://github.com/dotnet/arcade - 5ba9ca776c1d0bb72b2791591e54cf51fc52dfee + aa61e8c20a869bcc994f8b29eb07d927d2bec6f4 - + https://github.com/dotnet/arcade - 5ba9ca776c1d0bb72b2791591e54cf51fc52dfee + aa61e8c20a869bcc994f8b29eb07d927d2bec6f4 - + https://github.com/dotnet/arcade - 5ba9ca776c1d0bb72b2791591e54cf51fc52dfee + aa61e8c20a869bcc994f8b29eb07d927d2bec6f4 - + https://github.com/dotnet/arcade - 5ba9ca776c1d0bb72b2791591e54cf51fc52dfee + aa61e8c20a869bcc994f8b29eb07d927d2bec6f4 https://github.com/dotnet/runtime-assets @@ -332,9 +332,9 @@ https://github.com/dotnet/xharness 8fa551353a0b2c90afb82c507f23afdf966d57c5 - + https://github.com/dotnet/arcade - 5ba9ca776c1d0bb72b2791591e54cf51fc52dfee + aa61e8c20a869bcc994f8b29eb07d927d2bec6f4 https://dev.azure.com/dnceng/internal/_git/dotnet-optimization diff --git a/eng/Versions.props b/eng/Versions.props index 681ba1f85c2452..527ab1133cdc13 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -85,22 +85,22 @@ 9.0.105 - 9.0.0-beta.25164.2 - 9.0.0-beta.25164.2 - 9.0.0-beta.25164.2 - 9.0.0-beta.25164.2 - 2.9.0-beta.25164.2 - 9.0.0-beta.25164.2 - 2.9.0-beta.25164.2 - 9.0.0-beta.25164.2 - 9.0.0-beta.25164.2 - 9.0.0-beta.25164.2 - 9.0.0-beta.25164.2 - 9.0.0-beta.25164.2 - 9.0.0-beta.25164.2 - 9.0.0-beta.25164.2 - 9.0.0-beta.25164.2 - 9.0.0-beta.25164.2 + 9.0.0-beta.25208.6 + 9.0.0-beta.25208.6 + 9.0.0-beta.25208.6 + 9.0.0-beta.25208.6 + 2.9.0-beta.25208.6 + 9.0.0-beta.25208.6 + 2.9.0-beta.25208.6 + 9.0.0-beta.25208.6 + 9.0.0-beta.25208.6 + 9.0.0-beta.25208.6 + 9.0.0-beta.25208.6 + 9.0.0-beta.25208.6 + 9.0.0-beta.25208.6 + 9.0.0-beta.25208.6 + 9.0.0-beta.25208.6 + 9.0.0-beta.25208.6 1.4.0 diff --git a/global.json b/global.json index 2ea15524c4d07a..eba78dc154ff6d 100644 --- a/global.json +++ b/global.json @@ -1,16 +1,16 @@ { "sdk": { - "version": "9.0.104", + "version": "9.0.105", "allowPrerelease": true, "rollForward": "major" }, "tools": { - "dotnet": "9.0.104" + "dotnet": "9.0.105" }, "msbuild-sdks": { - "Microsoft.DotNet.Arcade.Sdk": "9.0.0-beta.25164.2", - "Microsoft.DotNet.Helix.Sdk": "9.0.0-beta.25164.2", - "Microsoft.DotNet.SharedFramework.Sdk": "9.0.0-beta.25164.2", + "Microsoft.DotNet.Arcade.Sdk": "9.0.0-beta.25208.6", + "Microsoft.DotNet.Helix.Sdk": "9.0.0-beta.25208.6", + "Microsoft.DotNet.SharedFramework.Sdk": "9.0.0-beta.25208.6", "Microsoft.Build.NoTargets": "3.7.0", "Microsoft.Build.Traversal": "3.4.0", "Microsoft.NET.Sdk.IL": "9.0.0-rtm.24511.16" From 2476ad323d6ea7def98d6e6c0c0d170fdeff716a Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Fri, 11 Apr 2025 11:22:42 -0700 Subject: [PATCH 38/52] [release/9.0-staging] Update dependencies from dotnet/xharness (#114318) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Update dependencies from https://github.com/dotnet/xharness build 20250403.2 Microsoft.DotNet.XHarness.CLI , Microsoft.DotNet.XHarness.TestRunners.Common , Microsoft.DotNet.XHarness.TestRunners.Xunit From Version 9.0.0-prerelease.25167.9 -> To Version 9.0.0-prerelease.25203.2 * Update dependencies from https://github.com/dotnet/xharness build 20250407.3 Microsoft.DotNet.XHarness.CLI , Microsoft.DotNet.XHarness.TestRunners.Common , Microsoft.DotNet.XHarness.TestRunners.Xunit From Version 9.0.0-prerelease.25167.9 -> To Version 9.0.0-prerelease.25207.3 --------- Co-authored-by: dotnet-maestro[bot] Co-authored-by: Carlos Sánchez López <1175054+carlossanlop@users.noreply.github.com> --- .config/dotnet-tools.json | 2 +- eng/Version.Details.xml | 12 ++++++------ eng/Versions.props | 6 +++--- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/.config/dotnet-tools.json b/.config/dotnet-tools.json index ff000f6af709b8..532c7255c8a281 100644 --- a/.config/dotnet-tools.json +++ b/.config/dotnet-tools.json @@ -15,7 +15,7 @@ ] }, "microsoft.dotnet.xharness.cli": { - "version": "9.0.0-prerelease.25167.9", + "version": "9.0.0-prerelease.25207.3", "commands": [ "xharness" ] diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 76221dd2eb3f85..70c8ef402fb9f9 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -320,17 +320,17 @@ https://github.com/dotnet/runtime b030c4dfdfa1bf287f10f96006619a06bc2000ae - + https://github.com/dotnet/xharness - 8fa551353a0b2c90afb82c507f23afdf966d57c5 + aed708d126f0776c81966db1ca17278edbef8279 - + https://github.com/dotnet/xharness - 8fa551353a0b2c90afb82c507f23afdf966d57c5 + aed708d126f0776c81966db1ca17278edbef8279 - + https://github.com/dotnet/xharness - 8fa551353a0b2c90afb82c507f23afdf966d57c5 + aed708d126f0776c81966db1ca17278edbef8279 https://github.com/dotnet/arcade diff --git a/eng/Versions.props b/eng/Versions.props index 527ab1133cdc13..5a33a0042bedb0 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -184,9 +184,9 @@ 1.4.0 17.4.0-preview-20220707-01 - 9.0.0-prerelease.25167.9 - 9.0.0-prerelease.25167.9 - 9.0.0-prerelease.25167.9 + 9.0.0-prerelease.25207.3 + 9.0.0-prerelease.25207.3 + 9.0.0-prerelease.25207.3 9.0.0-alpha.0.25174.2 3.12.0 4.5.0 From ac70573c250887ec6c24d04e49fa09988f5b4b6f Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Fri, 11 Apr 2025 11:23:26 -0700 Subject: [PATCH 39/52] Update dependencies from https://github.com/dotnet/cecil build 20250406.5 (#114364) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Microsoft.SourceBuild.Intermediate.cecil , Microsoft.DotNet.Cecil From Version 0.11.5-alpha.25173.2 -> To Version 0.11.5-alpha.25206.5 Co-authored-by: dotnet-maestro[bot] Co-authored-by: Carlos Sánchez López <1175054+carlossanlop@users.noreply.github.com> --- eng/Version.Details.xml | 8 ++++---- eng/Versions.props | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 70c8ef402fb9f9..31bf35a080e888 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -54,14 +54,14 @@ 803d8598f98fb4efd94604b32627ee9407f246db - + https://github.com/dotnet/cecil - e9c26dfe3cdc9cafe5acd2bb9aa1fa1b4cbcc72f + 9c8b212362f8b11e1df43daecb8b3f931b5adb06 - + https://github.com/dotnet/cecil - e9c26dfe3cdc9cafe5acd2bb9aa1fa1b4cbcc72f + 9c8b212362f8b11e1df43daecb8b3f931b5adb06 diff --git a/eng/Versions.props b/eng/Versions.props index 5a33a0042bedb0..4ba9d34f7b8c63 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -215,7 +215,7 @@ 9.0.0-preview-20241010.1 - 0.11.5-alpha.25173.2 + 0.11.5-alpha.25206.5 9.0.0-rtm.24511.16 From 4d32f86219bea7b55152011a38a2c0917b39f225 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Fri, 11 Apr 2025 11:26:21 -0700 Subject: [PATCH 40/52] Update dependencies from https://github.com/dotnet/hotreload-utils build 20250409.2 (#114474) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Microsoft.DotNet.HotReload.Utils.Generator.BuildTool From Version 9.0.0-alpha.0.25174.2 -> To Version 9.0.0-alpha.0.25209.2 Co-authored-by: dotnet-maestro[bot] Co-authored-by: Carlos Sánchez López <1175054+carlossanlop@users.noreply.github.com> --- eng/Version.Details.xml | 4 ++-- eng/Versions.props | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 31bf35a080e888..99c4e29752e38c 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -352,9 +352,9 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-optimization 9d7532585ce71e30ab55f0364d3cecccaf0775d1 - + https://github.com/dotnet/hotreload-utils - d065cbe6ec82cbf0c78cbd240d8b91bccf117a0f + 46df3d5e763fdd0e57eeafcb898a86bb955483cb https://github.com/dotnet/runtime-assets diff --git a/eng/Versions.props b/eng/Versions.props index 4ba9d34f7b8c63..f0fb67f3d8e762 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -187,7 +187,7 @@ 9.0.0-prerelease.25207.3 9.0.0-prerelease.25207.3 9.0.0-prerelease.25207.3 - 9.0.0-alpha.0.25174.2 + 9.0.0-alpha.0.25209.2 3.12.0 4.5.0 6.0.0 From 703efd520139ed08dcffd3b88932d81a45f4a573 Mon Sep 17 00:00:00 2001 From: Filip Navara Date: Fri, 11 Apr 2025 21:40:15 +0200 Subject: [PATCH 41/52] [release/9.0] Fix edge cases in Tarjan GC bridge (Android) (#114391) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Fix dump_processor_state debug code to compile and work on Android (#112970) Fix typo in GC bridge comparison message (SCCS -> XREFS) * [mono] Add a few bridge tests (#113703) * [mono][sgen] Fix DUMP_GRAPH debug option build for tarjan bridge * [mono][sgen] Don't create ScanData* during debug dumping of SCCs It serves no purpose and it would later crash the runtime since we didn't patch the lockword back in place. * [mono][sgen] Fix some null deref crashes in DUMP_GRAPH debug option * [mono][tests] Add bridge tests These are ported from some of the bridge tests we had on mono/mono. In order to test them we compare between the output of the new and the tarjan bridge. * Fix an edge case in the Tarjan GC bridge that leads to losing xref information (#112825) * Fix an edge case in the Tarjan SCC that lead to losing xref information In the Tarjan SCC bridge processing there's a color graph used to find out connections between SCCs. There was a rare case which only manifested when a cycle in the object graph points to another cycle that points to a bridge object. We only recognized direct bridge pointers but not pointers to other non-bridge SCCs that in turn point to bridges and where we already calculated the xrefs. These xrefs were then lost. * Add test case to sgen-bridge-pathologies and add an assert to catch the original bug * Add review --------- Co-authored-by: Vlad Brezae * [SGen/Tarjan] Handle edge case with node heaviness changing due to deduplication (#113044) * [SGen/Tarjan] Handle edge case with node heaviness changing due to deduplication Do early deduplication Fix Windows build Add test cases to sgen-bridge-pathologies * Move test code * Remove old code * Add extra check (no change to functionality) * Disable test on wasm --------- Co-authored-by: Vlad Brezae Co-authored-by: Alexander Köplinger --- src/mono/mono/metadata/sgen-bridge.c | 18 +- src/mono/mono/metadata/sgen-tarjan-bridge.c | 84 ++-- src/tests/GC/Features/Bridge/Bridge.cs | 422 ++++++++++++++++++ src/tests/GC/Features/Bridge/Bridge.csproj | 11 + src/tests/GC/Features/Bridge/BridgeTester.cs | 35 ++ .../GC/Features/Bridge/BridgeTester.csproj | 17 + 6 files changed, 550 insertions(+), 37 deletions(-) create mode 100644 src/tests/GC/Features/Bridge/Bridge.cs create mode 100644 src/tests/GC/Features/Bridge/Bridge.csproj create mode 100644 src/tests/GC/Features/Bridge/BridgeTester.cs create mode 100644 src/tests/GC/Features/Bridge/BridgeTester.csproj diff --git a/src/mono/mono/metadata/sgen-bridge.c b/src/mono/mono/metadata/sgen-bridge.c index 579fc0d376cd6a..1f7dc31c9b4b11 100644 --- a/src/mono/mono/metadata/sgen-bridge.c +++ b/src/mono/mono/metadata/sgen-bridge.c @@ -316,24 +316,24 @@ dump_processor_state (SgenBridgeProcessor *p) { int i; - printf ("------\n"); - printf ("SCCS %d\n", p->num_sccs); + g_message ("------\n"); + g_message ("SCCS %d\n", p->num_sccs); for (i = 0; i < p->num_sccs; ++i) { int j; MonoGCBridgeSCC *scc = p->api_sccs [i]; - printf ("\tSCC %d:", i); + g_message ("\tSCC %d:", i); for (j = 0; j < scc->num_objs; ++j) { MonoObject *obj = scc->objs [j]; - printf (" %p(%s)", obj, SGEN_LOAD_VTABLE (obj)->klass->name); + g_message (" %p(%s)", obj, m_class_get_name (SGEN_LOAD_VTABLE (obj)->klass)); } - printf ("\n"); + g_message ("\n"); } - printf ("XREFS %d\n", p->num_xrefs); + g_message ("XREFS %d\n", p->num_xrefs); for (i = 0; i < p->num_xrefs; ++i) - printf ("\t%d -> %d\n", p->api_xrefs [i].src_scc_index, p->api_xrefs [i].dst_scc_index); + g_message ("\t%d -> %d\n", p->api_xrefs [i].src_scc_index, p->api_xrefs [i].dst_scc_index); - printf ("-------\n"); + g_message ("-------\n"); } */ @@ -352,7 +352,7 @@ sgen_compare_bridge_processor_results (SgenBridgeProcessor *a, SgenBridgeProcess if (a->num_sccs != b->num_sccs) g_error ("SCCS count expected %d but got %d", a->num_sccs, b->num_sccs); if (a->num_xrefs != b->num_xrefs) - g_error ("SCCS count expected %d but got %d", a->num_xrefs, b->num_xrefs); + g_error ("XREFS count expected %d but got %d", a->num_xrefs, b->num_xrefs); /* * First we build a hash of each object in `a` to its respective SCC index within diff --git a/src/mono/mono/metadata/sgen-tarjan-bridge.c b/src/mono/mono/metadata/sgen-tarjan-bridge.c index b0c9cf1f83baef..86de93083e53a1 100644 --- a/src/mono/mono/metadata/sgen-tarjan-bridge.c +++ b/src/mono/mono/metadata/sgen-tarjan-bridge.c @@ -400,16 +400,7 @@ static const char* safe_name_bridge (GCObject *obj) { GCVTable vt = SGEN_LOAD_VTABLE (obj); - return vt->klass->name; -} - -static ScanData* -find_or_create_data (GCObject *obj) -{ - ScanData *entry = find_data (obj); - if (!entry) - entry = create_data (obj); - return entry; + return m_class_get_name (vt->klass); } #endif @@ -566,10 +557,15 @@ find_in_cache (int *insert_index) // Populate other_colors for a give color (other_colors represent the xrefs for this color) static void -add_other_colors (ColorData *color, DynPtrArray *other_colors) +add_other_colors (ColorData *color, DynPtrArray *other_colors, gboolean check_visited) { for (int i = 0; i < dyn_array_ptr_size (other_colors); ++i) { ColorData *points_to = (ColorData *)dyn_array_ptr_get (other_colors, i); + if (check_visited) { + if (points_to->visited) + continue; + points_to->visited = TRUE; + } dyn_array_ptr_add (&color->other_colors, points_to); // Inform targets points_to->incoming_colors = MIN (points_to->incoming_colors + 1, INCOMING_COLORS_MAX); @@ -593,7 +589,7 @@ new_color (gboolean has_bridges) cd = alloc_color_data (); cd->api_index = -1; - add_other_colors (cd, &color_merge_array); + add_other_colors (cd, &color_merge_array, FALSE); /* if cacheSlot >= 0, it means we prepared a given slot to receive the new color */ if (cacheSlot >= 0) @@ -700,11 +696,11 @@ compute_low_index (ScanData *data, GCObject *obj) obj = bridge_object_forward (obj); other = find_data (obj); -#if DUMP_GRAPH - printf ("\tcompute low %p ->%p (%s) %p (%d / %d, color %p)\n", data->obj, obj, safe_name_bridge (obj), other, other ? other->index : -2, other ? other->low_index : -2, other->color); -#endif if (!other) return; +#if DUMP_GRAPH + printf ("\tcompute low %p ->%p (%s) %p (%d / %d, color %p)\n", data->obj, obj, safe_name_bridge (obj), other, other ? other->index : -2, other->low_index, other->color); +#endif g_assert (other->state != INITIAL); @@ -777,10 +773,16 @@ create_scc (ScanData *data) gboolean found = FALSE; gboolean found_bridge = FALSE; ColorData *color_data = NULL; + gboolean can_reduce_color = TRUE; for (i = dyn_array_ptr_size (&loop_stack) - 1; i >= 0; --i) { ScanData *other = (ScanData *)dyn_array_ptr_get (&loop_stack, i); found_bridge |= other->is_bridge; + if (dyn_array_ptr_size (&other->xrefs) > 0) { + // This scc will have more xrefs than the ones from the color_merge_array, + // we will need to create a new color to store this information. + can_reduce_color = FALSE; + } if (found_bridge || other == data) break; } @@ -788,13 +790,15 @@ create_scc (ScanData *data) if (found_bridge) { color_data = new_color (TRUE); ++num_colors_with_bridges; - } else { + } else if (can_reduce_color) { color_data = reduce_color (); + } else { + color_data = new_color (FALSE); } #if DUMP_GRAPH printf ("|SCC %p rooted in %s (%p) has bridge %d\n", color_data, safe_name_bridge (data->obj), data->obj, found_bridge); printf ("\tloop stack: "); - for (int i = 0; i < dyn_array_ptr_size (&loop_stack); ++i) { + for (i = 0; i < dyn_array_ptr_size (&loop_stack); ++i) { ScanData *other = dyn_array_ptr_get (&loop_stack, i); printf ("(%d/%d)", other->index, other->low_index); } @@ -824,10 +828,19 @@ create_scc (ScanData *data) dyn_array_ptr_add (&color_data->bridges, other->obj); } - // Maybe we should make sure we are not adding duplicates here. It is not really a problem - // since we will get rid of duplicates before submitting the SCCs to the client in gather_xrefs - if (color_data) - add_other_colors (color_data, &other->xrefs); + if (dyn_array_ptr_size (&other->xrefs) > 0) { + g_assert (color_data != NULL); + g_assert (can_reduce_color == FALSE); + // We need to eliminate duplicates early otherwise the heaviness property + // can change in gather_xrefs and it breaks down the loop that reports the + // xrefs to the client. + // + // We reuse the visited flag to mark the objects that are already part of + // the color_data array. The array was created above with the new_color call + // and xrefs were populated from color_merge_array, which is already + // deduplicated and every entry is marked as visited. + add_other_colors (color_data, &other->xrefs, TRUE); + } dyn_array_ptr_uninit (&other->xrefs); if (other == data) { @@ -837,11 +850,22 @@ create_scc (ScanData *data) } g_assert (found); + // Clear the visited flag on nodes that were added with add_other_colors in the loop above + if (!can_reduce_color) { + for (i = dyn_array_ptr_size (&color_merge_array); i < dyn_array_ptr_size (&color_data->other_colors); i++) { + ColorData *cd = (ColorData *)dyn_array_ptr_get (&color_data->other_colors, i); + g_assert (cd->visited); + cd->visited = FALSE; + } + } + #if DUMP_GRAPH - printf ("\tpoints-to-colors: "); - for (int i = 0; i < dyn_array_ptr_size (&color_data->other_colors); i++) - printf ("%p ", dyn_array_ptr_get (&color_data->other_colors, i)); - printf ("\n"); + if (color_data) { + printf ("\tpoints-to-colors: "); + for (i = 0; i < dyn_array_ptr_size (&color_data->other_colors); i++) + printf ("%p ", dyn_array_ptr_get (&color_data->other_colors, i)); + printf ("\n"); + } #endif } @@ -966,8 +990,11 @@ dump_color_table (const char *why, gboolean do_index) printf (" bridges: "); for (j = 0; j < dyn_array_ptr_size (&cd->bridges); ++j) { GCObject *obj = dyn_array_ptr_get (&cd->bridges, j); - ScanData *data = find_or_create_data (obj); - printf ("%d ", data->index); + ScanData *data = find_data (obj); + if (!data) + printf ("%p ", obj); + else + printf ("%p(%d) ", obj, data->index); } } printf ("\n"); @@ -1027,7 +1054,7 @@ processing_stw_step (void) #if defined (DUMP_GRAPH) printf ("----summary----\n"); printf ("bridges:\n"); - for (int i = 0; i < bridge_count; ++i) { + for (i = 0; i < bridge_count; ++i) { ScanData *sd = find_data (dyn_array_ptr_get (®istered_bridges, i)); printf ("\t%s (%p) index %d color %p\n", safe_name_bridge (sd->obj), sd->obj, sd->index, sd->color); } @@ -1141,6 +1168,7 @@ processing_build_callback_data (int generation) gather_xrefs (cd); reset_xrefs (cd); dyn_array_ptr_set_all (&cd->other_colors, &color_merge_array); + g_assert (color_visible_to_client (cd)); xref_count += dyn_array_ptr_size (&cd->other_colors); } } diff --git a/src/tests/GC/Features/Bridge/Bridge.cs b/src/tests/GC/Features/Bridge/Bridge.cs new file mode 100644 index 00000000000000..c481087943efcd --- /dev/null +++ b/src/tests/GC/Features/Bridge/Bridge.cs @@ -0,0 +1,422 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Threading; + +// False pinning cases are still possible. For example the thread can die +// and its stack reused by another thread. It also seems that a thread that +// does a GC can keep on the stack references to objects it encountered +// during the collection which are never released afterwards. This would +// be more likely to happen with the interpreter which reuses more stack. +public static class FinalizerHelpers +{ + private static IntPtr aptr; + + private static unsafe void NoPinActionHelper(int depth, Action act) + { + // Avoid tail calls + int* values = stackalloc int[20]; + aptr = new IntPtr(values); + + if (depth <= 0) + { + // + // When the action is called, this new thread might have not allocated + // anything yet in the nursery. This means that the address of the first + // object that would be allocated would be at the start of the tlab and + // implicitly the end of the previous tlab (address which can be in use + // when allocating on another thread, at checking if an object fits in + // this other tlab). We allocate a new dummy object to avoid this type + // of false pinning for most common cases. + // + new object(); + act(); + ClearStack(); + } + else + { + NoPinActionHelper(depth - 1, act); + } + } + + private static unsafe void ClearStack() + { + int* values = stackalloc int[25000]; + for (int i = 0; i < 25000; i++) + values[i] = 0; + } + + public static void PerformNoPinAction(Action act) + { + Thread thr = new Thread(() => NoPinActionHelper (128, act)); + thr.Start(); + thr.Join(); + } +} + +public class BridgeBase +{ + public static int fin_count; + + ~BridgeBase() + { + fin_count++; + } +} + +public class Bridge : BridgeBase +{ + public List Links = new List(); + public int __test; + + ~Bridge() + { + Links = null; + } +} + +public class Bridge1 : BridgeBase +{ + public object Link; + ~Bridge1() + { + Link = null; + } +} + +// 128 size +public class Bridge14 : BridgeBase +{ + public object a,b,c,d,e,f,g,h,i,j,k,l,m,n; +} + +public class NonBridge +{ + public object Link; +} + +public class NonBridge2 : NonBridge +{ + public object Link2; +} + +public class NonBridge14 +{ + public object a,b,c,d,e,f,g,h,i,j,k,l,m,n; +} + + +public class BridgeTest +{ + const int OBJ_COUNT = 100 * 1000; + const int LINK_COUNT = 2; + const int EXTRAS_COUNT = 0; + const double survival_rate = 0.1; + + // Pathological case for the original old algorithm. Goes + // away when merging is replaced by appending with flag + // checking. + static void SetupLinks() + { + var list = new List(); + for (int i = 0; i < OBJ_COUNT; ++i) + { + var bridge = new Bridge(); + list.Add(bridge); + } + + var r = new Random(100); + for (int i = 0; i < OBJ_COUNT; ++i) + { + var n = list[i]; + for (int j = 0; j < LINK_COUNT; ++j) + n.Links.Add(list[r.Next (OBJ_COUNT)]); + for (int j = 0; j < EXTRAS_COUNT; ++j) + n.Links.Add(j); + if (r.NextDouble() <= survival_rate) + n.__test = 1; + } + } + + const int LIST_LENGTH = 10000; + const int FAN_OUT = 10000; + + // Pathological case for the new algorithm. Goes away with + // the single-node elimination optimization, but will still + // persist if modified by using a ladder instead of the single + // list. + static void SetupLinkedFan() + { + var head = new Bridge(); + var tail = new NonBridge(); + head.Links.Add(tail); + for (int i = 0; i < LIST_LENGTH; ++i) + { + var obj = new NonBridge (); + tail.Link = obj; + tail = obj; + } + var list = new List(); + tail.Link = list; + for (int i = 0; i < FAN_OUT; ++i) + list.Add (new Bridge()); + } + + // Pathological case for the improved old algorithm. Goes + // away with copy-on-write DynArrays, but will still persist + // if modified by using a ladder instead of the single list. + static void SetupInverseFan() + { + var tail = new Bridge(); + object list = tail; + for (int i = 0; i < LIST_LENGTH; ++i) + { + var obj = new NonBridge(); + obj.Link = list; + list = obj; + } + var heads = new Bridge[FAN_OUT]; + for (int i = 0; i < FAN_OUT; ++i) + { + var obj = new Bridge(); + obj.Links.Add(list); + heads[i] = obj; + } + } + + // Not necessarily a pathology, but a special case of where we + // generate lots of "dead" SCCs. A non-bridge object that + // can't reach a bridge object can safely be removed from the + // graph. In this special case it's a linked list hanging off + // a bridge object. We can handle this by "forwarding" edges + // going to non-bridge nodes that have only a single outgoing + // edge. That collapses the whole list into a single node. + // We could remove that node, too, by removing non-bridge + // nodes with no outgoing edges. + static void SetupDeadList() + { + var head = new Bridge(); + var tail = new NonBridge(); + head.Links.Add(tail); + for (int i = 0; i < LIST_LENGTH; ++i) + { + var obj = new NonBridge(); + tail.Link = obj; + tail = obj; + } + } + + // Triggered a bug in the forwarding mechanic. + static void SetupSelfLinks() + { + var head = new Bridge(); + var tail = new NonBridge(); + head.Links.Add(tail); + tail.Link = tail; + } + + const int L0_COUNT = 50000; + const int L1_COUNT = 50000; + const int EXTRA_LEVELS = 4; + + // Set a complex graph from one bridge to a couple. + // The graph is designed to expose naive coloring on + // tarjan and SCC explosion on classic. + static void Spider() + { + Bridge a = new Bridge(); + Bridge b = new Bridge(); + + var l1 = new List(); + for (int i = 0; i < L0_COUNT; ++i) { + var l0 = new List(); + l0.Add(a); + l0.Add(b); + l1.Add(l0); + } + var last_level = l1; + for (int l = 0; l < EXTRA_LEVELS; ++l) { + int j = 0; + var l2 = new List(); + for (int i = 0; i < L1_COUNT; ++i) { + var tmp = new List(); + tmp.Add(last_level [j++ % last_level.Count]); + tmp.Add(last_level [j++ % last_level.Count]); + l2.Add(tmp); + } + last_level = l2; + } + Bridge c = new Bridge(); + c.Links.Add(last_level); + } + + // Simulates a graph with two nested cycles that is produces by + // the async state machine when `async Task M()` method gets its + // continuation rooted by an Action held by RunnableImplementor + // (ie. the task continuation is hooked through the SynchronizationContext + // implentation and rooted only by Android bridge objects). + static void NestedCycles() + { + Bridge runnableImplementor = new Bridge (); + Bridge byteArrayOutputStream = new Bridge (); + NonBridge2 action = new NonBridge2 (); + NonBridge displayClass = new NonBridge (); + NonBridge2 asyncStateMachineBox = new NonBridge2 (); + NonBridge2 asyncStreamWriter = new NonBridge2 (); + + runnableImplementor.Links.Add(action); + action.Link = displayClass; + action.Link2 = asyncStateMachineBox; + displayClass.Link = action; + asyncStateMachineBox.Link = asyncStreamWriter; + asyncStateMachineBox.Link2 = action; + asyncStreamWriter.Link = byteArrayOutputStream; + asyncStreamWriter.Link2 = asyncStateMachineBox; + } + + // Simulates a graph where a heavy node has its fanout components + // represented by cycles with back-references to the heavy node and + // references to the same bridge objects. + // This enters a pathological path in the SCC contraction where the + // links to the bridge objects need to be correctly deduplicated. The + // deduplication causes the heavy node to no longer be heavy. + static void FauxHeavyNodeWithCycles() + { + Bridge fanout = new Bridge(); + + // Need enough edges for the node to be considered heavy by bridgeless_color_is_heavy + NonBridge[] fauxHeavyNode = new NonBridge[100]; + for (int i = 0; i < fauxHeavyNode.Length; i++) + { + NonBridge2 cycle = new NonBridge2(); + cycle.Link = fanout; + cycle.Link2 = fauxHeavyNode; + fauxHeavyNode[i] = cycle; + } + + // Need at least HEAVY_REFS_MIN + 1 fan-in nodes + Bridge[] faninNodes = new Bridge[3]; + for (int i = 0; i < faninNodes.Length; i++) + { + faninNodes[i] = new Bridge(); + faninNodes[i].Links.Add(fauxHeavyNode); + } + } + + static void RunGraphTest(Action test) + { + Console.WriteLine("Start test {0}", test.Method.Name); + FinalizerHelpers.PerformNoPinAction(test); + Console.WriteLine("-graph built-"); + for (int i = 0; i < 5; i++) + { + Console.WriteLine("-GC {0}/5-", i); + GC.Collect (); + GC.WaitForPendingFinalizers(); + } + + Console.WriteLine("Finished test {0}, finalized {1}", test.Method.Name, Bridge.fin_count); + } + + static void TestLinkedList() + { + int count = Environment.ProcessorCount + 2; + var th = new Thread [count]; + for (int i = 0; i < count; ++i) + { + th [i] = new Thread( _ => + { + var lst = new ArrayList(); + for (var j = 0; j < 500 * 1000; j++) + { + lst.Add (new object()); + if ((j % 999) == 0) + lst.Add (new BridgeBase()); + if ((j % 1000) == 0) + new BridgeBase(); + if ((j % 50000) == 0) + lst = new ArrayList(); + } + }); + + th [i].Start(); + } + + for (int i = 0; i < count; ++i) + th [i].Join(); + + GC.Collect(2); + Console.WriteLine("Finished test LinkedTest, finalized {0}", BridgeBase.fin_count); + } + + //we fill 16Mb worth of stuff, eg, 256k objects + const int major_fill = 1024 * 256; + + //4mb nursery with 64 bytes objects -> alloc half + const int nursery_obj_count = 16 * 1024; + + static void SetupFragmentation() + where TBridge : new() + where TNonBridge : new() + { + const int loops = 4; + for (int k = 0; k < loops; k++) + { + Console.WriteLine("[{0}] CrashLoop {1}/{2}", DateTime.Now, k + 1, loops); + var arr = new object[major_fill]; + for (int i = 0; i < major_fill; i++) + arr[i] = new TNonBridge(); + GC.Collect(1); + Console.WriteLine("[{0}] major fill done", DateTime.Now); + + //induce massive fragmentation + for (int i = 0; i < major_fill; i += 4) + { + arr[i + 1] = null; + arr[i + 2] = null; + arr[i + 3] = null; + } + GC.Collect (1); + Console.WriteLine("[{0}] fragmentation done", DateTime.Now); + + //since 50% is garbage, do 2 fill passes + for (int j = 0; j < 2; ++j) + { + for (int i = 0; i < major_fill; i++) + { + if ((i % 1000) == 0) + new TBridge(); + else + arr[i] = new TBridge(); + } + } + Console.WriteLine("[{0}] done spewing bridges", DateTime.Now); + + for (int i = 0; i < major_fill; i++) + arr[i] = null; + GC.Collect (); + } + } + + public static int Main(string[] args) + { +// TestLinkedList(); // Crashes, but only in this multithreaded variant + RunGraphTest(SetupFragmentation); // This passes but the following crashes ?? +// RunGraphTest(SetupFragmentation); + RunGraphTest(SetupLinks); + RunGraphTest(SetupLinkedFan); + RunGraphTest(SetupInverseFan); + + RunGraphTest(SetupDeadList); + RunGraphTest(SetupSelfLinks); + RunGraphTest(NestedCycles); + RunGraphTest(FauxHeavyNodeWithCycles); +// RunGraphTest(Spider); // Crashes + return 100; + } +} diff --git a/src/tests/GC/Features/Bridge/Bridge.csproj b/src/tests/GC/Features/Bridge/Bridge.csproj new file mode 100644 index 00000000000000..29b8c0f5fd3a2d --- /dev/null +++ b/src/tests/GC/Features/Bridge/Bridge.csproj @@ -0,0 +1,11 @@ + + + + true + false + BuildOnly + + + + + diff --git a/src/tests/GC/Features/Bridge/BridgeTester.cs b/src/tests/GC/Features/Bridge/BridgeTester.cs new file mode 100644 index 00000000000000..960e39a5e6eb0d --- /dev/null +++ b/src/tests/GC/Features/Bridge/BridgeTester.cs @@ -0,0 +1,35 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +using System; +using System.Diagnostics; +using System.IO; +using System.Linq; +using System.Reflection; +using System.Runtime; +using System.Text; + +using Xunit; + +public class BridgeTester +{ + [Fact] + public static void RunTests() + { + string corerun = TestLibrary.Utilities.IsWindows ? "corerun.exe" : "corerun"; + string coreRoot = Environment.GetEnvironmentVariable("CORE_ROOT"); + string bridgeTestApp = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "Bridge.dll"); + + var startInfo = new ProcessStartInfo(Path.Combine(coreRoot, corerun), bridgeTestApp); + startInfo.EnvironmentVariables["MONO_GC_DEBUG"] = "bridge=BridgeBase,bridge-compare-to=new"; + startInfo.EnvironmentVariables["MONO_GC_PARAMS"] = "bridge-implementation=tarjan,bridge-require-precise-merge"; + + using (Process p = Process.Start(startInfo)) + { + p.WaitForExit(); + Console.WriteLine ("Bridge Test App returned {0}", p.ExitCode); + if (p.ExitCode != 100) + throw new Exception("Bridge Test App failed execution"); + } + } +} diff --git a/src/tests/GC/Features/Bridge/BridgeTester.csproj b/src/tests/GC/Features/Bridge/BridgeTester.csproj new file mode 100644 index 00000000000000..2e5ff67a32bf16 --- /dev/null +++ b/src/tests/GC/Features/Bridge/BridgeTester.csproj @@ -0,0 +1,17 @@ + + + true + true + + + + + + + + false + Content + Always + + + From b2c82475da6435fcdda7791379efedf0027bb02a Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 14 Apr 2025 12:40:00 -0300 Subject: [PATCH 42/52] [release/9.0-staging] [debugger] Fix debugging a x86 app in mixed mode (#114077) * Fixing get incomplete context information and assigning invalid information to the context later. * Fixing the copy and paste. * remove extra ; --------- Co-authored-by: Thays Grazia --- src/coreclr/debug/di/process.cpp | 4 ++++ src/coreclr/debug/di/rsthread.cpp | 13 ++++++++++++- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/coreclr/debug/di/process.cpp b/src/coreclr/debug/di/process.cpp index f12b6166019a04..6d82de9b5cdf2a 100644 --- a/src/coreclr/debug/di/process.cpp +++ b/src/coreclr/debug/di/process.cpp @@ -13377,7 +13377,11 @@ void CordbProcess::HandleDebugEventForInteropDebugging(const DEBUG_EVENT * pEven { LOG((LF_CORDB, LL_INFO100000, "W32ET::W32EL: hijack complete will restore context...\n")); DT_CONTEXT tempContext = { 0 }; +#ifdef TARGET_X86 + tempContext.ContextFlags = DT_CONTEXT_FULL | DT_CONTEXT_EXTENDED_REGISTERS; +#else tempContext.ContextFlags = DT_CONTEXT_FULL; +#endif HRESULT hr = pUnmanagedThread->GetThreadContext(&tempContext); _ASSERTE(SUCCEEDED(hr)); diff --git a/src/coreclr/debug/di/rsthread.cpp b/src/coreclr/debug/di/rsthread.cpp index 619b37c87ef8b8..cd7f79867a54d3 100644 --- a/src/coreclr/debug/di/rsthread.cpp +++ b/src/coreclr/debug/di/rsthread.cpp @@ -3721,9 +3721,15 @@ HRESULT CordbUnmanagedThread::SetupFirstChanceHijackForSync() LOG((LF_CORDB, LL_INFO10000, "CUT::SFCHFS: hijackCtx started as:\n")); LogContext(GetHijackCtx()); - // Save the thread's full context. + // Save the thread's full context for all platforms except for x86 because we need the + // DT_CONTEXT_EXTENDED_REGISTERS to avoid getting incomplete information and corrupt the thread context DT_CONTEXT context; +#ifdef TARGET_X86 + context.ContextFlags = DT_CONTEXT_FULL | DT_CONTEXT_EXTENDED_REGISTERS; +#else context.ContextFlags = DT_CONTEXT_FULL; +#endif + BOOL succ = DbiGetThreadContext(m_handle, &context); _ASSERTE(succ); // for debugging when GetThreadContext fails @@ -3733,7 +3739,12 @@ HRESULT CordbUnmanagedThread::SetupFirstChanceHijackForSync() LOG((LF_CORDB, LL_ERROR, "CUT::SFCHFS: DbiGetThreadContext error=0x%x\n", error)); } +#ifdef TARGET_X86 + GetHijackCtx()->ContextFlags = DT_CONTEXT_FULL | DT_CONTEXT_EXTENDED_REGISTERS; +#else GetHijackCtx()->ContextFlags = DT_CONTEXT_FULL; +#endif + CORDbgCopyThreadContext(GetHijackCtx(), &context); LOG((LF_CORDB, LL_INFO10000, "CUT::SFCHFS: thread=0x%x Hijacking for sync. Original context is:\n", this)); LogContext(GetHijackCtx()); From 213cce23a9129a4b1ba4c424c7aae79689178c85 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 14 Apr 2025 17:58:18 +0200 Subject: [PATCH 43/52] [release/9.0-staging] [infra][apple-mobile] Migrate MacCatalyst and iOS/tvOS simulator jobs to `osx.14.arm64.open` and `osx.15.amd64.open` queues (#114617) iOSSimulator, tvOSSimulator, MacCatalyst pipelines are migrated to: - `osx.15.amd64.open` - `osx.14.arm64.open` (until `osx.15.arm64.open` has enough machines) ## Newly failing test scenarios Some new failures were discovered during the migration. The tests were disabled and tracking issues were open to monitor progress for enablement. - System.Net.Sockets.Tests.SocketOptionNameTest.MulticastInterface_Set_AnyInterface_Succeeds - System.IO.IsolatedStorage - System.IO. MemoryMappedFiles - System.Net.Sockets.Tests.SendTo_.*.Datagram_UDP_AccessDenied_Throws_DoesNotBind --- .../coreclr/templates/helix-queues-setup.yml | 4 +- ...ntime-extra-platforms-ioslikesimulator.yml | 12 ++--- .../libraries/helix-queues-setup.yml | 4 +- eng/pipelines/runtime.yml | 3 +- .../System/IO/IsolatedStorage/RemoveTests.cs | 7 ++- .../tests/MemoryMappedViewAccessor.Tests.cs | 44 ++++++++++++------- .../tests/MemoryMappedViewStream.Tests.cs | 44 ++++++++++++------- .../tests/FunctionalTests/SendTo.cs | 1 + .../FunctionalTests/SocketOptionNameTest.cs | 1 + 9 files changed, 70 insertions(+), 50 deletions(-) diff --git a/eng/pipelines/coreclr/templates/helix-queues-setup.yml b/eng/pipelines/coreclr/templates/helix-queues-setup.yml index 815f297ff3060f..9ccad909568543 100644 --- a/eng/pipelines/coreclr/templates/helix-queues-setup.yml +++ b/eng/pipelines/coreclr/templates/helix-queues-setup.yml @@ -34,11 +34,11 @@ jobs: # iOS Simulator/Mac Catalyst arm64 - ${{ if in(parameters.platform, 'maccatalyst_arm64', 'iossimulator_arm64') }}: - - OSX.1200.Arm64.Open + - OSX.14.Arm64.Open # iOS/tvOS Simulator x64 & MacCatalyst x64 - ${{ if in(parameters.platform, 'iossimulator_x64', 'tvossimulator_x64', 'maccatalyst_x64') }}: - - OSX.1200.Amd64.Open + - OSX.15.Amd64.Open # Android arm64 - ${{ if in(parameters.platform, 'android_arm64') }}: diff --git a/eng/pipelines/extra-platforms/runtime-extra-platforms-ioslikesimulator.yml b/eng/pipelines/extra-platforms/runtime-extra-platforms-ioslikesimulator.yml index 7ce0a0c3568aac..75ad650c119d74 100644 --- a/eng/pipelines/extra-platforms/runtime-extra-platforms-ioslikesimulator.yml +++ b/eng/pipelines/extra-platforms/runtime-extra-platforms-ioslikesimulator.yml @@ -25,9 +25,7 @@ jobs: platforms: - iossimulator_x64 - tvossimulator_x64 - # don't run tests on arm64 PRs until we can get significantly more devices - - ${{ if eq(variables['isRollingBuild'], true) }}: - - iossimulator_arm64 + - iossimulator_arm64 variables: # map dependencies variables to local variables - name: librariesContainsChange @@ -61,9 +59,7 @@ jobs: platforms: - iossimulator_x64 - tvossimulator_x64 - # don't run tests on arm64 PRs until we can get significantly more devices - - ${{ if eq(variables['isRollingBuild'], true) }}: - - iossimulator_arm64 + - iossimulator_arm64 variables: - ${{ if and(eq(variables['System.TeamProject'], 'public'), eq(variables['Build.Reason'], 'PullRequest')) }}: - name: _HelixSource @@ -109,9 +105,7 @@ jobs: platforms: - iossimulator_x64 - tvossimulator_x64 - # don't run tests on arm64 PRs until we can get significantly more devices - - ${{ if eq(variables['isRollingBuild'], true) }}: - - iossimulator_arm64 + - iossimulator_arm64 variables: - ${{ if and(eq(variables['System.TeamProject'], 'public'), eq(variables['Build.Reason'], 'PullRequest')) }}: - name: _HelixSource diff --git a/eng/pipelines/libraries/helix-queues-setup.yml b/eng/pipelines/libraries/helix-queues-setup.yml index d6c83bd12137da..b94b108d03f6b8 100644 --- a/eng/pipelines/libraries/helix-queues-setup.yml +++ b/eng/pipelines/libraries/helix-queues-setup.yml @@ -99,11 +99,11 @@ jobs: # iOS Simulator/Mac Catalyst arm64 - ${{ if in(parameters.platform, 'maccatalyst_arm64', 'iossimulator_arm64') }}: - - OSX.1200.Arm64.Open + - OSX.14.Arm64.Open # iOS/tvOS Simulator x64 & MacCatalyst x64 - ${{ if in(parameters.platform, 'iossimulator_x64', 'tvossimulator_x64', 'maccatalyst_x64') }}: - - OSX.1200.Amd64.Open + - OSX.15.Amd64.Open # iOS devices - ${{ if in(parameters.platform, 'ios_arm64') }}: diff --git a/eng/pipelines/runtime.yml b/eng/pipelines/runtime.yml index 1e7170566df361..4a1010323440f3 100644 --- a/eng/pipelines/runtime.yml +++ b/eng/pipelines/runtime.yml @@ -1086,8 +1086,7 @@ extends: runtimeFlavor: mono platforms: - maccatalyst_x64 - - ${{ if eq(variables['isRollingBuild'], true) }}: - - maccatalyst_arm64 + - maccatalyst_arm64 variables: # map dependencies variables to local variables - name: librariesContainsChange diff --git a/src/libraries/System.IO.IsolatedStorage/tests/System/IO/IsolatedStorage/RemoveTests.cs b/src/libraries/System.IO.IsolatedStorage/tests/System/IO/IsolatedStorage/RemoveTests.cs index ed0e72a6f53304..f2b9e37f31a909 100644 --- a/src/libraries/System.IO.IsolatedStorage/tests/System/IO/IsolatedStorage/RemoveTests.cs +++ b/src/libraries/System.IO.IsolatedStorage/tests/System/IO/IsolatedStorage/RemoveTests.cs @@ -8,6 +8,7 @@ namespace System.IO.IsolatedStorage public class RemoveTests : IsoStorageTest { [Fact] + [ActiveIssue("https://github.com/dotnet/runtime/issues/114403", typeof(PlatformDetection), nameof(PlatformDetection.IsMacCatalyst))] public void RemoveUserStoreForApplication() { TestHelper.WipeStores(); @@ -23,6 +24,7 @@ public void RemoveUserStoreForApplication() } [Fact] + [ActiveIssue("https://github.com/dotnet/runtime/issues/114403", typeof(PlatformDetection), nameof(PlatformDetection.IsMacCatalyst))] public void RemoveUserStoreForAssembly() { TestHelper.WipeStores(); @@ -38,6 +40,7 @@ public void RemoveUserStoreForAssembly() } [Fact] + [ActiveIssue("https://github.com/dotnet/runtime/issues/114403", typeof(PlatformDetection), nameof(PlatformDetection.IsMacCatalyst))] public void RemoveUserStoreForDomain() { TestHelper.WipeStores(); @@ -54,7 +57,9 @@ public void RemoveUserStoreForDomain() } } - [Theory, MemberData(nameof(ValidStores))] + [Theory] + [MemberData(nameof(ValidStores))] + [ActiveIssue("https://github.com/dotnet/runtime/issues/114403", typeof(PlatformDetection), nameof(PlatformDetection.IsMacCatalyst))] public void RemoveStoreWithContent(PresetScopes scope) { TestHelper.WipeStores(); diff --git a/src/libraries/System.IO.MemoryMappedFiles/tests/MemoryMappedViewAccessor.Tests.cs b/src/libraries/System.IO.MemoryMappedFiles/tests/MemoryMappedViewAccessor.Tests.cs index 6747758c7b5330..3b78641a006839 100644 --- a/src/libraries/System.IO.MemoryMappedFiles/tests/MemoryMappedViewAccessor.Tests.cs +++ b/src/libraries/System.IO.MemoryMappedFiles/tests/MemoryMappedViewAccessor.Tests.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. using Microsoft.Win32.SafeHandles; +using System.Collections.Generic; using System.Runtime.CompilerServices; using Microsoft.DotNet.XUnitExtensions; using Xunit; @@ -56,24 +57,33 @@ public void InvalidArguments() } } + public static IEnumerable AccessLevelCombinationsData() + { + yield return new object[] { MemoryMappedFileAccess.ReadWriteExecute, MemoryMappedFileAccess.Read }; + yield return new object[] { MemoryMappedFileAccess.ReadWriteExecute, MemoryMappedFileAccess.Write }; + yield return new object[] { MemoryMappedFileAccess.ReadWriteExecute, MemoryMappedFileAccess.ReadWrite }; + yield return new object[] { MemoryMappedFileAccess.ReadWriteExecute, MemoryMappedFileAccess.CopyOnWrite }; + yield return new object[] { MemoryMappedFileAccess.ReadWriteExecute, MemoryMappedFileAccess.ReadExecute }; + yield return new object[] { MemoryMappedFileAccess.ReadWriteExecute, MemoryMappedFileAccess.ReadWriteExecute }; + yield return new object[] { MemoryMappedFileAccess.ReadExecute, MemoryMappedFileAccess.Read }; + yield return new object[] { MemoryMappedFileAccess.ReadExecute, MemoryMappedFileAccess.CopyOnWrite }; + // https://github.com/dotnet/runtime/issues/114403 + if (PlatformDetection.IsNotMacCatalyst) + { + yield return new object[] { MemoryMappedFileAccess.ReadExecute, MemoryMappedFileAccess.ReadExecute }; + } + yield return new object[] { MemoryMappedFileAccess.CopyOnWrite, MemoryMappedFileAccess.Read }; + yield return new object[] { MemoryMappedFileAccess.CopyOnWrite, MemoryMappedFileAccess.CopyOnWrite }; + yield return new object[] { MemoryMappedFileAccess.ReadWrite, MemoryMappedFileAccess.Read }; + yield return new object[] { MemoryMappedFileAccess.ReadWrite, MemoryMappedFileAccess.Write }; + yield return new object[] { MemoryMappedFileAccess.ReadWrite, MemoryMappedFileAccess.ReadWrite }; + yield return new object[] { MemoryMappedFileAccess.ReadWrite, MemoryMappedFileAccess.CopyOnWrite }; + yield return new object[] { MemoryMappedFileAccess.Read, MemoryMappedFileAccess.Read }; + yield return new object[] { MemoryMappedFileAccess.Read, MemoryMappedFileAccess.CopyOnWrite }; + } + [ConditionalTheory] - [InlineData(MemoryMappedFileAccess.ReadWriteExecute, MemoryMappedFileAccess.Read)] - [InlineData(MemoryMappedFileAccess.ReadWriteExecute, MemoryMappedFileAccess.Write)] - [InlineData(MemoryMappedFileAccess.ReadWriteExecute, MemoryMappedFileAccess.ReadWrite)] - [InlineData(MemoryMappedFileAccess.ReadWriteExecute, MemoryMappedFileAccess.CopyOnWrite)] - [InlineData(MemoryMappedFileAccess.ReadWriteExecute, MemoryMappedFileAccess.ReadExecute)] - [InlineData(MemoryMappedFileAccess.ReadWriteExecute, MemoryMappedFileAccess.ReadWriteExecute)] - [InlineData(MemoryMappedFileAccess.ReadExecute, MemoryMappedFileAccess.Read)] - [InlineData(MemoryMappedFileAccess.ReadExecute, MemoryMappedFileAccess.CopyOnWrite)] - [InlineData(MemoryMappedFileAccess.ReadExecute, MemoryMappedFileAccess.ReadExecute)] - [InlineData(MemoryMappedFileAccess.CopyOnWrite, MemoryMappedFileAccess.Read)] - [InlineData(MemoryMappedFileAccess.CopyOnWrite, MemoryMappedFileAccess.CopyOnWrite)] - [InlineData(MemoryMappedFileAccess.ReadWrite, MemoryMappedFileAccess.Read)] - [InlineData(MemoryMappedFileAccess.ReadWrite, MemoryMappedFileAccess.Write)] - [InlineData(MemoryMappedFileAccess.ReadWrite, MemoryMappedFileAccess.ReadWrite)] - [InlineData(MemoryMappedFileAccess.ReadWrite, MemoryMappedFileAccess.CopyOnWrite)] - [InlineData(MemoryMappedFileAccess.Read, MemoryMappedFileAccess.Read)] - [InlineData(MemoryMappedFileAccess.Read, MemoryMappedFileAccess.CopyOnWrite)] + [MemberData(nameof(AccessLevelCombinationsData))] public void ValidAccessLevelCombinations(MemoryMappedFileAccess mapAccess, MemoryMappedFileAccess viewAccess) { const int Capacity = 4096; diff --git a/src/libraries/System.IO.MemoryMappedFiles/tests/MemoryMappedViewStream.Tests.cs b/src/libraries/System.IO.MemoryMappedFiles/tests/MemoryMappedViewStream.Tests.cs index f279b8c33f98f7..cd1af097e216f4 100644 --- a/src/libraries/System.IO.MemoryMappedFiles/tests/MemoryMappedViewStream.Tests.cs +++ b/src/libraries/System.IO.MemoryMappedFiles/tests/MemoryMappedViewStream.Tests.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. using Microsoft.Win32.SafeHandles; +using System.Collections.Generic; using System.Runtime.CompilerServices; using Microsoft.DotNet.XUnitExtensions; using Xunit; @@ -56,24 +57,33 @@ public void InvalidArguments() } } + public static IEnumerable AccessLevelCombinationsData() + { + yield return new object[] { MemoryMappedFileAccess.ReadWriteExecute, MemoryMappedFileAccess.Read }; + yield return new object[] { MemoryMappedFileAccess.ReadWriteExecute, MemoryMappedFileAccess.Write }; + yield return new object[] { MemoryMappedFileAccess.ReadWriteExecute, MemoryMappedFileAccess.ReadWrite }; + yield return new object[] { MemoryMappedFileAccess.ReadWriteExecute, MemoryMappedFileAccess.CopyOnWrite }; + yield return new object[] { MemoryMappedFileAccess.ReadWriteExecute, MemoryMappedFileAccess.ReadExecute }; + yield return new object[] { MemoryMappedFileAccess.ReadWriteExecute, MemoryMappedFileAccess.ReadWriteExecute }; + yield return new object[] { MemoryMappedFileAccess.ReadExecute, MemoryMappedFileAccess.Read }; + yield return new object[] { MemoryMappedFileAccess.ReadExecute, MemoryMappedFileAccess.CopyOnWrite }; + // https://github.com/dotnet/runtime/issues/114403 + if (PlatformDetection.IsNotMacCatalyst) + { + yield return new object[] { MemoryMappedFileAccess.ReadExecute, MemoryMappedFileAccess.ReadExecute }; + } + yield return new object[] { MemoryMappedFileAccess.CopyOnWrite, MemoryMappedFileAccess.Read }; + yield return new object[] { MemoryMappedFileAccess.CopyOnWrite, MemoryMappedFileAccess.CopyOnWrite }; + yield return new object[] { MemoryMappedFileAccess.ReadWrite, MemoryMappedFileAccess.Read }; + yield return new object[] { MemoryMappedFileAccess.ReadWrite, MemoryMappedFileAccess.Write }; + yield return new object[] { MemoryMappedFileAccess.ReadWrite, MemoryMappedFileAccess.ReadWrite }; + yield return new object[] { MemoryMappedFileAccess.ReadWrite, MemoryMappedFileAccess.CopyOnWrite }; + yield return new object[] { MemoryMappedFileAccess.Read, MemoryMappedFileAccess.Read }; + yield return new object[] { MemoryMappedFileAccess.Read, MemoryMappedFileAccess.CopyOnWrite }; + } + [ConditionalTheory] - [InlineData(MemoryMappedFileAccess.ReadWriteExecute, MemoryMappedFileAccess.Read)] - [InlineData(MemoryMappedFileAccess.ReadWriteExecute, MemoryMappedFileAccess.Write)] - [InlineData(MemoryMappedFileAccess.ReadWriteExecute, MemoryMappedFileAccess.ReadWrite)] - [InlineData(MemoryMappedFileAccess.ReadWriteExecute, MemoryMappedFileAccess.CopyOnWrite)] - [InlineData(MemoryMappedFileAccess.ReadWriteExecute, MemoryMappedFileAccess.ReadExecute)] - [InlineData(MemoryMappedFileAccess.ReadWriteExecute, MemoryMappedFileAccess.ReadWriteExecute)] - [InlineData(MemoryMappedFileAccess.ReadExecute, MemoryMappedFileAccess.Read)] - [InlineData(MemoryMappedFileAccess.ReadExecute, MemoryMappedFileAccess.CopyOnWrite)] - [InlineData(MemoryMappedFileAccess.ReadExecute, MemoryMappedFileAccess.ReadExecute)] - [InlineData(MemoryMappedFileAccess.CopyOnWrite, MemoryMappedFileAccess.Read)] - [InlineData(MemoryMappedFileAccess.CopyOnWrite, MemoryMappedFileAccess.CopyOnWrite)] - [InlineData(MemoryMappedFileAccess.ReadWrite, MemoryMappedFileAccess.Read)] - [InlineData(MemoryMappedFileAccess.ReadWrite, MemoryMappedFileAccess.Write)] - [InlineData(MemoryMappedFileAccess.ReadWrite, MemoryMappedFileAccess.ReadWrite)] - [InlineData(MemoryMappedFileAccess.ReadWrite, MemoryMappedFileAccess.CopyOnWrite)] - [InlineData(MemoryMappedFileAccess.Read, MemoryMappedFileAccess.Read)] - [InlineData(MemoryMappedFileAccess.Read, MemoryMappedFileAccess.CopyOnWrite)] + [MemberData(nameof(AccessLevelCombinationsData))] public void ValidAccessLevelCombinations(MemoryMappedFileAccess mapAccess, MemoryMappedFileAccess viewAccess) { const int Capacity = 4096; diff --git a/src/libraries/System.Net.Sockets/tests/FunctionalTests/SendTo.cs b/src/libraries/System.Net.Sockets/tests/FunctionalTests/SendTo.cs index 7a3c33b64bf796..0b01469e574e91 100644 --- a/src/libraries/System.Net.Sockets/tests/FunctionalTests/SendTo.cs +++ b/src/libraries/System.Net.Sockets/tests/FunctionalTests/SendTo.cs @@ -95,6 +95,7 @@ public async Task Datagram_UDP_ShouldImplicitlyBindLocalEndpoint() [Fact] [SkipOnPlatform(TestPlatforms.FreeBSD, "FreeBSD allows sendto() to broadcast")] + [ActiveIssue("https://github.com/dotnet/runtime/issues/114450", typeof(PlatformDetection), nameof(PlatformDetection.IsMacCatalyst), nameof(PlatformDetection.IsX64Process))] public async Task Datagram_UDP_AccessDenied_Throws_DoesNotBind() { IPEndPoint invalidEndpoint = new IPEndPoint(IPAddress.Broadcast, 1234); diff --git a/src/libraries/System.Net.Sockets/tests/FunctionalTests/SocketOptionNameTest.cs b/src/libraries/System.Net.Sockets/tests/FunctionalTests/SocketOptionNameTest.cs index 26752dd31f5dcb..2d7139a05803cb 100644 --- a/src/libraries/System.Net.Sockets/tests/FunctionalTests/SocketOptionNameTest.cs +++ b/src/libraries/System.Net.Sockets/tests/FunctionalTests/SocketOptionNameTest.cs @@ -67,6 +67,7 @@ public void MulticastOption_CreateSocketSetGetOption_GroupAndInterfaceIndex_SetS [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotWindowsNanoNorServerCore))] // Skip on Nano: https://github.com/dotnet/runtime/issues/26286 [ActiveIssue("https://github.com/dotnet/runtime/issues/104547", typeof(PlatformDetection), nameof(PlatformDetection.IsQemuLinux))] + [ActiveIssue("https://github.com/dotnet/runtime/issues/113827", typeof(PlatformDetection), nameof(PlatformDetection.IsAppleMobile))] public async Task MulticastInterface_Set_AnyInterface_Succeeds() { // On all platforms, index 0 means "any interface" From 1d2735a63d3142010e362faa226d045a714032eb Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Mon, 14 Apr 2025 13:16:23 -0600 Subject: [PATCH 44/52] Update dependencies from https://github.com/dotnet/cecil build 20250413.4 (#114615) Microsoft.SourceBuild.Intermediate.cecil , Microsoft.DotNet.Cecil From Version 0.11.5-alpha.25206.5 -> To Version 0.11.5-alpha.25213.4 Co-authored-by: dotnet-maestro[bot] --- NuGet.config | 2 -- eng/Version.Details.xml | 8 ++++---- eng/Versions.props | 2 +- 3 files changed, 5 insertions(+), 7 deletions(-) diff --git a/NuGet.config b/NuGet.config index 13fbfbde8b7243..ce16c36d7a40be 100644 --- a/NuGet.config +++ b/NuGet.config @@ -9,11 +9,9 @@ - - - + https://github.com/dotnet/cecil - 9c8b212362f8b11e1df43daecb8b3f931b5adb06 + a8336269316c42f8164fe7bf45972dd8a81e52dc diff --git a/eng/Versions.props b/eng/Versions.props index f0fb67f3d8e762..b78f1cfba3ffc1 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -215,7 +215,7 @@ 9.0.0-preview-20241010.1 - 0.11.5-alpha.25206.5 + 0.11.5-alpha.25213.4 9.0.0-rtm.24511.16 From 4279ed3ec92019a07eeb7cb50917b5e40d8ad4f4 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Mon, 14 Apr 2025 13:21:11 -0600 Subject: [PATCH 45/52] Update dependencies from https://github.com/dotnet/sdk build 20250411.33 (#114613) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Microsoft.SourceBuild.Intermediate.sdk , Microsoft.DotNet.ApiCompat.Task From Version 9.0.105-servicing.25164.42 -> To Version 9.0.106-servicing.25211.33 Co-authored-by: dotnet-maestro[bot] Co-authored-by: Carlos Sánchez López <1175054+carlossanlop@users.noreply.github.com> --- NuGet.config | 1 + eng/Version.Details.xml | 8 ++++---- eng/Versions.props | 2 +- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/NuGet.config b/NuGet.config index ce16c36d7a40be..a43f7b2ee88ad5 100644 --- a/NuGet.config +++ b/NuGet.config @@ -12,6 +12,7 @@ + - + https://github.com/dotnet/sdk - 8d515d2a57e0c45a81795d7b133300fd8944f3f9 + fe6d1ced4303c33df9e0b6ceb1264fd0fbb77b7f diff --git a/eng/Versions.props b/eng/Versions.props index b78f1cfba3ffc1..e4138adf62f28a 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -83,7 +83,7 @@ 0.2.0 - 9.0.105 + 9.0.106 9.0.0-beta.25208.6 9.0.0-beta.25208.6 From 3889f21420ae929c649a6f1e21b04a4fc4c6482d Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Mon, 14 Apr 2025 13:29:29 -0600 Subject: [PATCH 46/52] Update dependencies from https://github.com/dotnet/runtime-assets build 20250411.3 (#114589) Microsoft.DotNet.CilStrip.Sources , System.ComponentModel.TypeConverter.TestData , System.Data.Common.TestData , System.Drawing.Common.TestData , System.Formats.Tar.TestData , System.IO.Compression.TestData , System.IO.Packaging.TestData , System.Net.TestData , System.Private.Runtime.UnicodeData , System.Runtime.Numerics.TestData , System.Runtime.TimeZoneData , System.Security.Cryptography.X509Certificates.TestData , System.Text.RegularExpressions.TestData , System.Windows.Extensions.TestData From Version 9.0.0-beta.25209.2 -> To Version 9.0.0-beta.25211.3 Co-authored-by: dotnet-maestro[bot] --- eng/Version.Details.xml | 56 ++++++++++++++++++++--------------------- eng/Versions.props | 28 ++++++++++----------- 2 files changed, 42 insertions(+), 42 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index e7dd28946664d3..6d742f13fa5bf4 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -174,57 +174,57 @@ https://github.com/dotnet/arcade aa61e8c20a869bcc994f8b29eb07d927d2bec6f4 - + https://github.com/dotnet/runtime-assets - f61574bfaaedbf06a84426134b44af1be35bfd62 + c9371153c0f06168c3344b806331a29389d1171e - + https://github.com/dotnet/runtime-assets - f61574bfaaedbf06a84426134b44af1be35bfd62 + c9371153c0f06168c3344b806331a29389d1171e - + https://github.com/dotnet/runtime-assets - f61574bfaaedbf06a84426134b44af1be35bfd62 + c9371153c0f06168c3344b806331a29389d1171e - + https://github.com/dotnet/runtime-assets - f61574bfaaedbf06a84426134b44af1be35bfd62 + c9371153c0f06168c3344b806331a29389d1171e - + https://github.com/dotnet/runtime-assets - f61574bfaaedbf06a84426134b44af1be35bfd62 + c9371153c0f06168c3344b806331a29389d1171e - + https://github.com/dotnet/runtime-assets - f61574bfaaedbf06a84426134b44af1be35bfd62 + c9371153c0f06168c3344b806331a29389d1171e - + https://github.com/dotnet/runtime-assets - f61574bfaaedbf06a84426134b44af1be35bfd62 + c9371153c0f06168c3344b806331a29389d1171e - + https://github.com/dotnet/runtime-assets - f61574bfaaedbf06a84426134b44af1be35bfd62 + c9371153c0f06168c3344b806331a29389d1171e - + https://github.com/dotnet/runtime-assets - f61574bfaaedbf06a84426134b44af1be35bfd62 + c9371153c0f06168c3344b806331a29389d1171e - + https://github.com/dotnet/runtime-assets - f61574bfaaedbf06a84426134b44af1be35bfd62 + c9371153c0f06168c3344b806331a29389d1171e - + https://github.com/dotnet/runtime-assets - f61574bfaaedbf06a84426134b44af1be35bfd62 + c9371153c0f06168c3344b806331a29389d1171e - + https://github.com/dotnet/runtime-assets - f61574bfaaedbf06a84426134b44af1be35bfd62 + c9371153c0f06168c3344b806331a29389d1171e - + https://github.com/dotnet/runtime-assets - f61574bfaaedbf06a84426134b44af1be35bfd62 + c9371153c0f06168c3344b806331a29389d1171e https://github.com/dotnet/llvm-project @@ -356,9 +356,9 @@ https://github.com/dotnet/hotreload-utils 46df3d5e763fdd0e57eeafcb898a86bb955483cb - + https://github.com/dotnet/runtime-assets - f61574bfaaedbf06a84426134b44af1be35bfd62 + c9371153c0f06168c3344b806331a29389d1171e https://github.com/dotnet/roslyn diff --git a/eng/Versions.props b/eng/Versions.props index e4138adf62f28a..b3b173be2b1acd 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -141,20 +141,20 @@ 8.0.0 8.0.0 - 9.0.0-beta.25209.2 - 9.0.0-beta.25209.2 - 9.0.0-beta.25209.2 - 9.0.0-beta.25209.2 - 9.0.0-beta.25209.2 - 9.0.0-beta.25209.2 - 9.0.0-beta.25209.2 - 9.0.0-beta.25209.2 - 9.0.0-beta.25209.2 - 9.0.0-beta.25209.2 - 9.0.0-beta.25209.2 - 9.0.0-beta.25209.2 - 9.0.0-beta.25209.2 - 9.0.0-beta.25209.2 + 9.0.0-beta.25211.3 + 9.0.0-beta.25211.3 + 9.0.0-beta.25211.3 + 9.0.0-beta.25211.3 + 9.0.0-beta.25211.3 + 9.0.0-beta.25211.3 + 9.0.0-beta.25211.3 + 9.0.0-beta.25211.3 + 9.0.0-beta.25211.3 + 9.0.0-beta.25211.3 + 9.0.0-beta.25211.3 + 9.0.0-beta.25211.3 + 9.0.0-beta.25211.3 + 9.0.0-beta.25211.3 1.0.0-prerelease.24462.2 1.0.0-prerelease.24462.2 From fdf2971bee5811807d6f7240848dc49ad79f15cc Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Mon, 14 Apr 2025 14:46:51 -0500 Subject: [PATCH 47/52] [release/9.0-staging] Update dependencies from dotnet/icu (#114254) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Update dependencies from https://github.com/dotnet/icu build 20250402.1 Microsoft.NETCore.Runtime.ICU.Transport From Version 9.0.0-rtm.25177.1 -> To Version 9.0.0-rtm.25202.1 * Update dependencies from https://github.com/dotnet/icu build 20250403.1 Microsoft.NETCore.Runtime.ICU.Transport From Version 9.0.0-rtm.25177.1 -> To Version 9.0.0-rtm.25203.1 * Update dependencies from https://github.com/dotnet/icu build 20250405.1 Microsoft.NETCore.Runtime.ICU.Transport From Version 9.0.0-rtm.25177.1 -> To Version 9.0.0-rtm.25205.1 * Update dependencies from https://github.com/dotnet/icu build 20250407.1 Microsoft.NETCore.Runtime.ICU.Transport From Version 9.0.0-rtm.25177.1 -> To Version 9.0.0-rtm.25207.1 * Update dependencies from https://github.com/dotnet/icu build 20250409.2 Microsoft.NETCore.Runtime.ICU.Transport From Version 9.0.0-rtm.25177.1 -> To Version 9.0.0-rtm.25209.2 * Update dependencies from https://github.com/dotnet/icu build 20250409.3 Microsoft.NETCore.Runtime.ICU.Transport From Version 9.0.0-rtm.25177.1 -> To Version 9.0.0-rtm.25209.3 * Update dependencies from https://github.com/dotnet/icu build 20250411.1 Microsoft.NETCore.Runtime.ICU.Transport From Version 9.0.0-rtm.25177.1 -> To Version 9.0.0-rtm.25211.1 * Update dependencies from https://github.com/dotnet/icu build 20250412.1 Microsoft.NETCore.Runtime.ICU.Transport From Version 9.0.0-rtm.25177.1 -> To Version 9.0.0-rtm.25212.1 --------- Co-authored-by: dotnet-maestro[bot] Co-authored-by: David Cantú --- eng/Version.Details.xml | 4 ++-- eng/Versions.props | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 6d742f13fa5bf4..624007e65a18d5 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -1,8 +1,8 @@ - + https://github.com/dotnet/icu - 643270e8dce547aefc86763824b7d0abcbfadd0e + 855a75965f9dcfbd835dbd7000a95060d0adabaa https://github.com/dotnet/msquic diff --git a/eng/Versions.props b/eng/Versions.props index b3b173be2b1acd..dfa0f5bc0b3f87 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -219,7 +219,7 @@ 9.0.0-rtm.24511.16 - 9.0.0-rtm.25177.1 + 9.0.0-rtm.25212.1 9.0.0-rtm.24466.4 2.4.8 From 38d99eb2f25d814e7344b5c400a350553b2aee21 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Mon, 14 Apr 2025 13:50:25 -0600 Subject: [PATCH 48/52] [release/9.0] Update dependencies from dotnet/emsdk (#114576) * Update dependencies from https://github.com/dotnet/emsdk build 20250411.5 Microsoft.SourceBuild.Intermediate.emsdk , Microsoft.NET.Workload.Emscripten.Current.Manifest-9.0.100 , Microsoft.NET.Workload.Emscripten.Current.Manifest-9.0.100.Transport From Version 9.0.5-servicing.25209.3 -> To Version 9.0.5-servicing.25211.5 Dependency coherency updates runtime.linux-arm64.Microsoft.NETCore.Runtime.JIT.Tools,runtime.linux-x64.Microsoft.NETCore.Runtime.JIT.Tools,runtime.linux-musl-arm64.Microsoft.NETCore.Runtime.JIT.Tools,runtime.linux-musl-x64.Microsoft.NETCore.Runtime.JIT.Tools,runtime.win-arm64.Microsoft.NETCore.Runtime.JIT.Tools,runtime.win-x64.Microsoft.NETCore.Runtime.JIT.Tools,runtime.osx-arm64.Microsoft.NETCore.Runtime.JIT.Tools,runtime.osx-x64.Microsoft.NETCore.Runtime.JIT.Tools,runtime.linux-arm64.Microsoft.NETCore.Runtime.Mono.LLVM.Sdk,runtime.linux-arm64.Microsoft.NETCore.Runtime.Mono.LLVM.Tools,runtime.linux-musl-arm64.Microsoft.NETCore.Runtime.Mono.LLVM.Sdk,runtime.linux-musl-arm64.Microsoft.NETCore.Runtime.Mono.LLVM.Tools,runtime.linux-x64.Microsoft.NETCore.Runtime.Mono.LLVM.Sdk,runtime.linux-x64.Microsoft.NETCore.Runtime.Mono.LLVM.Tools,runtime.linux-musl-x64.Microsoft.NETCore.Runtime.Mono.LLVM.Sdk,runtime.linux-musl-x64.Microsoft.NETCore.Runtime.Mono.LLVM.Tools,runtime.win-x64.Microsoft.NETCore.Runtime.Mono.LLVM.Sdk,runtime.win-x64.Microsoft.NETCore.Runtime.Mono.LLVM.Tools,runtime.osx-arm64.Microsoft.NETCore.Runtime.Mono.LLVM.Sdk,runtime.osx-arm64.Microsoft.NETCore.Runtime.Mono.LLVM.Tools,runtime.osx-x64.Microsoft.NETCore.Runtime.Mono.LLVM.Sdk,runtime.osx-x64.Microsoft.NETCore.Runtime.Mono.LLVM.Tools From Version 19.1.0-alpha.1.25163.1 -> To Version 19.1.0-alpha.1.25209.2 (parent: Microsoft.NET.Workload.Emscripten.Current.Manifest-9.0.100.Transport * Update dependencies from https://github.com/dotnet/emsdk build 20250412.1 Microsoft.SourceBuild.Intermediate.emsdk , Microsoft.NET.Workload.Emscripten.Current.Manifest-9.0.100 , Microsoft.NET.Workload.Emscripten.Current.Manifest-9.0.100.Transport From Version 9.0.5-servicing.25209.3 -> To Version 9.0.5-servicing.25212.1 --------- Co-authored-by: dotnet-maestro[bot] --- NuGet.config | 2 +- eng/Version.Details.xml | 98 ++++++++++++++++++++--------------------- eng/Versions.props | 46 +++++++++---------- 3 files changed, 73 insertions(+), 73 deletions(-) diff --git a/NuGet.config b/NuGet.config index 33e76bd44d00c2..88f53b050dbb68 100644 --- a/NuGet.config +++ b/NuGet.config @@ -9,7 +9,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index cef951d29698bb..735ff952b5d379 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -12,37 +12,37 @@ https://github.com/dotnet/wcf 7f504aabb1988e9a093c1e74d8040bd52feb2f01 - + https://github.com/dotnet/llvm-project - 158c0c35f7a4ca5b2214cb259ba581396458c502 + 615d41dd7f8de828f0bd0b6f65f7de4864ae8d12 - + https://github.com/dotnet/llvm-project - 158c0c35f7a4ca5b2214cb259ba581396458c502 + 615d41dd7f8de828f0bd0b6f65f7de4864ae8d12 - + https://github.com/dotnet/llvm-project - 158c0c35f7a4ca5b2214cb259ba581396458c502 + 615d41dd7f8de828f0bd0b6f65f7de4864ae8d12 - + https://github.com/dotnet/llvm-project - 158c0c35f7a4ca5b2214cb259ba581396458c502 + 615d41dd7f8de828f0bd0b6f65f7de4864ae8d12 - + https://github.com/dotnet/llvm-project - 158c0c35f7a4ca5b2214cb259ba581396458c502 + 615d41dd7f8de828f0bd0b6f65f7de4864ae8d12 - + https://github.com/dotnet/llvm-project - 158c0c35f7a4ca5b2214cb259ba581396458c502 + 615d41dd7f8de828f0bd0b6f65f7de4864ae8d12 - + https://github.com/dotnet/llvm-project - 158c0c35f7a4ca5b2214cb259ba581396458c502 + 615d41dd7f8de828f0bd0b6f65f7de4864ae8d12 - + https://github.com/dotnet/llvm-project - 158c0c35f7a4ca5b2214cb259ba581396458c502 + 615d41dd7f8de828f0bd0b6f65f7de4864ae8d12 https://github.com/dotnet/command-line-api @@ -64,18 +64,18 @@ 8debcd23b73a27992a5fdb2229f546e453619d11 - + https://github.com/dotnet/emsdk - 3cddc1fe20f0a0c08a1c3942a82c46413e5cc00a + 78f6f07d38e8755e573039a8aa04e131d3e59b76 https://github.com/dotnet/emsdk - 3cddc1fe20f0a0c08a1c3942a82c46413e5cc00a + 78f6f07d38e8755e573039a8aa04e131d3e59b76 - + https://github.com/dotnet/emsdk - 3cddc1fe20f0a0c08a1c3942a82c46413e5cc00a + 78f6f07d38e8755e573039a8aa04e131d3e59b76 @@ -226,61 +226,61 @@ https://github.com/dotnet/runtime-assets 739921bd3405841c06d3f74701c9e6ccfbd19e2e - + https://github.com/dotnet/llvm-project - 158c0c35f7a4ca5b2214cb259ba581396458c502 + 615d41dd7f8de828f0bd0b6f65f7de4864ae8d12 - + https://github.com/dotnet/llvm-project - 158c0c35f7a4ca5b2214cb259ba581396458c502 + 615d41dd7f8de828f0bd0b6f65f7de4864ae8d12 - + https://github.com/dotnet/llvm-project - 158c0c35f7a4ca5b2214cb259ba581396458c502 + 615d41dd7f8de828f0bd0b6f65f7de4864ae8d12 - + https://github.com/dotnet/llvm-project - 158c0c35f7a4ca5b2214cb259ba581396458c502 + 615d41dd7f8de828f0bd0b6f65f7de4864ae8d12 - + https://github.com/dotnet/llvm-project - 158c0c35f7a4ca5b2214cb259ba581396458c502 + 615d41dd7f8de828f0bd0b6f65f7de4864ae8d12 - + https://github.com/dotnet/llvm-project - 158c0c35f7a4ca5b2214cb259ba581396458c502 + 615d41dd7f8de828f0bd0b6f65f7de4864ae8d12 - + https://github.com/dotnet/llvm-project - 158c0c35f7a4ca5b2214cb259ba581396458c502 + 615d41dd7f8de828f0bd0b6f65f7de4864ae8d12 - + https://github.com/dotnet/llvm-project - 158c0c35f7a4ca5b2214cb259ba581396458c502 + 615d41dd7f8de828f0bd0b6f65f7de4864ae8d12 - + https://github.com/dotnet/llvm-project - 158c0c35f7a4ca5b2214cb259ba581396458c502 + 615d41dd7f8de828f0bd0b6f65f7de4864ae8d12 - + https://github.com/dotnet/llvm-project - 158c0c35f7a4ca5b2214cb259ba581396458c502 + 615d41dd7f8de828f0bd0b6f65f7de4864ae8d12 - + https://github.com/dotnet/llvm-project - 158c0c35f7a4ca5b2214cb259ba581396458c502 + 615d41dd7f8de828f0bd0b6f65f7de4864ae8d12 - + https://github.com/dotnet/llvm-project - 158c0c35f7a4ca5b2214cb259ba581396458c502 + 615d41dd7f8de828f0bd0b6f65f7de4864ae8d12 - + https://github.com/dotnet/llvm-project - 158c0c35f7a4ca5b2214cb259ba581396458c502 + 615d41dd7f8de828f0bd0b6f65f7de4864ae8d12 - + https://github.com/dotnet/llvm-project - 158c0c35f7a4ca5b2214cb259ba581396458c502 + 615d41dd7f8de828f0bd0b6f65f7de4864ae8d12 https://github.com/dotnet/runtime diff --git a/eng/Versions.props b/eng/Versions.props index b16301094bf8cb..c691fb50256003 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -225,39 +225,39 @@ 2.4.8 9.0.0-alpha.1.24167.3 - 19.1.0-alpha.1.25163.1 - 19.1.0-alpha.1.25163.1 - 19.1.0-alpha.1.25163.1 - 19.1.0-alpha.1.25163.1 - 19.1.0-alpha.1.25163.1 - 19.1.0-alpha.1.25163.1 - 19.1.0-alpha.1.25163.1 - 19.1.0-alpha.1.25163.1 - 19.1.0-alpha.1.25163.1 - 19.1.0-alpha.1.25163.1 - 19.1.0-alpha.1.25163.1 - 19.1.0-alpha.1.25163.1 - 19.1.0-alpha.1.25163.1 - 19.1.0-alpha.1.25163.1 + 19.1.0-alpha.1.25209.2 + 19.1.0-alpha.1.25209.2 + 19.1.0-alpha.1.25209.2 + 19.1.0-alpha.1.25209.2 + 19.1.0-alpha.1.25209.2 + 19.1.0-alpha.1.25209.2 + 19.1.0-alpha.1.25209.2 + 19.1.0-alpha.1.25209.2 + 19.1.0-alpha.1.25209.2 + 19.1.0-alpha.1.25209.2 + 19.1.0-alpha.1.25209.2 + 19.1.0-alpha.1.25209.2 + 19.1.0-alpha.1.25209.2 + 19.1.0-alpha.1.25209.2 - 9.0.5-servicing.25209.3 + 9.0.5-servicing.25212.1 9.0.5 $(MicrosoftNETWorkloadEmscriptenCurrentManifest90100Version) 1.1.87-gba258badda 1.0.0-v3.14.0.5722 - 19.1.0-alpha.1.25163.1 - 19.1.0-alpha.1.25163.1 - 19.1.0-alpha.1.25163.1 - 19.1.0-alpha.1.25163.1 - 19.1.0-alpha.1.25163.1 - 19.1.0-alpha.1.25163.1 - 19.1.0-alpha.1.25163.1 - 19.1.0-alpha.1.25163.1 + 19.1.0-alpha.1.25209.2 + 19.1.0-alpha.1.25209.2 + 19.1.0-alpha.1.25209.2 + 19.1.0-alpha.1.25209.2 + 19.1.0-alpha.1.25209.2 + 19.1.0-alpha.1.25209.2 + 19.1.0-alpha.1.25209.2 + 19.1.0-alpha.1.25209.2 3.1.7 1.0.406601 From 3e2029d8edff881ec00ad6f7fccf44725d7a414e Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Mon, 14 Apr 2025 13:51:51 -0600 Subject: [PATCH 49/52] Update dependencies from https://github.com/dotnet/xharness build 20250409.2 (#114612) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Microsoft.DotNet.XHarness.CLI , Microsoft.DotNet.XHarness.TestRunners.Common , Microsoft.DotNet.XHarness.TestRunners.Xunit From Version 9.0.0-prerelease.25207.3 -> To Version 9.0.0-prerelease.25209.2 Co-authored-by: dotnet-maestro[bot] Co-authored-by: Carlos Sánchez López <1175054+carlossanlop@users.noreply.github.com> --- .config/dotnet-tools.json | 2 +- eng/Version.Details.xml | 12 ++++++------ eng/Versions.props | 6 +++--- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/.config/dotnet-tools.json b/.config/dotnet-tools.json index 532c7255c8a281..289b078fc30f48 100644 --- a/.config/dotnet-tools.json +++ b/.config/dotnet-tools.json @@ -15,7 +15,7 @@ ] }, "microsoft.dotnet.xharness.cli": { - "version": "9.0.0-prerelease.25207.3", + "version": "9.0.0-prerelease.25209.2", "commands": [ "xharness" ] diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 624007e65a18d5..e7500118f56dbf 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -320,17 +320,17 @@ https://github.com/dotnet/runtime b030c4dfdfa1bf287f10f96006619a06bc2000ae - + https://github.com/dotnet/xharness - aed708d126f0776c81966db1ca17278edbef8279 + 856ea5c8f3212dc11b6ce369640ea07558706588 - + https://github.com/dotnet/xharness - aed708d126f0776c81966db1ca17278edbef8279 + 856ea5c8f3212dc11b6ce369640ea07558706588 - + https://github.com/dotnet/xharness - aed708d126f0776c81966db1ca17278edbef8279 + 856ea5c8f3212dc11b6ce369640ea07558706588 https://github.com/dotnet/arcade diff --git a/eng/Versions.props b/eng/Versions.props index dfa0f5bc0b3f87..acdf4e0441a804 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -184,9 +184,9 @@ 1.4.0 17.4.0-preview-20220707-01 - 9.0.0-prerelease.25207.3 - 9.0.0-prerelease.25207.3 - 9.0.0-prerelease.25207.3 + 9.0.0-prerelease.25209.2 + 9.0.0-prerelease.25209.2 + 9.0.0-prerelease.25209.2 9.0.0-alpha.0.25209.2 3.12.0 4.5.0 From 8f4c76816616fa88e68805a49672b642f871b3b6 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 14 Apr 2025 14:41:08 -0700 Subject: [PATCH 50/52] Moved a static field initialization from Thread to ProcessorIdCache (#114273) Co-authored-by: vsadov <8218165+VSadov@users.noreply.github.com> --- .../src/System/Threading/ProcessorIdCache.cs | 7 +++++++ .../System.Private.CoreLib/src/System/Threading/Thread.cs | 7 ------- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/libraries/System.Private.CoreLib/src/System/Threading/ProcessorIdCache.cs b/src/libraries/System.Private.CoreLib/src/System/Threading/ProcessorIdCache.cs index a31516c94f048a..25fac4050acf13 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Threading/ProcessorIdCache.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Threading/ProcessorIdCache.cs @@ -22,6 +22,10 @@ internal static class ProcessorIdCache // We will not adjust higher than this though. private const int MaxIdRefreshRate = 5000; + // a speed check will determine refresh rate of the cache and will report if caching is not advisable. + // we will record that in a readonly static so that it could become a JIT constant and bypass caching entirely. + private static readonly bool s_isProcessorNumberReallyFast = ProcessorIdCache.ProcessorNumberSpeedCheck(); + private static int RefreshCurrentProcessorId() { int currentProcessorId = Thread.GetCurrentProcessorNumber(); @@ -44,6 +48,9 @@ private static int RefreshCurrentProcessorId() [MethodImpl(MethodImplOptions.AggressiveInlining)] internal static int GetCurrentProcessorId() { + if (s_isProcessorNumberReallyFast) + return Thread.GetCurrentProcessorNumber(); + int currentProcessorIdCache = t_currentProcessorIdCache--; if ((currentProcessorIdCache & ProcessorIdCacheCountDownMask) == 0) { diff --git a/src/libraries/System.Private.CoreLib/src/System/Threading/Thread.cs b/src/libraries/System.Private.CoreLib/src/System/Threading/Thread.cs index 7af434b641a34c..c68258fb1cbe4b 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Threading/Thread.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Threading/Thread.cs @@ -713,16 +713,9 @@ public static void SetData(LocalDataStoreSlot slot, object? value) [MethodImpl(MethodImplOptions.AggressiveInlining)] public static int GetCurrentProcessorId() { - if (s_isProcessorNumberReallyFast) - return GetCurrentProcessorNumber(); - return ProcessorIdCache.GetCurrentProcessorId(); } - // a speed check will determine refresh rate of the cache and will report if caching is not advisable. - // we will record that in a readonly static so that it could become a JIT constant and bypass caching entirely. - private static readonly bool s_isProcessorNumberReallyFast = ProcessorIdCache.ProcessorNumberSpeedCheck(); - #if FEATURE_WASM_MANAGED_THREADS [ThreadStatic] public static bool ThrowOnBlockingWaitOnJSInteropThread; From 39bae2903bd5f51ef973ecf24f13ec45438916c0 Mon Sep 17 00:00:00 2001 From: Steve Pfister Date: Mon, 14 Apr 2025 18:39:09 -0400 Subject: [PATCH 51/52] Revert "[release/9.0] Fix edge cases in Tarjan GC bridge (Android) (#114391)" (#114641) This reverts commit 703efd520139ed08dcffd3b88932d81a45f4a573. Reverting due to assertions found in Android SDK testing. --- src/mono/mono/metadata/sgen-bridge.c | 18 +- src/mono/mono/metadata/sgen-tarjan-bridge.c | 84 ++-- src/tests/GC/Features/Bridge/Bridge.cs | 422 ------------------ src/tests/GC/Features/Bridge/Bridge.csproj | 11 - src/tests/GC/Features/Bridge/BridgeTester.cs | 35 -- .../GC/Features/Bridge/BridgeTester.csproj | 17 - 6 files changed, 37 insertions(+), 550 deletions(-) delete mode 100644 src/tests/GC/Features/Bridge/Bridge.cs delete mode 100644 src/tests/GC/Features/Bridge/Bridge.csproj delete mode 100644 src/tests/GC/Features/Bridge/BridgeTester.cs delete mode 100644 src/tests/GC/Features/Bridge/BridgeTester.csproj diff --git a/src/mono/mono/metadata/sgen-bridge.c b/src/mono/mono/metadata/sgen-bridge.c index 1f7dc31c9b4b11..579fc0d376cd6a 100644 --- a/src/mono/mono/metadata/sgen-bridge.c +++ b/src/mono/mono/metadata/sgen-bridge.c @@ -316,24 +316,24 @@ dump_processor_state (SgenBridgeProcessor *p) { int i; - g_message ("------\n"); - g_message ("SCCS %d\n", p->num_sccs); + printf ("------\n"); + printf ("SCCS %d\n", p->num_sccs); for (i = 0; i < p->num_sccs; ++i) { int j; MonoGCBridgeSCC *scc = p->api_sccs [i]; - g_message ("\tSCC %d:", i); + printf ("\tSCC %d:", i); for (j = 0; j < scc->num_objs; ++j) { MonoObject *obj = scc->objs [j]; - g_message (" %p(%s)", obj, m_class_get_name (SGEN_LOAD_VTABLE (obj)->klass)); + printf (" %p(%s)", obj, SGEN_LOAD_VTABLE (obj)->klass->name); } - g_message ("\n"); + printf ("\n"); } - g_message ("XREFS %d\n", p->num_xrefs); + printf ("XREFS %d\n", p->num_xrefs); for (i = 0; i < p->num_xrefs; ++i) - g_message ("\t%d -> %d\n", p->api_xrefs [i].src_scc_index, p->api_xrefs [i].dst_scc_index); + printf ("\t%d -> %d\n", p->api_xrefs [i].src_scc_index, p->api_xrefs [i].dst_scc_index); - g_message ("-------\n"); + printf ("-------\n"); } */ @@ -352,7 +352,7 @@ sgen_compare_bridge_processor_results (SgenBridgeProcessor *a, SgenBridgeProcess if (a->num_sccs != b->num_sccs) g_error ("SCCS count expected %d but got %d", a->num_sccs, b->num_sccs); if (a->num_xrefs != b->num_xrefs) - g_error ("XREFS count expected %d but got %d", a->num_xrefs, b->num_xrefs); + g_error ("SCCS count expected %d but got %d", a->num_xrefs, b->num_xrefs); /* * First we build a hash of each object in `a` to its respective SCC index within diff --git a/src/mono/mono/metadata/sgen-tarjan-bridge.c b/src/mono/mono/metadata/sgen-tarjan-bridge.c index 86de93083e53a1..b0c9cf1f83baef 100644 --- a/src/mono/mono/metadata/sgen-tarjan-bridge.c +++ b/src/mono/mono/metadata/sgen-tarjan-bridge.c @@ -400,7 +400,16 @@ static const char* safe_name_bridge (GCObject *obj) { GCVTable vt = SGEN_LOAD_VTABLE (obj); - return m_class_get_name (vt->klass); + return vt->klass->name; +} + +static ScanData* +find_or_create_data (GCObject *obj) +{ + ScanData *entry = find_data (obj); + if (!entry) + entry = create_data (obj); + return entry; } #endif @@ -557,15 +566,10 @@ find_in_cache (int *insert_index) // Populate other_colors for a give color (other_colors represent the xrefs for this color) static void -add_other_colors (ColorData *color, DynPtrArray *other_colors, gboolean check_visited) +add_other_colors (ColorData *color, DynPtrArray *other_colors) { for (int i = 0; i < dyn_array_ptr_size (other_colors); ++i) { ColorData *points_to = (ColorData *)dyn_array_ptr_get (other_colors, i); - if (check_visited) { - if (points_to->visited) - continue; - points_to->visited = TRUE; - } dyn_array_ptr_add (&color->other_colors, points_to); // Inform targets points_to->incoming_colors = MIN (points_to->incoming_colors + 1, INCOMING_COLORS_MAX); @@ -589,7 +593,7 @@ new_color (gboolean has_bridges) cd = alloc_color_data (); cd->api_index = -1; - add_other_colors (cd, &color_merge_array, FALSE); + add_other_colors (cd, &color_merge_array); /* if cacheSlot >= 0, it means we prepared a given slot to receive the new color */ if (cacheSlot >= 0) @@ -696,11 +700,11 @@ compute_low_index (ScanData *data, GCObject *obj) obj = bridge_object_forward (obj); other = find_data (obj); - if (!other) - return; #if DUMP_GRAPH - printf ("\tcompute low %p ->%p (%s) %p (%d / %d, color %p)\n", data->obj, obj, safe_name_bridge (obj), other, other ? other->index : -2, other->low_index, other->color); + printf ("\tcompute low %p ->%p (%s) %p (%d / %d, color %p)\n", data->obj, obj, safe_name_bridge (obj), other, other ? other->index : -2, other ? other->low_index : -2, other->color); #endif + if (!other) + return; g_assert (other->state != INITIAL); @@ -773,16 +777,10 @@ create_scc (ScanData *data) gboolean found = FALSE; gboolean found_bridge = FALSE; ColorData *color_data = NULL; - gboolean can_reduce_color = TRUE; for (i = dyn_array_ptr_size (&loop_stack) - 1; i >= 0; --i) { ScanData *other = (ScanData *)dyn_array_ptr_get (&loop_stack, i); found_bridge |= other->is_bridge; - if (dyn_array_ptr_size (&other->xrefs) > 0) { - // This scc will have more xrefs than the ones from the color_merge_array, - // we will need to create a new color to store this information. - can_reduce_color = FALSE; - } if (found_bridge || other == data) break; } @@ -790,15 +788,13 @@ create_scc (ScanData *data) if (found_bridge) { color_data = new_color (TRUE); ++num_colors_with_bridges; - } else if (can_reduce_color) { - color_data = reduce_color (); } else { - color_data = new_color (FALSE); + color_data = reduce_color (); } #if DUMP_GRAPH printf ("|SCC %p rooted in %s (%p) has bridge %d\n", color_data, safe_name_bridge (data->obj), data->obj, found_bridge); printf ("\tloop stack: "); - for (i = 0; i < dyn_array_ptr_size (&loop_stack); ++i) { + for (int i = 0; i < dyn_array_ptr_size (&loop_stack); ++i) { ScanData *other = dyn_array_ptr_get (&loop_stack, i); printf ("(%d/%d)", other->index, other->low_index); } @@ -828,19 +824,10 @@ create_scc (ScanData *data) dyn_array_ptr_add (&color_data->bridges, other->obj); } - if (dyn_array_ptr_size (&other->xrefs) > 0) { - g_assert (color_data != NULL); - g_assert (can_reduce_color == FALSE); - // We need to eliminate duplicates early otherwise the heaviness property - // can change in gather_xrefs and it breaks down the loop that reports the - // xrefs to the client. - // - // We reuse the visited flag to mark the objects that are already part of - // the color_data array. The array was created above with the new_color call - // and xrefs were populated from color_merge_array, which is already - // deduplicated and every entry is marked as visited. - add_other_colors (color_data, &other->xrefs, TRUE); - } + // Maybe we should make sure we are not adding duplicates here. It is not really a problem + // since we will get rid of duplicates before submitting the SCCs to the client in gather_xrefs + if (color_data) + add_other_colors (color_data, &other->xrefs); dyn_array_ptr_uninit (&other->xrefs); if (other == data) { @@ -850,22 +837,11 @@ create_scc (ScanData *data) } g_assert (found); - // Clear the visited flag on nodes that were added with add_other_colors in the loop above - if (!can_reduce_color) { - for (i = dyn_array_ptr_size (&color_merge_array); i < dyn_array_ptr_size (&color_data->other_colors); i++) { - ColorData *cd = (ColorData *)dyn_array_ptr_get (&color_data->other_colors, i); - g_assert (cd->visited); - cd->visited = FALSE; - } - } - #if DUMP_GRAPH - if (color_data) { - printf ("\tpoints-to-colors: "); - for (i = 0; i < dyn_array_ptr_size (&color_data->other_colors); i++) - printf ("%p ", dyn_array_ptr_get (&color_data->other_colors, i)); - printf ("\n"); - } + printf ("\tpoints-to-colors: "); + for (int i = 0; i < dyn_array_ptr_size (&color_data->other_colors); i++) + printf ("%p ", dyn_array_ptr_get (&color_data->other_colors, i)); + printf ("\n"); #endif } @@ -990,11 +966,8 @@ dump_color_table (const char *why, gboolean do_index) printf (" bridges: "); for (j = 0; j < dyn_array_ptr_size (&cd->bridges); ++j) { GCObject *obj = dyn_array_ptr_get (&cd->bridges, j); - ScanData *data = find_data (obj); - if (!data) - printf ("%p ", obj); - else - printf ("%p(%d) ", obj, data->index); + ScanData *data = find_or_create_data (obj); + printf ("%d ", data->index); } } printf ("\n"); @@ -1054,7 +1027,7 @@ processing_stw_step (void) #if defined (DUMP_GRAPH) printf ("----summary----\n"); printf ("bridges:\n"); - for (i = 0; i < bridge_count; ++i) { + for (int i = 0; i < bridge_count; ++i) { ScanData *sd = find_data (dyn_array_ptr_get (®istered_bridges, i)); printf ("\t%s (%p) index %d color %p\n", safe_name_bridge (sd->obj), sd->obj, sd->index, sd->color); } @@ -1168,7 +1141,6 @@ processing_build_callback_data (int generation) gather_xrefs (cd); reset_xrefs (cd); dyn_array_ptr_set_all (&cd->other_colors, &color_merge_array); - g_assert (color_visible_to_client (cd)); xref_count += dyn_array_ptr_size (&cd->other_colors); } } diff --git a/src/tests/GC/Features/Bridge/Bridge.cs b/src/tests/GC/Features/Bridge/Bridge.cs deleted file mode 100644 index c481087943efcd..00000000000000 --- a/src/tests/GC/Features/Bridge/Bridge.cs +++ /dev/null @@ -1,422 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. - -using System; -using System.Collections; -using System.Collections.Generic; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; -using System.Threading; - -// False pinning cases are still possible. For example the thread can die -// and its stack reused by another thread. It also seems that a thread that -// does a GC can keep on the stack references to objects it encountered -// during the collection which are never released afterwards. This would -// be more likely to happen with the interpreter which reuses more stack. -public static class FinalizerHelpers -{ - private static IntPtr aptr; - - private static unsafe void NoPinActionHelper(int depth, Action act) - { - // Avoid tail calls - int* values = stackalloc int[20]; - aptr = new IntPtr(values); - - if (depth <= 0) - { - // - // When the action is called, this new thread might have not allocated - // anything yet in the nursery. This means that the address of the first - // object that would be allocated would be at the start of the tlab and - // implicitly the end of the previous tlab (address which can be in use - // when allocating on another thread, at checking if an object fits in - // this other tlab). We allocate a new dummy object to avoid this type - // of false pinning for most common cases. - // - new object(); - act(); - ClearStack(); - } - else - { - NoPinActionHelper(depth - 1, act); - } - } - - private static unsafe void ClearStack() - { - int* values = stackalloc int[25000]; - for (int i = 0; i < 25000; i++) - values[i] = 0; - } - - public static void PerformNoPinAction(Action act) - { - Thread thr = new Thread(() => NoPinActionHelper (128, act)); - thr.Start(); - thr.Join(); - } -} - -public class BridgeBase -{ - public static int fin_count; - - ~BridgeBase() - { - fin_count++; - } -} - -public class Bridge : BridgeBase -{ - public List Links = new List(); - public int __test; - - ~Bridge() - { - Links = null; - } -} - -public class Bridge1 : BridgeBase -{ - public object Link; - ~Bridge1() - { - Link = null; - } -} - -// 128 size -public class Bridge14 : BridgeBase -{ - public object a,b,c,d,e,f,g,h,i,j,k,l,m,n; -} - -public class NonBridge -{ - public object Link; -} - -public class NonBridge2 : NonBridge -{ - public object Link2; -} - -public class NonBridge14 -{ - public object a,b,c,d,e,f,g,h,i,j,k,l,m,n; -} - - -public class BridgeTest -{ - const int OBJ_COUNT = 100 * 1000; - const int LINK_COUNT = 2; - const int EXTRAS_COUNT = 0; - const double survival_rate = 0.1; - - // Pathological case for the original old algorithm. Goes - // away when merging is replaced by appending with flag - // checking. - static void SetupLinks() - { - var list = new List(); - for (int i = 0; i < OBJ_COUNT; ++i) - { - var bridge = new Bridge(); - list.Add(bridge); - } - - var r = new Random(100); - for (int i = 0; i < OBJ_COUNT; ++i) - { - var n = list[i]; - for (int j = 0; j < LINK_COUNT; ++j) - n.Links.Add(list[r.Next (OBJ_COUNT)]); - for (int j = 0; j < EXTRAS_COUNT; ++j) - n.Links.Add(j); - if (r.NextDouble() <= survival_rate) - n.__test = 1; - } - } - - const int LIST_LENGTH = 10000; - const int FAN_OUT = 10000; - - // Pathological case for the new algorithm. Goes away with - // the single-node elimination optimization, but will still - // persist if modified by using a ladder instead of the single - // list. - static void SetupLinkedFan() - { - var head = new Bridge(); - var tail = new NonBridge(); - head.Links.Add(tail); - for (int i = 0; i < LIST_LENGTH; ++i) - { - var obj = new NonBridge (); - tail.Link = obj; - tail = obj; - } - var list = new List(); - tail.Link = list; - for (int i = 0; i < FAN_OUT; ++i) - list.Add (new Bridge()); - } - - // Pathological case for the improved old algorithm. Goes - // away with copy-on-write DynArrays, but will still persist - // if modified by using a ladder instead of the single list. - static void SetupInverseFan() - { - var tail = new Bridge(); - object list = tail; - for (int i = 0; i < LIST_LENGTH; ++i) - { - var obj = new NonBridge(); - obj.Link = list; - list = obj; - } - var heads = new Bridge[FAN_OUT]; - for (int i = 0; i < FAN_OUT; ++i) - { - var obj = new Bridge(); - obj.Links.Add(list); - heads[i] = obj; - } - } - - // Not necessarily a pathology, but a special case of where we - // generate lots of "dead" SCCs. A non-bridge object that - // can't reach a bridge object can safely be removed from the - // graph. In this special case it's a linked list hanging off - // a bridge object. We can handle this by "forwarding" edges - // going to non-bridge nodes that have only a single outgoing - // edge. That collapses the whole list into a single node. - // We could remove that node, too, by removing non-bridge - // nodes with no outgoing edges. - static void SetupDeadList() - { - var head = new Bridge(); - var tail = new NonBridge(); - head.Links.Add(tail); - for (int i = 0; i < LIST_LENGTH; ++i) - { - var obj = new NonBridge(); - tail.Link = obj; - tail = obj; - } - } - - // Triggered a bug in the forwarding mechanic. - static void SetupSelfLinks() - { - var head = new Bridge(); - var tail = new NonBridge(); - head.Links.Add(tail); - tail.Link = tail; - } - - const int L0_COUNT = 50000; - const int L1_COUNT = 50000; - const int EXTRA_LEVELS = 4; - - // Set a complex graph from one bridge to a couple. - // The graph is designed to expose naive coloring on - // tarjan and SCC explosion on classic. - static void Spider() - { - Bridge a = new Bridge(); - Bridge b = new Bridge(); - - var l1 = new List(); - for (int i = 0; i < L0_COUNT; ++i) { - var l0 = new List(); - l0.Add(a); - l0.Add(b); - l1.Add(l0); - } - var last_level = l1; - for (int l = 0; l < EXTRA_LEVELS; ++l) { - int j = 0; - var l2 = new List(); - for (int i = 0; i < L1_COUNT; ++i) { - var tmp = new List(); - tmp.Add(last_level [j++ % last_level.Count]); - tmp.Add(last_level [j++ % last_level.Count]); - l2.Add(tmp); - } - last_level = l2; - } - Bridge c = new Bridge(); - c.Links.Add(last_level); - } - - // Simulates a graph with two nested cycles that is produces by - // the async state machine when `async Task M()` method gets its - // continuation rooted by an Action held by RunnableImplementor - // (ie. the task continuation is hooked through the SynchronizationContext - // implentation and rooted only by Android bridge objects). - static void NestedCycles() - { - Bridge runnableImplementor = new Bridge (); - Bridge byteArrayOutputStream = new Bridge (); - NonBridge2 action = new NonBridge2 (); - NonBridge displayClass = new NonBridge (); - NonBridge2 asyncStateMachineBox = new NonBridge2 (); - NonBridge2 asyncStreamWriter = new NonBridge2 (); - - runnableImplementor.Links.Add(action); - action.Link = displayClass; - action.Link2 = asyncStateMachineBox; - displayClass.Link = action; - asyncStateMachineBox.Link = asyncStreamWriter; - asyncStateMachineBox.Link2 = action; - asyncStreamWriter.Link = byteArrayOutputStream; - asyncStreamWriter.Link2 = asyncStateMachineBox; - } - - // Simulates a graph where a heavy node has its fanout components - // represented by cycles with back-references to the heavy node and - // references to the same bridge objects. - // This enters a pathological path in the SCC contraction where the - // links to the bridge objects need to be correctly deduplicated. The - // deduplication causes the heavy node to no longer be heavy. - static void FauxHeavyNodeWithCycles() - { - Bridge fanout = new Bridge(); - - // Need enough edges for the node to be considered heavy by bridgeless_color_is_heavy - NonBridge[] fauxHeavyNode = new NonBridge[100]; - for (int i = 0; i < fauxHeavyNode.Length; i++) - { - NonBridge2 cycle = new NonBridge2(); - cycle.Link = fanout; - cycle.Link2 = fauxHeavyNode; - fauxHeavyNode[i] = cycle; - } - - // Need at least HEAVY_REFS_MIN + 1 fan-in nodes - Bridge[] faninNodes = new Bridge[3]; - for (int i = 0; i < faninNodes.Length; i++) - { - faninNodes[i] = new Bridge(); - faninNodes[i].Links.Add(fauxHeavyNode); - } - } - - static void RunGraphTest(Action test) - { - Console.WriteLine("Start test {0}", test.Method.Name); - FinalizerHelpers.PerformNoPinAction(test); - Console.WriteLine("-graph built-"); - for (int i = 0; i < 5; i++) - { - Console.WriteLine("-GC {0}/5-", i); - GC.Collect (); - GC.WaitForPendingFinalizers(); - } - - Console.WriteLine("Finished test {0}, finalized {1}", test.Method.Name, Bridge.fin_count); - } - - static void TestLinkedList() - { - int count = Environment.ProcessorCount + 2; - var th = new Thread [count]; - for (int i = 0; i < count; ++i) - { - th [i] = new Thread( _ => - { - var lst = new ArrayList(); - for (var j = 0; j < 500 * 1000; j++) - { - lst.Add (new object()); - if ((j % 999) == 0) - lst.Add (new BridgeBase()); - if ((j % 1000) == 0) - new BridgeBase(); - if ((j % 50000) == 0) - lst = new ArrayList(); - } - }); - - th [i].Start(); - } - - for (int i = 0; i < count; ++i) - th [i].Join(); - - GC.Collect(2); - Console.WriteLine("Finished test LinkedTest, finalized {0}", BridgeBase.fin_count); - } - - //we fill 16Mb worth of stuff, eg, 256k objects - const int major_fill = 1024 * 256; - - //4mb nursery with 64 bytes objects -> alloc half - const int nursery_obj_count = 16 * 1024; - - static void SetupFragmentation() - where TBridge : new() - where TNonBridge : new() - { - const int loops = 4; - for (int k = 0; k < loops; k++) - { - Console.WriteLine("[{0}] CrashLoop {1}/{2}", DateTime.Now, k + 1, loops); - var arr = new object[major_fill]; - for (int i = 0; i < major_fill; i++) - arr[i] = new TNonBridge(); - GC.Collect(1); - Console.WriteLine("[{0}] major fill done", DateTime.Now); - - //induce massive fragmentation - for (int i = 0; i < major_fill; i += 4) - { - arr[i + 1] = null; - arr[i + 2] = null; - arr[i + 3] = null; - } - GC.Collect (1); - Console.WriteLine("[{0}] fragmentation done", DateTime.Now); - - //since 50% is garbage, do 2 fill passes - for (int j = 0; j < 2; ++j) - { - for (int i = 0; i < major_fill; i++) - { - if ((i % 1000) == 0) - new TBridge(); - else - arr[i] = new TBridge(); - } - } - Console.WriteLine("[{0}] done spewing bridges", DateTime.Now); - - for (int i = 0; i < major_fill; i++) - arr[i] = null; - GC.Collect (); - } - } - - public static int Main(string[] args) - { -// TestLinkedList(); // Crashes, but only in this multithreaded variant - RunGraphTest(SetupFragmentation); // This passes but the following crashes ?? -// RunGraphTest(SetupFragmentation); - RunGraphTest(SetupLinks); - RunGraphTest(SetupLinkedFan); - RunGraphTest(SetupInverseFan); - - RunGraphTest(SetupDeadList); - RunGraphTest(SetupSelfLinks); - RunGraphTest(NestedCycles); - RunGraphTest(FauxHeavyNodeWithCycles); -// RunGraphTest(Spider); // Crashes - return 100; - } -} diff --git a/src/tests/GC/Features/Bridge/Bridge.csproj b/src/tests/GC/Features/Bridge/Bridge.csproj deleted file mode 100644 index 29b8c0f5fd3a2d..00000000000000 --- a/src/tests/GC/Features/Bridge/Bridge.csproj +++ /dev/null @@ -1,11 +0,0 @@ - - - - true - false - BuildOnly - - - - - diff --git a/src/tests/GC/Features/Bridge/BridgeTester.cs b/src/tests/GC/Features/Bridge/BridgeTester.cs deleted file mode 100644 index 960e39a5e6eb0d..00000000000000 --- a/src/tests/GC/Features/Bridge/BridgeTester.cs +++ /dev/null @@ -1,35 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. - -using System; -using System.Diagnostics; -using System.IO; -using System.Linq; -using System.Reflection; -using System.Runtime; -using System.Text; - -using Xunit; - -public class BridgeTester -{ - [Fact] - public static void RunTests() - { - string corerun = TestLibrary.Utilities.IsWindows ? "corerun.exe" : "corerun"; - string coreRoot = Environment.GetEnvironmentVariable("CORE_ROOT"); - string bridgeTestApp = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "Bridge.dll"); - - var startInfo = new ProcessStartInfo(Path.Combine(coreRoot, corerun), bridgeTestApp); - startInfo.EnvironmentVariables["MONO_GC_DEBUG"] = "bridge=BridgeBase,bridge-compare-to=new"; - startInfo.EnvironmentVariables["MONO_GC_PARAMS"] = "bridge-implementation=tarjan,bridge-require-precise-merge"; - - using (Process p = Process.Start(startInfo)) - { - p.WaitForExit(); - Console.WriteLine ("Bridge Test App returned {0}", p.ExitCode); - if (p.ExitCode != 100) - throw new Exception("Bridge Test App failed execution"); - } - } -} diff --git a/src/tests/GC/Features/Bridge/BridgeTester.csproj b/src/tests/GC/Features/Bridge/BridgeTester.csproj deleted file mode 100644 index 2e5ff67a32bf16..00000000000000 --- a/src/tests/GC/Features/Bridge/BridgeTester.csproj +++ /dev/null @@ -1,17 +0,0 @@ - - - true - true - - - - - - - - false - Content - Always - - - From ab101575876d3e1691bd967392b064f5eb8fb882 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20S=C3=A1nchez=20L=C3=B3pez?= <1175054+carlossanlop@users.noreply.github.com> Date: Tue, 15 Apr 2025 09:14:21 -0700 Subject: [PATCH 52/52] Temporarily downgrade SdkVersionForWorkloadTesting to 9.0.105 --- eng/Versions.props | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/eng/Versions.props b/eng/Versions.props index acdf4e0441a804..15f0ebe39d64e0 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -262,8 +262,8 @@ 3.1.7 1.0.406601 - $(MicrosoftDotNetApiCompatTaskVersion) - + + 9.0.105 9.0.0-alpha.1.24175.1 $(MicrosoftNETRuntimeEmscriptenVersion) $(runtimewinx64MicrosoftNETCoreRuntimeWasmNodeTransportPackageVersion)