With current (master branch, not 4.9) Wine Mono, I get this error:
[00000035:] EXCEPTION handling: System.InvalidProgramException: Invalid IL code in InjusticeLauncher.LauncherForm:PlayBtn_Click (object,System.EventArgs): IL_0079: ldc.i4.1
Trying with MONO_VERBOSE_METHOD=PlayBtn_Click doesn't give much more information:
converting (in B4: stack: 5) IL_0078: ldc.i4.0
converting (in B4: stack: 6) IL_0079: ldc.i4.1
exiting due to invalid il(0001006A, 0, 0, 00000000) stub!
Opening with ILSpy shows that this method has a maxstack value of 6. Since Mono sees 6 values in the stack here already, trying to load a constant value of 1 would overflow the stack.
Most likely, Mono's idea of how much stack is being used is wrong. Looking back for the last time the stack is empty takes me here:
converting (in B5: stack: 0) IL_0025: ldloca.s 4
converting (in B5: stack: 1) IL_0027: ldc.i4.s 31
converting (in B5: stack: 2) IL_0029: ldsflda 0x0400000c
rva field 0041F2C4
converting (in B5: stack: 3) IL_002e: ldloc.1
converting (in B5: stack: 4) IL_002f: call 0x0a000072
cmethod = int modopt(System.Runtime.CompilerServices.CallConvCdecl) <Module>:sprintf_s (sbyte modopt(System.Runtime.CompilerServices.IsSignUnspecifiedByte)*,uint,sbyte modopt(System.Runtime.CompilerServices.IsSignUnspecifiedByte) modopt(System.Runtime.CompilerServices.IsConst)*)
converting (in B5: stack: 2) IL_0034: pop
ILSpy sees this call instruction a little differently:
IL_002f: call vararg int32 modopt([mscorlib]System.Runtime.CompilerServices.CallConvCdecl) '<Module>'::sprintf_s(int8 modopt([mscorlib]System.Runtime.CompilerServices.IsSignUnspecifiedByte)*, uint32, int8 modopt([mscorlib]System.Runtime.CompilerServices.IsSignUnspecifiedByte) modopt([mscorlib]System.Runtime.CompilerServices.IsConst)*, ..., uint32)
Mono is treating the function as if it has 3 arguments, but ILSpy shows an additional uint32 argument at the end. I'm guessing this is an issue with how it processes vararg calls.
Even if we fixed this, sprintf_s is a vararg pinvoke function, which currently don't work in Mono.
This should be fixed by Wine Mono 6.2.0.
There's currently no Proton release that includes the new Wine Mono, but the MSI can be manually installed for a specific game. @redmcg has a helpful guide here: https://github.com/redmcg/wine-mono/wiki#install-later-version
Nothing extracted yet.
Compatibility Report
System Information
I confirm:
steam-242700.log
Symptoms
Launcher does nothing, creates a zombie process and I have to finally kill it manually:
killall -9 InjusticeLaunch
Reproduction
Launch the game and choose "Launcher" instead of "Play Injustice"
Nota: if you choose "Play Injustice", the game launches and you can play it without trouble.
This game could be whitelisted when the "Launcher" issue will be fixed.