From fa02a897e1eadbe9560cf887f4d46307aa3afd02 Mon Sep 17 00:00:00 2001 From: Youssef1313 Date: Tue, 13 Jan 2026 12:56:24 +0100 Subject: [PATCH 1/5] Allow none for --hangdump-type --- .../HangDumpCommandLineProvider.cs | 4 ++-- .../HangDumpProcessLifetimeHandler.cs | 23 ++++++++++++++----- 2 files changed, 19 insertions(+), 8 deletions(-) diff --git a/src/Platform/Microsoft.Testing.Extensions.HangDump/HangDumpCommandLineProvider.cs b/src/Platform/Microsoft.Testing.Extensions.HangDump/HangDumpCommandLineProvider.cs index 482bcc3a37..3efb46104e 100644 --- a/src/Platform/Microsoft.Testing.Extensions.HangDump/HangDumpCommandLineProvider.cs +++ b/src/Platform/Microsoft.Testing.Extensions.HangDump/HangDumpCommandLineProvider.cs @@ -17,9 +17,9 @@ internal sealed class HangDumpCommandLineProvider : ICommandLineOptionsProvider public const string HangDumpTypeOptionName = "hangdump-type"; #if NETCOREAPP - private static readonly string[] HangDumpTypeOptions = ["Mini", "Heap", "Full", "Triage"]; + private static readonly string[] HangDumpTypeOptions = ["Mini", "Heap", "Full", "Triage", "None"]; #else - private static readonly string[] HangDumpTypeOptions = ["Mini", "Heap", "Full"]; + private static readonly string[] HangDumpTypeOptions = ["Mini", "Heap", "Full", "None"]; #endif private static readonly IReadOnlyCollection CachedCommandLineOptions = diff --git a/src/Platform/Microsoft.Testing.Extensions.HangDump/HangDumpProcessLifetimeHandler.cs b/src/Platform/Microsoft.Testing.Extensions.HangDump/HangDumpProcessLifetimeHandler.cs index 7ea20a782e..040e8b0552 100644 --- a/src/Platform/Microsoft.Testing.Extensions.HangDump/HangDumpProcessLifetimeHandler.cs +++ b/src/Platform/Microsoft.Testing.Extensions.HangDump/HangDumpProcessLifetimeHandler.cs @@ -1,6 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. +using Microsoft.Diagnostics.NETCore.Client; using Microsoft.Testing.Extensions.Diagnostics.Helpers; using Microsoft.Testing.Extensions.Diagnostics.Resources; using Microsoft.Testing.Extensions.HangDump.Serializers; @@ -354,12 +355,13 @@ private async Task TakeDumpAsync(IProcess process, CancellationToken cancellatio #if NETCOREAPP DiagnosticsClient diagnosticsClient = new(process.Id); - DumpType dumpType = _dumpType.ToLowerInvariant().Trim() switch + DumpType? dumpType = _dumpType.ToLowerInvariant().Trim() switch { "mini" => DumpType.Normal, "heap" => DumpType.WithHeap, "triage" => DumpType.Triage, "full" => DumpType.Full, + "none" => null, _ => throw ApplicationStateGuard.Unreachable(), }; @@ -372,7 +374,12 @@ private async Task TakeDumpAsync(IProcess process, CancellationToken cancellatio try { - diagnosticsClient.WriteDump(dumpType, finalDumpFileName, logDumpGeneration: false); + // Skip creating the dump if the option is set to none, and just kill the process. + if (dumpType.HasValue) + { + diagnosticsClient.WriteDump(dumpType.Value, finalDumpFileName, logDumpGeneration: false); + _dumpFiles.Add(finalDumpFileName); + } } catch (Exception e) { @@ -381,17 +388,23 @@ private async Task TakeDumpAsync(IProcess process, CancellationToken cancellatio } #else - MiniDumpWriteDump.MiniDumpTypeOption miniDumpTypeOption = _dumpType.ToLowerInvariant().Trim() switch + MiniDumpWriteDump.MiniDumpTypeOption? miniDumpTypeOption = _dumpType.ToLowerInvariant().Trim() switch { "mini" => MiniDumpWriteDump.MiniDumpTypeOption.Mini, "heap" => MiniDumpWriteDump.MiniDumpTypeOption.Heap, "full" => MiniDumpWriteDump.MiniDumpTypeOption.Full, + "none" => null, _ => throw ApplicationStateGuard.Unreachable(), }; try { - MiniDumpWriteDump.CollectDumpUsingMiniDumpWriteDump(process.Id, finalDumpFileName, miniDumpTypeOption); + // Skip creating the dump if the option is set to none, and just kill the process. + if (miniDumpTypeOption.HasValue) + { + MiniDumpWriteDump.CollectDumpUsingMiniDumpWriteDump(process.Id, finalDumpFileName, miniDumpTypeOption.Value); + _dumpFiles.Add(finalDumpFileName); + } } catch (Exception e) { @@ -399,8 +412,6 @@ private async Task TakeDumpAsync(IProcess process, CancellationToken cancellatio await _outputDisplay.DisplayAsync(new ErrorMessageOutputDeviceData(string.Format(CultureInfo.InvariantCulture, ExtensionResources.ErrorWhileDumpingProcess, process.Id, process.Name, e)), cancellationToken).ConfigureAwait(false); } #endif - - _dumpFiles.Add(finalDumpFileName); } private static void NotifyCrashDumpServiceIfEnabled() From 8a7decbf1e9807fa2f639e745c12062ff764a0c7 Mon Sep 17 00:00:00 2001 From: Youssef1313 Date: Tue, 13 Jan 2026 12:58:35 +0100 Subject: [PATCH 2/5] test --- .../HangDumpTests.cs | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/test/IntegrationTests/Microsoft.Testing.Platform.Acceptance.IntegrationTests/HangDumpTests.cs b/test/IntegrationTests/Microsoft.Testing.Platform.Acceptance.IntegrationTests/HangDumpTests.cs index 9cccbce075..53357678d3 100644 --- a/test/IntegrationTests/Microsoft.Testing.Platform.Acceptance.IntegrationTests/HangDumpTests.cs +++ b/test/IntegrationTests/Microsoft.Testing.Platform.Acceptance.IntegrationTests/HangDumpTests.cs @@ -111,6 +111,7 @@ public async Task HangDump_PathWithSpaces_CreateDump() [DataRow("Heap")] [DataRow("Triage")] [DataRow("Full")] + [DataRow("None")] [TestMethod] public async Task HangDump_Formats_CreateDump(string format) { @@ -125,8 +126,16 @@ public async Task HangDump_Formats_CreateDump(string format) }, cancellationToken: TestContext.CancellationToken); testHostResult.AssertExitCodeIs(ExitCodes.TestHostProcessExitedNonGracefully); + string? dumpFile = Directory.GetFiles(resultDirectory, "HangDump*.dmp", SearchOption.AllDirectories).SingleOrDefault(); - Assert.IsNotNull(dumpFile, $"Dump file not found '{format}'\n{testHostResult}'"); + if (format != "None") + { + Assert.IsNotNull(dumpFile, $"Dump file not found '{format}'\n{testHostResult}'"); + } + else + { + Assert.IsNull(dumpFile, $"Dump file was incorrectly created for None dump type.\n{testHostResult}'"); + } } [TestMethod] From 73c98d00ce85620aa72ac713565e64dd26c9ea57 Mon Sep 17 00:00:00 2001 From: Youssef Victor Date: Tue, 13 Jan 2026 13:19:10 +0100 Subject: [PATCH 3/5] Update HangDumpProcessLifetimeHandler.cs --- .../HangDumpProcessLifetimeHandler.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/src/Platform/Microsoft.Testing.Extensions.HangDump/HangDumpProcessLifetimeHandler.cs b/src/Platform/Microsoft.Testing.Extensions.HangDump/HangDumpProcessLifetimeHandler.cs index 040e8b0552..d68ca6834f 100644 --- a/src/Platform/Microsoft.Testing.Extensions.HangDump/HangDumpProcessLifetimeHandler.cs +++ b/src/Platform/Microsoft.Testing.Extensions.HangDump/HangDumpProcessLifetimeHandler.cs @@ -1,7 +1,6 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -using Microsoft.Diagnostics.NETCore.Client; using Microsoft.Testing.Extensions.Diagnostics.Helpers; using Microsoft.Testing.Extensions.Diagnostics.Resources; using Microsoft.Testing.Extensions.HangDump.Serializers; From 49b9352e12fe90f7c54a703f7ac9f651bb9dedcd Mon Sep 17 00:00:00 2001 From: Youssef1313 Date: Thu, 15 Jan 2026 12:33:53 +0100 Subject: [PATCH 4/5] Update resources --- .../Resources/ExtensionResources.resx | 6 +++--- .../Resources/xlf/ExtensionResources.cs.xlf | 8 ++++---- .../Resources/xlf/ExtensionResources.de.xlf | 8 ++++---- .../Resources/xlf/ExtensionResources.es.xlf | 8 ++++---- .../Resources/xlf/ExtensionResources.fr.xlf | 8 ++++---- .../Resources/xlf/ExtensionResources.it.xlf | 8 ++++---- .../Resources/xlf/ExtensionResources.ja.xlf | 8 ++++---- .../Resources/xlf/ExtensionResources.ko.xlf | 8 ++++---- .../Resources/xlf/ExtensionResources.pl.xlf | 8 ++++---- .../Resources/xlf/ExtensionResources.pt-BR.xlf | 8 ++++---- .../Resources/xlf/ExtensionResources.ru.xlf | 8 ++++---- .../Resources/xlf/ExtensionResources.tr.xlf | 8 ++++---- .../Resources/xlf/ExtensionResources.zh-Hans.xlf | 8 ++++---- .../Resources/xlf/ExtensionResources.zh-Hant.xlf | 8 ++++---- .../HelpInfoTests.cs | 4 ++-- 15 files changed, 57 insertions(+), 57 deletions(-) diff --git a/src/Platform/Microsoft.Testing.Extensions.HangDump/Resources/ExtensionResources.resx b/src/Platform/Microsoft.Testing.Extensions.HangDump/Resources/ExtensionResources.resx index 7b924858e4..0f16cef8cd 100644 --- a/src/Platform/Microsoft.Testing.Extensions.HangDump/Resources/ExtensionResources.resx +++ b/src/Platform/Microsoft.Testing.Extensions.HangDump/Resources/ExtensionResources.resx @@ -1,4 +1,4 @@ - +