From d32fc6ff7a202bbfd99db0a74889cd6f209e7b9b Mon Sep 17 00:00:00 2001 From: Brian Robbins Date: Mon, 22 Nov 2021 16:36:18 -0800 Subject: [PATCH 01/24] Remove the 64-bit specific broken stacks warning, since it was fixed in Win8. --- src/PerfView/PerfViewData.cs | 23 ++++------------------- 1 file changed, 4 insertions(+), 19 deletions(-) diff --git a/src/PerfView/PerfViewData.cs b/src/PerfView/PerfViewData.cs index 1e1958379..8f2f2229c 100644 --- a/src/PerfView/PerfViewData.cs +++ b/src/PerfView/PerfViewData.cs @@ -4186,25 +4186,10 @@ private static bool WarnAboutBrokenStacks(Window parentWindow, float brokenPerce if (brokenPercent > 10) { - if (is64Bit) - { - MessageBox.Show(parentWindow, "Warning: There are " + brokenPercent.ToString("f1") + - "% stacks that are broken, analysis is suspect." + "\r\n" + - "This is likely due the current inability of the OS stackwalker to walk 64 bit\r\n" + - "code that is dynamically (JIT) generated.\r\n\r\n" + - "This can be worked around by either by NGENing the EXE,\r\n" + - "forcing the EXE to run as a 32 bit app, profiling on Windows 8\r\n" + - "or avoiding any top-down analysis.\r\n\r\n" + - "Use the troubleshooting link at the top of the view for more information.\r\n", - "Broken Stacks"); - } - else - { - MessageBox.Show(parentWindow, "Warning: There are " + brokenPercent.ToString("f1") + "% stacks that are broken\r\n" + - "Top down analysis is suspect, however bottom up approaches are still valid.\r\n\r\n" + - "Use the troubleshooting link at the top of the view for more information.\r\n", - "Broken Stacks"); - } + MessageBox.Show(parentWindow, "Warning: There are " + brokenPercent.ToString("f1") + "% stacks that are broken\r\n" + + "Top down analysis is suspect, however bottom up approaches are still valid.\r\n\r\n" + + "Use the troubleshooting link at the top of the view for more information.\r\n", + "Broken Stacks"); return true; } From 6b937dccf39b18be358ef37979d67661689c99a4 Mon Sep 17 00:00:00 2001 From: Brian Robbins Date: Mon, 22 Nov 2021 16:36:50 -0800 Subject: [PATCH 02/24] Remove the default fold percentage. --- src/PerfView/StackViewer/StackWindow.xaml.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/PerfView/StackViewer/StackWindow.xaml.cs b/src/PerfView/StackViewer/StackWindow.xaml.cs index b564c8a49..8814e5310 100644 --- a/src/PerfView/StackViewer/StackWindow.xaml.cs +++ b/src/PerfView/StackViewer/StackWindow.xaml.cs @@ -95,7 +95,7 @@ public string GetDefaultFoldPercentage() string defaultFoldPercentage = App.UserConfigData["DefaultFoldPercent"]; if (defaultFoldPercentage == null) { - defaultFoldPercentage = "1"; + defaultFoldPercentage = ""; } return defaultFoldPercentage; From 0eff3bd48f1634bde8c2fab0f80ab50e166d4e08 Mon Sep 17 00:00:00 2001 From: Brian Robbins Date: Mon, 22 Nov 2021 16:37:12 -0800 Subject: [PATCH 03/24] Set the default group pattern to [group module entries]. --- src/PerfView/StackViewer/StackWindow.xaml.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/PerfView/StackViewer/StackWindow.xaml.cs b/src/PerfView/StackViewer/StackWindow.xaml.cs index 8814e5310..dd4dc5273 100644 --- a/src/PerfView/StackViewer/StackWindow.xaml.cs +++ b/src/PerfView/StackViewer/StackWindow.xaml.cs @@ -114,10 +114,10 @@ public string GetDefaultGroupPat() { string defaultGroupPat = App.UserConfigData["DefaultGroupPat"]; - // By default, it is Just My App. + // By default, it is group module entries. if (defaultGroupPat == null) { - defaultGroupPat = @"[Just My App]"; + defaultGroupPat = @"[group module entries] {%}!=>module $1"; } return defaultGroupPat; From cd7ff6893abb9c4bd50010b52ca5c20a0c015076 Mon Sep 17 00:00:00 2001 From: Brian Robbins Date: Mon, 22 Nov 2021 16:01:20 -0800 Subject: [PATCH 04/24] Remove default event limit. --- src/TraceEvent/TraceLog.cs | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/src/TraceEvent/TraceLog.cs b/src/TraceEvent/TraceLog.cs index b1a387561..478c6dda8 100644 --- a/src/TraceEvent/TraceLog.cs +++ b/src/TraceEvent/TraceLog.cs @@ -1845,7 +1845,7 @@ private unsafe void CopyRawEvents(TraceEventDispatcher rawEvents, IStreamWriter } }; - const int defaultMaxEventCount = 20000000; // 20M events produces about 3GB of data. which is close to the limit of ETLX. + const int defaultMaxEventCount = -1; int maxEventCount = defaultMaxEventCount; double startMSec = 0; if (options != null) @@ -1865,7 +1865,10 @@ private unsafe void CopyRawEvents(TraceEventDispatcher rawEvents, IStreamWriter options.ConversionLog.WriteLine("MaxEventCount {0} < 1000, assumed in error, ignoring", options.MaxEventCount); } } - options.ConversionLog.WriteLine("Collecting a maximum of {0:n0} events.", maxEventCount); + if (maxEventCount != -1) + { + options.ConversionLog.WriteLine("Collecting a maximum of {0:n0} events.", maxEventCount); + } uint rawEventCount = 0; double rawInputSizeMB = rawEvents.Size / 1000000.0; @@ -1914,7 +1917,7 @@ private unsafe void CopyRawEvents(TraceEventDispatcher rawEvents, IStreamWriter { message = " Before StartMSec truncating"; } - else if (eventCount >= maxEventCount) + else if (maxEventCount != -1 && eventCount >= maxEventCount) { message = " Hit MaxEventCount, truncating."; } @@ -1956,7 +1959,7 @@ private unsafe void CopyRawEvents(TraceEventDispatcher rawEvents, IStreamWriter } else { - if (maxEventCount <= eventCount) + if (maxEventCount != -1 && maxEventCount <= eventCount) { processingDisabled = true; } @@ -2107,7 +2110,7 @@ private unsafe void CopyRawEvents(TraceEventDispatcher rawEvents, IStreamWriter eventsLost = rawEvents.EventsLost; } - if (eventCount >= maxEventCount) + if (maxEventCount != -1 && eventCount >= maxEventCount) { if (options != null && options.ConversionLog != null) { @@ -2116,9 +2119,8 @@ private unsafe void CopyRawEvents(TraceEventDispatcher rawEvents, IStreamWriter options.OnLostEvents(true, EventsLost, eventCount); } - options.ConversionLog.WriteLine("Truncated events to {0:n} events. Use /MaxEventCount to change.", maxEventCount); - options.ConversionLog.WriteLine("However is a hard limit of 4GB of of processed (ETLX) data, increasing it over 15M will probably hit that."); - options.ConversionLog.WriteLine("Instead you can use /SkipMSec:X to skip the beginning events and thus see the next window of /MaxEventCount the file."); + options.ConversionLog.WriteLine("Truncated events to {0:n} events. Change the value of /MaxEventCount or remove it entirely.", maxEventCount); + options.ConversionLog.WriteLine("If you must use /MaxEventCount, consider using /SkipMSec:X to skip the beginning events and see the next window of /MaxEventCount the file."); } } From a5a380be50214e8f2fe469109830b41d14c43a14 Mon Sep 17 00:00:00 2001 From: Brian Robbins Date: Wed, 19 Jan 2022 09:58:20 -0800 Subject: [PATCH 05/24] Default PerfView to 64-bit and remove PerfView64. --- PerfView.sln | 2 - src/PerfView/PerfView.csproj | 2 +- src/PerfView/app.config | 3 ++ src/{PerfView64 => PerfView}/app.manifest | 0 src/PerfView64/App.config | 9 ---- src/PerfView64/App.cs | 33 ------------- src/PerfView64/PerfView64.csproj | 57 ----------------------- src/PerfView64/Properties/AssemblyInfo.cs | 25 ---------- 8 files changed, 4 insertions(+), 127 deletions(-) rename src/{PerfView64 => PerfView}/app.manifest (100%) delete mode 100644 src/PerfView64/App.config delete mode 100644 src/PerfView64/App.cs delete mode 100644 src/PerfView64/PerfView64.csproj delete mode 100644 src/PerfView64/Properties/AssemblyInfo.cs diff --git a/PerfView.sln b/PerfView.sln index affdbbcb6..4a0fde119 100644 --- a/PerfView.sln +++ b/PerfView.sln @@ -57,8 +57,6 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CtfTracing.Tests", "src\Tra EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TraceEvent.Tests", "src\TraceEvent\TraceEvent.Tests\TraceEvent.Tests.csproj", "{19281902-FBC4-48C0-962B-9FDADAF5C783}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PerfView64", "src\PerfView64\PerfView64.csproj", "{F7419073-A62B-42E0-9B8C-4C2C4CE243A3}" -EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PerfView.Tests", "src\PerfView.Tests\PerfView.Tests.csproj", "{A0248EF2-8C39-478A-951E-324DDF4FF3EC}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PerfView.TestUtilities", "src\PerfView.TestUtilities\PerfView.TestUtilities.csproj", "{FE5CC86D-E87E-4560-8004-8852F3DE6794}" diff --git a/src/PerfView/PerfView.csproj b/src/PerfView/PerfView.csproj index dcc288d58..5359bb138 100644 --- a/src/PerfView/PerfView.csproj +++ b/src/PerfView/PerfView.csproj @@ -5,7 +5,6 @@ net45 WinExe True - True PerfView.App true true @@ -40,6 +39,7 @@ performance.ico + app.manifest diff --git a/src/PerfView/app.config b/src/PerfView/app.config index b497c65b8..f769d5913 100644 --- a/src/PerfView/app.config +++ b/src/PerfView/app.config @@ -4,6 +4,9 @@ + + + diff --git a/src/PerfView64/app.manifest b/src/PerfView/app.manifest similarity index 100% rename from src/PerfView64/app.manifest rename to src/PerfView/app.manifest diff --git a/src/PerfView64/App.config b/src/PerfView64/App.config deleted file mode 100644 index 871e2ec2d..000000000 --- a/src/PerfView64/App.config +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/src/PerfView64/App.cs b/src/PerfView64/App.cs deleted file mode 100644 index 22643689f..000000000 --- a/src/PerfView64/App.cs +++ /dev/null @@ -1,33 +0,0 @@ -using System; -using System.Diagnostics; -using System.IO; -using System.Windows; - -namespace PerfView64 -{ - /// - /// This application simply loads and calls the main PerfView executable, passing along the command line arguments - /// as they were received. It works as a 64-bit application by leveraging the ability of AnyCPU binaries to run as - /// either 32- or 64-bit applications, and while the main PerfView executable has the "prefer 32-bit" option set, - /// the 64-bit wrapper does not (and thus is launched by the OS as a 64-bit image where available). - /// - public class App - { - [STAThread] - [DebuggerNonUserCode] - public static int Main(string[] args) - { - try - { - return Run(args); - } - catch (FileNotFoundException ex) when (ex.Message.StartsWith("Could not load file or assembly 'PerfView")) - { - MessageBox.Show("Failed to run application. Is PerfView.exe present?", "PerfView.exe not found", MessageBoxButton.OK, MessageBoxImage.Error); - return 1; - } - } - - private static int Run(string[] args) => PerfView.App.Main(args); - } -} diff --git a/src/PerfView64/PerfView64.csproj b/src/PerfView64/PerfView64.csproj deleted file mode 100644 index 987aa93f6..000000000 --- a/src/PerfView64/PerfView64.csproj +++ /dev/null @@ -1,57 +0,0 @@ - - - - - WinExe - net45 - False - - ..\PerfView\bin\$(Configuration)\ - - Microsoft - PerfView - A 64-bit launcher for PerfView. - Copyright © Microsoft 2010 - - - - ..\PerfView\performance.ico - app.manifest - - - - - false - - - - - - - - - - - - - - - - - performance.ico - - - - - - - Microsoft400 - - - - - - diff --git a/src/PerfView64/Properties/AssemblyInfo.cs b/src/PerfView64/Properties/AssemblyInfo.cs deleted file mode 100644 index ae33800b3..000000000 --- a/src/PerfView64/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,25 +0,0 @@ -using System.Runtime.InteropServices; - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -//In order to begin building localizable applications, set -//CultureYouAreCodingWith in your .csproj file -//inside a . For example, if you are using US english -//in your source files, set the to en-US. Then uncomment -//the NeutralResourceLanguage attribute below. Update the "en-US" in -//the line below to match the UICulture setting in the project file. - -//[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)] - - -//[assembly: ThemeInfo( -// ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located -// //(used if a resource is not found in the page, -// // or application resource dictionaries) -// ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located -// //(used if a resource is not found in the page, -// // app, or any theme specific resource dictionaries) -//)] From 412da7b3482f8c3b891f28c8acdf19ccace85097 Mon Sep 17 00:00:00 2001 From: Brian Robbins Date: Wed, 19 Jan 2022 14:37:22 -0800 Subject: [PATCH 06/24] Increment versions to 3.0. --- src/Directory.Build.props | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Directory.Build.props b/src/Directory.Build.props index f8951b83c..7f432a767 100644 --- a/src/Directory.Build.props +++ b/src/Directory.Build.props @@ -22,8 +22,8 @@ - 2.0.76 - 2.0.76 + 3.0.0 + 3.0.0 From 9060e371b1089f3d52465d48ffa5d4aac3e83fda Mon Sep 17 00:00:00 2001 From: Brian Robbins Date: Tue, 25 Jan 2022 13:25:58 -0800 Subject: [PATCH 07/24] Fold UNMANAGED_CODE_TIME and CPU by default for EventPipe ThreadTime views. --- src/PerfView/PerfViewData.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/PerfView/PerfViewData.cs b/src/PerfView/PerfViewData.cs index 8f2f2229c..b76b1c964 100644 --- a/src/PerfView/PerfViewData.cs +++ b/src/PerfView/PerfViewData.cs @@ -9166,6 +9166,7 @@ protected internal override void ConfigureStackWindow(string stackSourceName, St if (stackSourceName.Contains("Thread Time")) { stackWindow.ScalingPolicy = ScalingPolicyKind.TimeMetric; + stackWindow.FoldRegExTextBox.Text += ";UNMANAGED_CODE_TIME;CPU"; } if (stackSourceName.StartsWith("GC Heap Net Mem") || stackSourceName.StartsWith("GC Heap Alloc Ignore Free")) From d16509d742cea1e2c54282f8f19567b2d35d62bc Mon Sep 17 00:00:00 2001 From: Brian Robbins Date: Wed, 2 Mar 2022 10:42:57 -0800 Subject: [PATCH 08/24] Add a new Options menu to the UI and make open to last used directory configurable. --- src/PerfView/MainWindow.xaml | 3 +++ src/PerfView/MainWindow.xaml.cs | 27 ++++++++++++++++++++++++++- 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/src/PerfView/MainWindow.xaml b/src/PerfView/MainWindow.xaml index d9cfa6793..a542965f7 100644 --- a/src/PerfView/MainWindow.xaml +++ b/src/PerfView/MainWindow.xaml @@ -104,6 +104,9 @@ + + + diff --git a/src/PerfView/MainWindow.xaml.cs b/src/PerfView/MainWindow.xaml.cs index 53df1a470..91862c4e1 100644 --- a/src/PerfView/MainWindow.xaml.cs +++ b/src/PerfView/MainWindow.xaml.cs @@ -11,6 +11,7 @@ using System.Globalization; using System.IO; using System.Linq; +using System.Runtime.CompilerServices; using System.Text; using System.Text.RegularExpressions; using System.Windows; @@ -1111,13 +1112,37 @@ public MainWindow() AppLog.LogUsage("Exiting"); }; + // Initialize configuration options. + InitializeOpenToLastUsedDirectory(); + InitializeFeedback(); } public PerfViewDirectory CurrentDirectory { get { return m_CurrentDirectory; } } + public void InitializeOpenToLastUsedDirectory() + { + bool currentValue; + bool.TryParse(App.UserConfigData["OpenToLastUsedDirectory"], out currentValue); + Option_OpenToLastUsedDirectory.IsChecked = currentValue; + } + + public void ToggleOpenToLastUsedDirectory(object sender, RoutedEventArgs e) + { + bool currentValue; + bool.TryParse(App.UserConfigData["OpenToLastUsedDirectory"], out currentValue); + bool newValue = !currentValue; + App.UserConfigData["OpenToLastUsedDirectory"] = newValue.ToString(); + Option_OpenToLastUsedDirectory.IsChecked = newValue; + } + public void OpenPreviouslyOpened() { - OpenPath(App.UserConfigData["Directory"] ?? "."); + string path = "."; + if (bool.TryParse(App.UserConfigData["OpenToLastUsedDirectory"], out bool openToLastUsedDirectory) && openToLastUsedDirectory) + { + path = App.UserConfigData["Directory"] ?? "."; + } + OpenPath(path); } /// From 03ba74f14f2c670239d8e308bc1801c5fb358934 Mon Sep 17 00:00:00 2001 From: Brian Robbins Date: Wed, 2 Mar 2022 10:54:12 -0800 Subject: [PATCH 09/24] Remove PerfView64 from app title. --- src/PerfView/MainWindow.xaml.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/PerfView/MainWindow.xaml.cs b/src/PerfView/MainWindow.xaml.cs index 91862c4e1..dc8b80d88 100644 --- a/src/PerfView/MainWindow.xaml.cs +++ b/src/PerfView/MainWindow.xaml.cs @@ -1186,7 +1186,7 @@ public void OpenPath(string path, bool force = false) m_CurrentDirectory = new PerfViewDirectory(fullPath); UpdateFileFilter(); - string appName = Environment.Is64BitProcess ? "PerfView64" : "PerfView"; + string appName = "PerfView"; string elevatedSuffix = (TraceEventSession.IsElevated() ?? false) ? " (Administrator)" : ""; Title = appName + " " + CurrentDirectory.FilePath + elevatedSuffix; } From cc017a922df33574411c53170ac932f4923b6433 Mon Sep 17 00:00:00 2001 From: Brian Robbins Date: Wed, 2 Mar 2022 10:53:48 -0800 Subject: [PATCH 10/24] Update version to preview1. --- src/Directory.Build.props | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Directory.Build.props b/src/Directory.Build.props index 7f432a767..f3a121197 100644 --- a/src/Directory.Build.props +++ b/src/Directory.Build.props @@ -22,8 +22,8 @@ - 3.0.0 - 3.0.0 + 3.0.0-preview1 + 3.0.0-preview1 From 8de59dd0017029235aff82658fada65af85ae4bc Mon Sep 17 00:00:00 2001 From: Brian Robbins Date: Thu, 3 Mar 2022 10:22:30 -0800 Subject: [PATCH 11/24] Add CI triggers for feature/perfview-3.0 --- .ado.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.ado.yml b/.ado.yml index 89116542d..6506b320a 100644 --- a/.ado.yml +++ b/.ado.yml @@ -4,9 +4,11 @@ name: "$(date:yyyyMMdd)$(rev:.r)" trigger: - main + - feature/perfview-3.0 pr: - main + - feature/perfview-3.0 jobs: - job: PerfView_Debug From a11c4aa15d31024deaea6b788ef45ba94ffa3fc9 Mon Sep 17 00:00:00 2001 From: Andrew Au Date: Tue, 18 Jan 2022 15:47:33 -0800 Subject: [PATCH 12/24] Upgrading to .NET framework 4.6.2 --- README.md | 2 +- src/CSVReader/CSVReader.csproj | 2 +- .../EtwClrProfilerSigning.csproj | 2 +- src/EtwHeapDump/EtwHeapDump.csproj | 2 +- src/FastSerialization/FastSerialization.csproj | 2 +- src/HeapDump/HeapDump.csproj | 2 +- src/HeapDumpDLL/HeapDumpDLL.csproj | 2 +- src/LinuxEvent.Tests/LinuxTracing.Tests.csproj | 2 +- src/MemoryGraph/MemoryGraph.csproj | 2 +- .../PerfView.TestUtilities.csproj | 2 +- src/PerfView.Tests/PerfView.Tests.csproj | 2 +- src/PerfView/PerfView.csproj | 10 +++++----- src/PerfViewCollect/PerfViewCollect.csproj | 4 ++-- src/PerfViewExtensions/GlobalSrc/Global.csproj | 2 +- src/TraceEvent/BPerf/BPerfEventSource.cs | 2 +- src/TraceEvent/Compatibility.cs | 2 +- .../CtfTracing.Tests/CtfTracing.Tests.csproj | 2 +- ...osoft.Diagnostics.Tracing.TraceEvent.nuspec | 18 +++++++++--------- ...rosoft.Diagnostics.Tracing.TraceEvent.props | 2 +- .../Samples/TraceEventSamples.csproj | 2 +- src/TraceEvent/Samples/packages.config | 16 ++++++++-------- .../Stacks/StackSourceWriterHelper.cs | 2 +- .../TraceEvent.Tests/TraceEvent.Tests.csproj | 2 +- src/TraceEvent/TraceEvent.csproj | 10 +++++----- .../TraceEventPackageSigning.csproj | 2 +- src/TraceParserGen/TraceParserGen.csproj | 2 +- src/Utilities/Utilities.csproj | 2 +- 27 files changed, 51 insertions(+), 51 deletions(-) diff --git a/README.md b/README.md index 2f2337a55..b528d9166 100644 --- a/README.md +++ b/README.md @@ -92,7 +92,7 @@ PerfView is developed in Visual Studio 2019 using features through C# 6. You will want to deploy the 'Release' rather than the 'Debug' version of PerfView. Thus, first set your build configuration to 'Release' (Text window in the top toolbar, or right click on the .SLN file -> Configuration Manager -> Active Solution Configuration). -Next build (Build -> Build Solution (Ctrl-Shift-B)). The result will be that in the src\perfView\bin\net45\Release directory there will be +Next build (Build -> Build Solution (Ctrl-Shift-B)). The result will be that in the src\perfView\bin\net462\Release directory there will be among other things a PerfView.exe. This one file is all you need to deploy. Simply copy it to where you wish to deploy the app. ### Information for build troubleshooting. diff --git a/src/CSVReader/CSVReader.csproj b/src/CSVReader/CSVReader.csproj index 09a1341da..9d0b30118 100644 --- a/src/CSVReader/CSVReader.csproj +++ b/src/CSVReader/CSVReader.csproj @@ -2,7 +2,7 @@ - net45 + net462 CSVReader Microsoft diff --git a/src/EtwClrProfilerSigning/EtwClrProfilerSigning.csproj b/src/EtwClrProfilerSigning/EtwClrProfilerSigning.csproj index 0fca9f298..65e16bf4e 100644 --- a/src/EtwClrProfilerSigning/EtwClrProfilerSigning.csproj +++ b/src/EtwClrProfilerSigning/EtwClrProfilerSigning.csproj @@ -5,7 +5,7 @@ library - net45 + net462 diff --git a/src/EtwHeapDump/EtwHeapDump.csproj b/src/EtwHeapDump/EtwHeapDump.csproj index 6dbea1880..fec6042a4 100644 --- a/src/EtwHeapDump/EtwHeapDump.csproj +++ b/src/EtwHeapDump/EtwHeapDump.csproj @@ -1,7 +1,7 @@  - net45 + net462 Microsoft.Diagnostics.EtwHeapDump Microsoft.Diagnostics.EtwHeapDump true diff --git a/src/FastSerialization/FastSerialization.csproj b/src/FastSerialization/FastSerialization.csproj index e4d4628b9..32ad0655f 100644 --- a/src/FastSerialization/FastSerialization.csproj +++ b/src/FastSerialization/FastSerialization.csproj @@ -2,7 +2,7 @@ - net45;netstandard1.3 + net462;netstandard1.3 Microsoft.Diagnostics.FastSerialization Microsoft.Diagnostics.FastSerialization true diff --git a/src/HeapDump/HeapDump.csproj b/src/HeapDump/HeapDump.csproj index 06afde407..f8e80cb08 100644 --- a/src/HeapDump/HeapDump.csproj +++ b/src/HeapDump/HeapDump.csproj @@ -2,7 +2,7 @@ - net45 + net462 AnyCPU;x64 Exe true diff --git a/src/HeapDumpDLL/HeapDumpDLL.csproj b/src/HeapDumpDLL/HeapDumpDLL.csproj index 0e2bd3f11..34fd00372 100644 --- a/src/HeapDumpDLL/HeapDumpDLL.csproj +++ b/src/HeapDumpDLL/HeapDumpDLL.csproj @@ -2,7 +2,7 @@ - net45 + net462 Microsoft.Diagnostics.HeapDump Microsoft.Diagnostics.HeapDump true diff --git a/src/LinuxEvent.Tests/LinuxTracing.Tests.csproj b/src/LinuxEvent.Tests/LinuxTracing.Tests.csproj index dece5757e..cd77d11df 100644 --- a/src/LinuxEvent.Tests/LinuxTracing.Tests.csproj +++ b/src/LinuxEvent.Tests/LinuxTracing.Tests.csproj @@ -2,7 +2,7 @@ - net46 + net462 true Unit tests. Copyright © Microsoft 2016 diff --git a/src/MemoryGraph/MemoryGraph.csproj b/src/MemoryGraph/MemoryGraph.csproj index 0b73484d3..153dd14b3 100644 --- a/src/MemoryGraph/MemoryGraph.csproj +++ b/src/MemoryGraph/MemoryGraph.csproj @@ -2,7 +2,7 @@ - net45;netstandard2.0 + net462;netstandard2.0 Microsoft.Diagnostics.MemoryGraph Microsoft.Diagnostics.MemoryGraph true diff --git a/src/PerfView.TestUtilities/PerfView.TestUtilities.csproj b/src/PerfView.TestUtilities/PerfView.TestUtilities.csproj index e671bafa7..2d006b850 100644 --- a/src/PerfView.TestUtilities/PerfView.TestUtilities.csproj +++ b/src/PerfView.TestUtilities/PerfView.TestUtilities.csproj @@ -2,7 +2,7 @@ - net46 + net462 Unit test utility library. Copyright © Microsoft 2017 diff --git a/src/PerfView.Tests/PerfView.Tests.csproj b/src/PerfView.Tests/PerfView.Tests.csproj index 7d432d180..e0825255b 100644 --- a/src/PerfView.Tests/PerfView.Tests.csproj +++ b/src/PerfView.Tests/PerfView.Tests.csproj @@ -2,7 +2,7 @@ - net46 + net462 PerfViewTests PerfViewTests Unit tests for PerfView. diff --git a/src/PerfView/PerfView.csproj b/src/PerfView/PerfView.csproj index 5359bb138..ac1ba0ba7 100644 --- a/src/PerfView/PerfView.csproj +++ b/src/PerfView/PerfView.csproj @@ -2,7 +2,7 @@ - net45 + net462 WinExe True PerfView.App @@ -241,14 +241,14 @@ amd64\vcruntime140_1.dll False - + Non-Resx false .\amd64\HeapDump.exe amd64\HeapDump.exe False - + Non-Resx false .\amd64\HeapDump.exe.config @@ -263,14 +263,14 @@ False - + Non-Resx false .\x86\EtwClrProfiler.dll x86\EtwClrProfiler.dll False - + Non-Resx false .\amd64\EtwClrProfiler.dll diff --git a/src/PerfViewCollect/PerfViewCollect.csproj b/src/PerfViewCollect/PerfViewCollect.csproj index f5ba86892..a27516d8f 100644 --- a/src/PerfViewCollect/PerfViewCollect.csproj +++ b/src/PerfViewCollect/PerfViewCollect.csproj @@ -76,14 +76,14 @@ - - - + + + - - - + + + - - - + + + diff --git a/src/TraceEvent/Microsoft.Diagnostics.Tracing.TraceEvent.props b/src/TraceEvent/Microsoft.Diagnostics.Tracing.TraceEvent.props index c0cb9d1f4..0d28136df 100644 --- a/src/TraceEvent/Microsoft.Diagnostics.Tracing.TraceEvent.props +++ b/src/TraceEvent/Microsoft.Diagnostics.Tracing.TraceEvent.props @@ -99,7 +99,7 @@ PreserveNewest False - + OSExtensions.dll PreserveNewest False diff --git a/src/TraceEvent/Samples/TraceEventSamples.csproj b/src/TraceEvent/Samples/TraceEventSamples.csproj index 4ca883e3c..4dfe57863 100644 --- a/src/TraceEvent/Samples/TraceEventSamples.csproj +++ b/src/TraceEvent/Samples/TraceEventSamples.csproj @@ -3,7 +3,7 @@ Exe - net45 + net462 Microsoft TraceEvent Samples diff --git a/src/TraceEvent/Samples/packages.config b/src/TraceEvent/Samples/packages.config index 6f5ab38b0..b4012efab 100644 --- a/src/TraceEvent/Samples/packages.config +++ b/src/TraceEvent/Samples/packages.config @@ -1,11 +1,11 @@  - - - - - - - - + + + + + + + + \ No newline at end of file diff --git a/src/TraceEvent/Stacks/StackSourceWriterHelper.cs b/src/TraceEvent/Stacks/StackSourceWriterHelper.cs index 7b943f963..560059207 100644 --- a/src/TraceEvent/Stacks/StackSourceWriterHelper.cs +++ b/src/TraceEvent/Stacks/StackSourceWriterHelper.cs @@ -239,7 +239,7 @@ internal static string GetEscaped(string name, Dictionary escape .GetType("System.Web.HttpUtility, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a") .GetMethod("JavaScriptStringEncode", new Type[1] { typeof(string) }) .Invoke(null, new object[] { name }); -#elif NETSTANDARD2_0 || NET45 +#elif NETSTANDARD2_0 || NET462 escaped = escapedNames[name] = System.Web.HttpUtility.JavaScriptStringEncode(name); #endif } diff --git a/src/TraceEvent/TraceEvent.Tests/TraceEvent.Tests.csproj b/src/TraceEvent/TraceEvent.Tests/TraceEvent.Tests.csproj index 33d3bdbeb..62adb356b 100644 --- a/src/TraceEvent/TraceEvent.Tests/TraceEvent.Tests.csproj +++ b/src/TraceEvent/TraceEvent.Tests/TraceEvent.Tests.csproj @@ -2,7 +2,7 @@ - net46 + net462 TraceEventTests TraceEventTests Unit tests for TraceEvent. diff --git a/src/TraceEvent/TraceEvent.csproj b/src/TraceEvent/TraceEvent.csproj index 19be869fc..6260db04c 100644 --- a/src/TraceEvent/TraceEvent.csproj +++ b/src/TraceEvent/TraceEvent.csproj @@ -2,7 +2,7 @@ - net45;netstandard1.6;netstandard2.0 + net462;netstandard1.6;netstandard2.0 @@ -40,8 +40,8 @@ @@ -58,7 +58,7 @@ - + @@ -196,7 +196,7 @@ diff --git a/src/TraceEventPackageSigning/TraceEventPackageSigning.csproj b/src/TraceEventPackageSigning/TraceEventPackageSigning.csproj index 6494eba3d..d09e48289 100644 --- a/src/TraceEventPackageSigning/TraceEventPackageSigning.csproj +++ b/src/TraceEventPackageSigning/TraceEventPackageSigning.csproj @@ -9,7 +9,7 @@ library - net45 + net462 diff --git a/src/TraceParserGen/TraceParserGen.csproj b/src/TraceParserGen/TraceParserGen.csproj index 3a26efe68..6a356352b 100644 --- a/src/TraceParserGen/TraceParserGen.csproj +++ b/src/TraceParserGen/TraceParserGen.csproj @@ -2,7 +2,7 @@ - net40 + net462 Exe TraceParserGen diff --git a/src/Utilities/Utilities.csproj b/src/Utilities/Utilities.csproj index 5c62f7c82..80dd6b78a 100644 --- a/src/Utilities/Utilities.csproj +++ b/src/Utilities/Utilities.csproj @@ -2,7 +2,7 @@ - net45;netstandard2.0 + net462;netstandard2.0 Microsoft.Diagnostics.Utilities Microsoft.Diagnostics.Utilities true From c4d50fbde83a05f31f22b013ebf984ca499ae32d Mon Sep 17 00:00:00 2001 From: Brian Robbins Date: Thu, 18 Nov 2021 12:50:09 -0800 Subject: [PATCH 13/24] Switch serialization and deserialization to default to 64-bit StreamLabels. --- src/FastSerialization/FastSerialization.cs | 2 +- src/TraceEvent/EventPipe/EventPipeEventSource.cs | 4 ++-- src/TraceEvent/TraceLog.cs | 3 ++- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/FastSerialization/FastSerialization.cs b/src/FastSerialization/FastSerialization.cs index cd5777a0b..e524cb38c 100644 --- a/src/FastSerialization/FastSerialization.cs +++ b/src/FastSerialization/FastSerialization.cs @@ -105,7 +105,7 @@ enum StreamReaderAlignment : int #endif sealed class SerializationConfiguration { - public StreamLabelWidth StreamLabelWidth { get; set; } + public StreamLabelWidth StreamLabelWidth { get; set; } = StreamLabelWidth.EightBytes; } /// diff --git a/src/TraceEvent/EventPipe/EventPipeEventSource.cs b/src/TraceEvent/EventPipe/EventPipeEventSource.cs index fbbb9e1f7..0f7eee883 100644 --- a/src/TraceEvent/EventPipe/EventPipeEventSource.cs +++ b/src/TraceEvent/EventPipe/EventPipeEventSource.cs @@ -28,12 +28,12 @@ namespace Microsoft.Diagnostics.Tracing /// public unsafe class EventPipeEventSource : TraceEventDispatcher, IFastSerializable, IFastSerializableVersion { - public EventPipeEventSource(string fileName) : this(new PinnedStreamReader(fileName, 0x20000), fileName) + public EventPipeEventSource(string fileName) : this(new PinnedStreamReader(fileName, 0x20000, new SerializationConfiguration() { StreamLabelWidth = StreamLabelWidth.FourBytes }), fileName) { } public EventPipeEventSource(Stream stream) - : this(new PinnedStreamReader(stream, alignment: StreamReaderAlignment.OneByte), "stream") + : this(new PinnedStreamReader(stream, alignment: StreamReaderAlignment.OneByte, config: new SerializationConfiguration() { StreamLabelWidth = StreamLabelWidth.FourBytes }), "stream") { } diff --git a/src/TraceEvent/TraceLog.cs b/src/TraceEvent/TraceLog.cs index 478c6dda8..714b04a89 100644 --- a/src/TraceEvent/TraceLog.cs +++ b/src/TraceEvent/TraceLog.cs @@ -3406,6 +3406,7 @@ private unsafe void InitializeFromFile(string etlxFilePath) // If this Assert files, fix the declaration of headerSize to match Debug.Assert(sizeof(TraceEventNativeMethods.EVENT_HEADER) == 0x50 && sizeof(TraceEventNativeMethods.ETW_BUFFER_CONTEXT) == 4); + // As of TraceLog version 74, all StreamLabels are 64-bit. See IFastSerializableVersion for details. Deserializer deserializer = new Deserializer(new PinnedStreamReader(etlxFilePath, 0x10000), etlxFilePath); deserializer.TypeResolver = typeName => System.Type.GetType(typeName); // resolve types in this assembly (and mscorlib) @@ -3850,7 +3851,7 @@ void IFastSerializable.FromStream(Deserializer deserializer) } int IFastSerializableVersion.Version { - get { return 73; } + get { return 74; } } int IFastSerializableVersion.MinimumVersionCanRead { From 3c7b998ec4013dccef4ac2e978032caa946c8664 Mon Sep 17 00:00:00 2001 From: Brian Robbins Date: Mon, 22 Nov 2021 13:44:30 -0800 Subject: [PATCH 14/24] Mark GCDump files as 32-bit. --- src/HeapDump/GCHeapDump.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/HeapDump/GCHeapDump.cs b/src/HeapDump/GCHeapDump.cs index 3790fa368..fffc734da 100644 --- a/src/HeapDump/GCHeapDump.cs +++ b/src/HeapDump/GCHeapDump.cs @@ -17,11 +17,11 @@ public class GCHeapDump : IFastSerializable, IFastSerializableVersion { public GCHeapDump(string inputFileName) : - this(new Deserializer(inputFileName)) + this(new Deserializer(inputFileName, new SerializationConfiguration() { StreamLabelWidth = StreamLabelWidth.FourBytes })) { } public GCHeapDump(Stream inputStream, string streamName) : - this(new Deserializer(inputStream, streamName)) + this(new Deserializer(inputStream, streamName, new SerializationConfiguration() { StreamLabelWidth = StreamLabelWidth.FourBytes })) { } /// From fe0fdf0ff0afcf0b6a98946551656bf7abcf42b3 Mon Sep 17 00:00:00 2001 From: Brian Robbins Date: Wed, 23 Mar 2022 13:14:18 -0700 Subject: [PATCH 15/24] Fix ETLX truncation and overflow of current size during creation. --- src/TraceEvent/TraceLog.cs | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/src/TraceEvent/TraceLog.cs b/src/TraceEvent/TraceLog.cs index 714b04a89..5ebb5b24b 100644 --- a/src/TraceEvent/TraceLog.cs +++ b/src/TraceEvent/TraceLog.cs @@ -1889,12 +1889,7 @@ private unsafe void CopyRawEvents(TraceEventDispatcher rawEvents, IStreamWriter // Show status every 128K events if ((rawEventCount & 0x1FFFF) == 0) { - var curOutputSizeMB = ((double)(uint)writer.GetLabel()) / 1000000.0; - // Currently ETLX has a size restriction of 4Gig. Thus if we are getting big, start truncating. - if (curOutputSizeMB > 3500) - { - processingDisabled = true; - } + var curOutputSizeMB = ((double)(ulong)writer.GetLabel()) / 1000000.0; if (options != null && options.ConversionLog != null) { @@ -1921,10 +1916,6 @@ private unsafe void CopyRawEvents(TraceEventDispatcher rawEvents, IStreamWriter { message = " Hit MaxEventCount, truncating."; } - else if (curOutputSizeMB > 3500) - { - message = " Hit File size limit (3.5Gig) truncating."; - } options.ConversionLog.WriteLine( "[Sec {0,4:f0} Read {1,10:n0} events. At {2,7:n0}ms. Wrote {3,4:f0}MB ({4,3:f0}%). EstDone {5,2:f0} min {6,2:f0} sec.{7}]", From 3de29ea63547e8e152253855b87ab1b6dae1ffc2 Mon Sep 17 00:00:00 2001 From: Brian Robbins Date: Wed, 23 Mar 2022 13:35:48 -0700 Subject: [PATCH 16/24] Clean-up ETLX conversion log. --- src/TraceEvent/TraceLog.cs | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/src/TraceEvent/TraceLog.cs b/src/TraceEvent/TraceLog.cs index 5ebb5b24b..4ffdfb1bc 100644 --- a/src/TraceEvent/TraceLog.cs +++ b/src/TraceEvent/TraceLog.cs @@ -1902,11 +1902,6 @@ private unsafe void CopyRawEvents(TraceEventDispatcher rawEvents, IStreamWriter { var curDurationSec = (DateTime.Now - startTime).TotalSeconds; - var ratioOutputToInput = (double)eventCount / (double)rawEventCount; - var estimatedFinalSizeMB = Math.Max(rawInputSizeMB * ratioOutputToInput * 1.15, curOutputSizeMB * 1.02); - var ratioSizeComplete = curOutputSizeMB / estimatedFinalSizeMB; - var estTimeLeftSec = (int)(curDurationSec / ratioSizeComplete - curDurationSec); - var message = ""; if (0 < startMSec && data.TimeStampRelativeMSec < startMSec) { @@ -1918,14 +1913,11 @@ private unsafe void CopyRawEvents(TraceEventDispatcher rawEvents, IStreamWriter } options.ConversionLog.WriteLine( - "[Sec {0,4:f0} Read {1,10:n0} events. At {2,7:n0}ms. Wrote {3,4:f0}MB ({4,3:f0}%). EstDone {5,2:f0} min {6,2:f0} sec.{7}]", + "[ELAPSED {0,2:f0} seconds. READ {1,10:n0} events. TIMESTAMP {2,7:n0}ms. WRITTEN {3,5:n0}MB. {4}]", curDurationSec, rawEventCount, data.TimeStampRelativeMSec, curOutputSizeMB, - ratioSizeComplete * 100.0, - estTimeLeftSec / 60, - estTimeLeftSec % 60, message); } } From 26b1a4b38db87836d8b6bd59b1e88008e4de1ddc Mon Sep 17 00:00:00 2001 From: Brian Robbins Date: Wed, 23 Mar 2022 14:46:00 -0700 Subject: [PATCH 17/24] Increment version to Preview2. --- src/Directory.Build.props | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Directory.Build.props b/src/Directory.Build.props index f3a121197..bf38a9969 100644 --- a/src/Directory.Build.props +++ b/src/Directory.Build.props @@ -22,8 +22,8 @@ - 3.0.0-preview1 - 3.0.0-preview1 + 3.0.0-preview2 + 3.0.0-preview2 From 00d076795f9c602d2d0189603a49dc37ac276979 Mon Sep 17 00:00:00 2001 From: Brian Robbins Date: Wed, 23 Mar 2022 14:54:41 -0700 Subject: [PATCH 18/24] Adjust group naming. --- src/PerfView/PerfViewData.cs | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/src/PerfView/PerfViewData.cs b/src/PerfView/PerfViewData.cs index b76b1c964..45efb3dfc 100644 --- a/src/PerfView/PerfViewData.cs +++ b/src/PerfView/PerfViewData.cs @@ -7008,10 +7008,10 @@ protected override Action OpenImpl(Window parentWindow, StatusBar worker } } - var advanced = new PerfViewTreeGroup("Advanced Group"); - var memory = new PerfViewTreeGroup("Memory Group"); - var obsolete = new PerfViewTreeGroup("Old Group"); - var experimental = new PerfViewTreeGroup("Experimental Group"); + var advanced = new PerfViewTreeGroup("Advanced"); + var memory = new PerfViewTreeGroup("Memory"); + var frameworkAspNetWcf = new PerfViewTreeGroup(".NET Framework ASP.NET/WCF"); + var experimental = new PerfViewTreeGroup("Experimental"); m_Children = new List(); bool hasCPUStacks = false; @@ -7352,15 +7352,15 @@ protected override Action OpenImpl(Window parentWindow, StatusBar worker { if (hasCPUStacks) { - obsolete.Children.Add(new PerfViewStackSource(this, "Server Request CPU")); + frameworkAspNetWcf.Children.Add(new PerfViewStackSource(this, "Server Request CPU")); } if (hasCSwitchStacks) { - obsolete.Children.Add(new PerfViewStackSource(this, "Server Request Thread Time")); + frameworkAspNetWcf.Children.Add(new PerfViewStackSource(this, "Server Request Thread Time")); } if (hasGCAllocationTicks) { - obsolete.Children.Add(new PerfViewStackSource(this, "Server Request Managed Allocation")); + frameworkAspNetWcf.Children.Add(new PerfViewStackSource(this, "Server Request Managed Allocation")); } } @@ -7387,14 +7387,14 @@ protected override Action OpenImpl(Window parentWindow, StatusBar worker var name = "ASP.NET Thread Time"; if (hasCSwitchStacks && hasTplStacks) { - obsolete.Children.Add(new PerfViewStackSource(this, "ASP.NET Thread Time (with Tasks)")); + frameworkAspNetWcf.Children.Add(new PerfViewStackSource(this, "ASP.NET Thread Time (with Tasks)")); } else if (!hasCSwitchStacks) { name += " (CPU ONLY)"; } - obsolete.Children.Add(new PerfViewStackSource(this, name)); + frameworkAspNetWcf.Children.Add(new PerfViewStackSource(this, name)); } } @@ -7447,9 +7447,9 @@ protected override Action OpenImpl(Window parentWindow, StatusBar worker m_Children.Add(advanced); } - if (0 < obsolete.Children.Count) + if (0 < frameworkAspNetWcf.Children.Count) { - m_Children.Add(obsolete); + m_Children.Add(frameworkAspNetWcf); } if (AppLog.InternalUser && 0 < experimental.Children.Count) From f33462fa7e46462b3ad215df5e580895bc873f2d Mon Sep 17 00:00:00 2001 From: Brian Robbins Date: Tue, 5 Apr 2022 09:33:42 -0700 Subject: [PATCH 19/24] Disable NGEN rundown by default. --- src/PerfView/CommandLineArgs.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/PerfView/CommandLineArgs.cs b/src/PerfView/CommandLineArgs.cs index daffff5f9..11884ab60 100644 --- a/src/PerfView/CommandLineArgs.cs +++ b/src/PerfView/CommandLineArgs.cs @@ -142,7 +142,7 @@ public static string GetHelpString(int maxLineWidth) public string FocusProcess; // The target process for CLR Rundown. public bool NoRundown; public bool NoNGenPdbs; - public bool NoNGenRundown; + public bool NoNGenRundown = true; public bool NoClrRundown; public bool NoV2Rundown; public bool LowPriority; From af3e258805100a84d6892e1f8363a188c458844a Mon Sep 17 00:00:00 2001 From: Brian Robbins Date: Tue, 5 Apr 2022 14:04:48 -0700 Subject: [PATCH 20/24] Fix missed serialization size overrides. --- src/HeapDump/GCHeapDump.cs | 2 +- src/HeapDump/GCHeapDumper.cs | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/HeapDump/GCHeapDump.cs b/src/HeapDump/GCHeapDump.cs index fffc734da..abfdcd047 100644 --- a/src/HeapDump/GCHeapDump.cs +++ b/src/HeapDump/GCHeapDump.cs @@ -192,7 +192,7 @@ public static Dictionary GetProcessesWithGCHeaps() private void Write(string outputFileName) { Debug.Assert(MemoryGraph != null); - var serializer = new Serializer(outputFileName, this); + var serializer = new Serializer(new IOStreamStreamWriter(outputFileName, config: new SerializationConfiguration() { StreamLabelWidth = StreamLabelWidth.FourBytes }), this); serializer.Close(); } diff --git a/src/HeapDump/GCHeapDumper.cs b/src/HeapDump/GCHeapDumper.cs index 3e8ba6f1d..e811de6e5 100644 --- a/src/HeapDump/GCHeapDumper.cs +++ b/src/HeapDump/GCHeapDumper.cs @@ -1522,7 +1522,7 @@ private void WriteData(bool logLiveStats) if (m_outputFileName != null) { m_log.WriteLine("{0,5:f1}s: Started Writing to file.", m_sw.Elapsed.TotalSeconds); - var serializer = new Serializer(m_outputFileName, m_gcHeapDump); + var serializer = new Serializer(new IOStreamStreamWriter(m_outputFileName, config: new SerializationConfiguration() { StreamLabelWidth = StreamLabelWidth.FourBytes }), m_gcHeapDump); serializer.Close(); m_log.WriteLine("Actual file size = {0:f3}MB", new FileInfo(m_outputFileName).Length / 1000000.0); @@ -1531,7 +1531,7 @@ private void WriteData(bool logLiveStats) if (m_outputStream != null) { m_log.WriteLine("{0,5:f1}s: Started Writing to stream.", m_sw.Elapsed.TotalSeconds); - var serializer = new Serializer(m_outputStream, m_gcHeapDump); + var serializer = new Serializer(new IOStreamStreamWriter(m_outputStream, config: new SerializationConfiguration() { StreamLabelWidth = StreamLabelWidth.FourBytes }), m_gcHeapDump); serializer.Close(); } From ef06bf771dbb124967bf855222505b0b9a512df5 Mon Sep 17 00:00:00 2001 From: Brian Robbins Date: Tue, 19 Apr 2022 14:48:57 -0700 Subject: [PATCH 21/24] Finalize 3.0 release version numbers. --- src/Directory.Build.props | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Directory.Build.props b/src/Directory.Build.props index bf38a9969..7f432a767 100644 --- a/src/Directory.Build.props +++ b/src/Directory.Build.props @@ -22,8 +22,8 @@ - 3.0.0-preview2 - 3.0.0-preview2 + 3.0.0 + 3.0.0 From 7aa1d5257e3bf03f980c7f5056074376411ac490 Mon Sep 17 00:00:00 2001 From: Brian Robbins Date: Tue, 19 Apr 2022 15:52:09 -0700 Subject: [PATCH 22/24] Update DirectoryAnalyzerResolver to build against NET462. --- src/TraceEvent/AutomatedAnalysis/DirectoryAnalyzerResolver.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/TraceEvent/AutomatedAnalysis/DirectoryAnalyzerResolver.cs b/src/TraceEvent/AutomatedAnalysis/DirectoryAnalyzerResolver.cs index 7801a5a5e..b69bc809c 100644 --- a/src/TraceEvent/AutomatedAnalysis/DirectoryAnalyzerResolver.cs +++ b/src/TraceEvent/AutomatedAnalysis/DirectoryAnalyzerResolver.cs @@ -1,4 +1,4 @@ -#if NET45 || NETSTANDARD2_0 +#if NET462 || NETSTANDARD2_0 using System.IO; using System.Reflection; From b6fdfb9fd9c8abf074494dbfe42af58ae500a401 Mon Sep 17 00:00:00 2001 From: Brian Robbins Date: Tue, 19 Apr 2022 15:55:03 -0700 Subject: [PATCH 23/24] Update TraceEvent nuspec for 4.6.2 dependency. --- src/TraceEvent/Microsoft.Diagnostics.Tracing.TraceEvent.nuspec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/TraceEvent/Microsoft.Diagnostics.Tracing.TraceEvent.nuspec b/src/TraceEvent/Microsoft.Diagnostics.Tracing.TraceEvent.nuspec index 31d2d7033..a60f3ff58 100644 --- a/src/TraceEvent/Microsoft.Diagnostics.Tracing.TraceEvent.nuspec +++ b/src/TraceEvent/Microsoft.Diagnostics.Tracing.TraceEvent.nuspec @@ -29,7 +29,7 @@ TraceEvent EventSource Microsoft ETW Event Tracing for Windows - + From a69673dfde3b8a3782645b0f8f32636fb5dda17c Mon Sep 17 00:00:00 2001 From: Brian Robbins Date: Tue, 19 Apr 2022 16:02:35 -0700 Subject: [PATCH 24/24] Upgrade to Xunit 2.4.0. --- src/Directory.Build.props | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Directory.Build.props b/src/Directory.Build.props index 877c8ebb4..3c0635e59 100644 --- a/src/Directory.Build.props +++ b/src/Directory.Build.props @@ -32,8 +32,8 @@ 1.0.23 0.1.1 1.1.37504 - 2.3.0 - 2.3.0 + 2.4.0 + 2.4.0