Skip to content
This repository has been archived by the owner on Jan 6, 2022. It is now read-only.

Use LinkedList instead of Queue to find System.dll. #610

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

madewokherd
Copy link

This should fix an incompatibility with Mono which is currently where the game fails in Proton without .NET Framework installed.

The problem with Mono is that they put System.Collections.Generic.Queue<> in mscorlib instead of System where MSDN says it's supposed to be: mono/mono@df6056c

This causes an exception when trying to add the namespace from the Queue class:

[000000000000010c:] EXCEPTION handling: VRage.Scripting.MyWhitelistException: Duplicate registration of the whitelist key System.Collections.Generic.*, mscorlib retrieved from System.Collections.Generic.IEnumerator`1[T]

Mono is clearly at fault here, but it's proving to be difficult to fix in wine-mono, not because of the code dependencies in Mono (there's only one and it can be easily replaced with List), but because of the bootstrapping process. Moving the type out of mscorlib breaks the monolite binaries which means we need to generate new ones that work without going through the normal build process somehow, and then develop a process to ship them instead of relying on upstream Mono.

I think if you instead reference a class that Mono put in the right place, that should work around this particular issue. Would you be willing to do that?

@KeenFilip
Copy link
Contributor

Hi,
This will be part of the next release.

@madewokherd
Copy link
Author

Thanks. FWIW, we did end up fixing this in wine-mono, but since Wine is near code freeze it'll probably take a while to get into a release.

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

Successfully merging this pull request may close these issues.

3 participants