https://bugs.winehq.org/show_bug.cgi?id=23816
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution|--- |WONTFIX Summary|Bloodline Champions Client |Multiple .NET applications |doesn't start with Mono |obfuscated with | |'SmartAssembly' fail to run | |with Wine-Mono (invalid IL | |code rejected by Mono)
--- Comment #25 from Anastasius Focht focht@gmx.net --- Hello folks,
refining summary to collect dupes here.
--- snip --- $ pwd /home/focht/.wine/drive_c/Program Files/Stunlock Studios/Bloodline Champions/Binary
$ wine ./BloodlineChampions.exe Unknown heap type: SmartAssembly
Unhandled Exception: System.TypeInitializationException: An exception was thrown by the type initializer for <Module> ---> System.InvalidProgramException: Invalid IL code in #c.#b:#bOd (): IL_0005: bne.un.s IL_000e
at <Module>..cctor () [0x00000] in <filename unknown>:0 --- End of inner exception stack trace --- [ERROR] FATAL UNHANDLED EXCEPTION: System.TypeInitializationException: An exception was thrown by the type initializer for <Module> ---> System.InvalidProgramException: Invalid IL code in #c.#b:#bOd (): IL_0005: bne.un.s IL_000e
at <Module>..cctor () [0x00000] in <filename unknown>:0 --- End of inner exception stack trace ---
--- snip ---
--- snip --- $ pwd /home/focht/.wine/drive_c/Program Files/Stunlock Studios/Bloodline Champions/Binary
$ wine ./BloodlineChampionsLoader.exe Unknown heap type: SmartAssembly
Unhandled Exception: System.InvalidProgramException: Invalid IL code in ┬.┬ƒ:┬ (string[]): IL_0012: brfalse.s IL_001c
[ERROR] FATAL UNHANDLED EXCEPTION: System.InvalidProgramException: Invalid IL code in ┬.┬ƒ:┬ (string[]): IL_0012: brfalse.s IL_001c --- snip ---
There are statements from Mono guys to not change the behaviour to allow for invalid IL code.
--- quote --- Many .NET obfuscators change the assemblies such that they are not technically correct assemblies (they fall outside the .NET assembly specs) but such that they still run on the Microsoft .NET runtime by exploiting bugs specific to Microsoft's implementation. I suspect they do this to make it harder for assembly reader tools/libraries to load the assemblies. Unfortunately, this also prevents Mono runtime from loading the assemblies. In general Mono has a policy of not "fixing" support for this kind of invalid obfuscated code, so you'll need to ask SmartAssembly support for help. --- quote ---
--- quote --- Mono fully supports valid IL. Unfortunately SmartAssembly is known to generate invalid IL which only runs because Microsofts .NET implementation has bugs and does not reject the broken assembly. There is not much we can do in this case. Your best bet is to contact SmartAssembly and let them know the problem and see if they would fix the issue. --- quote ---
Resolving 'WONTFIX'.
Regards