Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

BinaryCompatChecker stack overflow in Cecil custom resolver #4

Open
KirillOsenkov opened this issue Mar 30, 2019 · 6 comments
Open
Assignees

Comments

@KirillOsenkov
Copy link
Owner

000000d5`7ac26320 00007ff9`a6b71b81 mscorlib_ni!System.Globalization.TextInfo.GetCaseInsensitiveHashCode+0x41
000000d5`7ac26360 00007ff9`a6b71abf mscorlib_ni!System.OrdinalComparer.GetHashCode+0x2f
000000d5`7ac26390 00007ff9`a6b78ca0 mscorlib_ni!System.Collections.Generic.Dictionary_2[[System.__Canon,_mscorlib],[System.__Canon,_mscorlib]].FindEntry+0x60
000000d5`7ac26400 00007ff9`a6b784f4 mscorlib_ni!System.Collections.Generic.Dictionary_2[[System.__Canon,_mscorlib],[System.__Canon,_mscorlib]].TryGetValue+0x14
000000d5`7ac26440 00007ff9`4979e5b0 BinaryCompatChecker!BinaryCompatChecker.Checker.Resolve+0x90
000000d5`7ac26680 00007ff9`497b28de BinaryCompatChecker!BinaryCompatChecker.Checker+CustomAssemblyResolver.Resolve+0x4e
000000d5`7ac266f0 00007ff9`497b2860 UNKNOWN!Mono.Cecil.BaseAssemblyResolver.Resolve+0x60
000000d5`7ac26730 00007ff9`497b25f0 UNKNOWN!Mono.Cecil.MetadataResolver.Resolve+0x120
000000d5`7ac26840 00007ff9`497b6cae UNKNOWN!Mono.Cecil.ModuleDefinition.Resolve+0x4e
000000d5`7ac26880 00007ff9`497b8729 UNKNOWN!Mono.Cecil.ExportedType.Resolve+0x59
000000d5`7ac268e0 00007ff9`497b2aab UNKNOWN!Mono.Cecil.MetadataResolver.GetType+0x14b
000000d5`7ac26990 00007ff9`497b2639 UNKNOWN!Mono.Cecil.MetadataResolver.Resolve+0x169
000000d5`7ac26aa0 00007ff9`497b6cae UNKNOWN!Mono.Cecil.ModuleDefinition.Resolve+0x4e
000000d5`7ac26ae0 00007ff9`497b8729 UNKNOWN!Mono.Cecil.ExportedType.Resolve+0x59
@KirillOsenkov
Copy link
Owner Author

KirillOsenkov commented Mar 30, 2019

 	Mono.Cecil.dll!Mono.Cecil.MetadataResolver.Resolve Line 114	C#
 	Mono.Cecil.dll!Mono.Cecil.ModuleDefinition.Resolve Line 715	C#
 	Mono.Cecil.dll!Mono.Cecil.ExportedType.Resolve Line 230	C#
 	Mono.Cecil.dll!Mono.Cecil.MetadataResolver.GetType Line 150	C#
>	Mono.Cecil.dll!Mono.Cecil.MetadataResolver.Resolve Line 114	C#
 	Mono.Cecil.dll!Mono.Cecil.ModuleDefinition.Resolve Line 715	C#
 	Mono.Cecil.dll!Mono.Cecil.ExportedType.Resolve Line 230	C#
 	Mono.Cecil.dll!Mono.Cecil.MetadataResolver.GetType Line 150	C#
 	Mono.Cecil.dll!Mono.Cecil.MetadataResolver.Resolve Line 114	C#

Inspecting Microsoft.Language.Xml.dll. Resolving method:

