From f9d0a7b6678e667b47833fefd9ae5f32afa49a11 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 16 Jan 2024 10:33:45 -0800 Subject: [PATCH] [release/8.0-staging] Fix Crossgen2 PDB generation (again) (#96566) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Fix Crossgen2 PDB generation (again) * Simplify the change per JanK's PR feedback --------- Co-authored-by: Tomáš Rylek --- .../tools/aot/ILCompiler.Diagnostics/PdbWriter.cs | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/coreclr/tools/aot/ILCompiler.Diagnostics/PdbWriter.cs b/src/coreclr/tools/aot/ILCompiler.Diagnostics/PdbWriter.cs index 9ec90146a471c..0ad1098f21deb 100644 --- a/src/coreclr/tools/aot/ILCompiler.Diagnostics/PdbWriter.cs +++ b/src/coreclr/tools/aot/ILCompiler.Diagnostics/PdbWriter.cs @@ -143,9 +143,14 @@ public void WritePDBData(string dllPath, IEnumerable methods) } finally { - if ((_ngenWriter != null) && (_pdbMod != UIntPtr.Zero)) + if (_ngenWriter != null) { - _ngenWriter.CloseMod(_pdbMod); + if (_pdbMod != UIntPtr.Zero) + { + _ngenWriter.CloseMod(_pdbMod); + } + ComObject ngenWriterComObject = (ComObject)(object)_ngenWriter; + ngenWriterComObject.FinalRelease(); } } @@ -211,6 +216,7 @@ private void WritePDBDataHelper(string dllPath, IEnumerable methods) var comWrapper = new StrategyBasedComWrappers(); CreateNGenPdbWriter(dllPath, _pdbFilePath, out var pdbWriterInst); _ngenWriter = (ISymNGenWriter2)comWrapper.GetOrCreateObjectForComInstance(pdbWriterInst, CreateObjectFlags.UniqueInstance); + Marshal.Release(pdbWriterInst); { // PDB file is now created. Get its path and update _pdbFilePath so the PDB file