diff --git a/src/coreclr/tools/aot/ILCompiler.Diagnostics/PdbWriter.cs b/src/coreclr/tools/aot/ILCompiler.Diagnostics/PdbWriter.cs index 9ec90146a471c6..0ad1098f21debb 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