Skip to content
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Next Next commit
Fix Crossgen2 PDB generation (again)
  • Loading branch information
trylek authored and github-actions committed Jan 5, 2024
commit e2d322a2ff17b5b816ba1ea0ee3e9e1ded9e281b
15 changes: 11 additions & 4 deletions src/coreclr/tools/aot/ILCompiler.Diagnostics/PdbWriter.cs
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,7 @@ public partial class PdbWriter
Dictionary<SymDocument,int> _documentToChecksumOffsetMapping;

UIntPtr _pdbMod;
IntPtr _pdbWriterInst;
ISymNGenWriter2 _ngenWriter;

static PdbWriter()
Expand Down Expand Up @@ -143,9 +144,15 @@ public void WritePDBData(string dllPath, IEnumerable<MethodInfo> 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();
Marshal.Release(_pdbWriterInst);
}
}

Expand Down Expand Up @@ -209,8 +216,8 @@ private void WritePDBDataHelper(string dllPath, IEnumerable<MethodInfo> methods)
File.Delete(_pdbFilePath);

var comWrapper = new StrategyBasedComWrappers();
CreateNGenPdbWriter(dllPath, _pdbFilePath, out var pdbWriterInst);
_ngenWriter = (ISymNGenWriter2)comWrapper.GetOrCreateObjectForComInstance(pdbWriterInst, CreateObjectFlags.UniqueInstance);
CreateNGenPdbWriter(dllPath, _pdbFilePath, out _pdbWriterInst);
_ngenWriter = (ISymNGenWriter2)comWrapper.GetOrCreateObjectForComInstance(_pdbWriterInst, CreateObjectFlags.UniqueInstance);

{
// PDB file is now created. Get its path and update _pdbFilePath so the PDB file
Expand Down