{System.Void System.Collections.Generic.Stack`1<Microsoft.Language.Xml.InternalSyntax.GreenNode>::.ctor()}

First it resolves {netstandard, Version=2.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51} to {netstandard, Version=2.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51}

Then it resolves {System.Collections, Version=0.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a} to {System.Collections, Version=4.0.11.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a}

@KirillOsenkov
Copy link
Owner Author

See related: jbevain/cecil#706

@nosami
Copy link

nosami commented Apr 9, 2021

Looks like I just hit this bug

  <!-- source code is at
  https://github.com/KirillOsenkov/MetadataTools/tree/main/src/BinaryCompatChecker
  -->
  <ItemGroup>
    <PackageReference Include="BinaryCompatChecker" Version="1.0.20" />
  </ItemGroup>
    at System.Collections.Generic.Dictionary`2<TKey_REF, TValue_REF>.TryGetValue (TKey_REF,TValue_REF&) [0x00000] in <36514b14425c4337b446653c547aa9c3>:0
    at BinaryCompatChecker.Checker.Resolve (Mono.Cecil.AssemblyNameReference) [0x0000f] in <b2206ab48c2c42669f70980865e7a2a7>:0
    at BinaryCompatChecker.Checker/CustomAssemblyResolver.Resolve (Mono.Cecil.AssemblyNameReference,Mono.Cecil.ReaderParameters) [0x00007] in <b2206ab48c2c42669f70980865e7a2a7>:0
    at Mono.Cecil.BaseAssemblyResolver.Resolve (Mono.Cecil.AssemblyNameReference) [0x00007] in <2fc9a342bf2749daa85435ac40654aca>:0
    at Mono.Cecil.MetadataResolver.Resolve (Mono.Cecil.TypeReference) [0x0003a] in <2fc9a342bf2749daa85435ac40654aca>:0
    at Mono.Cecil.ModuleDefinition.Resolve (Mono.Cecil.TypeReference) [0x00006] in <2fc9a342bf2749daa85435ac40654aca>:0
    at Mono.Cecil.ExportedType.Resolve () [0x0000c] in <2fc9a342bf2749daa85435ac40654aca>:0
    at Mono.Cecil.MetadataResolver.GetType (Mono.Cecil.ModuleDefinition,Mono.Cecil.TypeReference) [0x00050] in <2fc9a342bf2749daa85435ac40654aca>:0
    at Mono.Cecil.MetadataResolver.Resolve (Mono.Cecil.TypeReference) [0x00057] in <2fc9a342bf2749daa85435ac40654aca>:0
    at Mono.Cecil.ModuleDefinition.Resolve (Mono.Cecil.TypeReference) [0x00006] in <2fc9a342bf2749daa85435ac40654aca>:0
    at Mono.Cecil.ExportedType.Resolve () [0x0000c] in <2fc9a342bf2749daa85435ac40654aca>:0
    at Mono.Cecil.MetadataResolver.GetType (Mono.Cecil.ModuleDefinition,Mono.Cecil.TypeReference) [0x00050] in <2fc9a342bf2749daa85435ac40654aca>:0
    at Mono.Cecil.MetadataResolver.Resolve (Mono.Cecil.TypeReference) [0x00057] in <2fc9a342bf2749daa85435ac40654aca>:0
    at Mono.Cecil.ModuleDefinition.Resolve (Mono.Cecil.TypeReference) [0x00006] in <2fc9a342bf2749daa85435ac40654aca>:0

@KirillOsenkov
Copy link
Owner Author

can you send me the .dmg link that hit this?

@nosami
Copy link

nosami commented Apr 10, 2021

@KirillOsenkov This is it https://devdiv.visualstudio.com/_apis/resources/Containers/7562158/drop?itemPath=drop%2FVisualStudioForMac-8.10.0.1171-pre.3.dmg

I am in the process of converting the F# Interactive pad backend from a mono executable into a dotnet one. I have to ship the dotnet framework assemblies in the bundle as we can't assume that dotnet is already installed.

FWIW, I'm planning on side-stepping this issue completely as I don't believe that we need to run the Binary Compatibility checker on this executable as it is standalone.

@KirillOsenkov
Copy link
Owner Author

Cool. Yes we should exclude standalone apps in BinaryCheckerConfig.txt.

But I’ll still investigate.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants