oleg-st/ZstdSharp

Error on Unity 2022.3.13 on Windows IL2CPP

in0finite opened this issue · 9 comments

Library fails to decompress files on above platform.

The error message is: data corruption detected.

Sorry, no time right now to make reproduction steps.

0.7.4 and 0.7.2 give runtime error, 0.7.3 fails to compile.

It looks like the problem is in the MSVC compiler.
The /d2ssa-cse- option used in Unity causes incorrect code generation
https://godbolt.org/z/rfK5c6fGW

Reported here:
https://developercommunity.visualstudio.com/t/The-d2ssa-cse--option-causes-incorrect/10574272

Keep in mind that error happens on other platforms aswell, for example, on WebGL. As far as I know, they don't use MSVC for compiling to WebAssembly. The conversion process is: C# => IL => IL2CPP => CPP => Emscripten => WebAssembly.

Sorry, I forgot to mention that in the initial post. I assumed the bug is in IL2CPP.

Switching to ulong/long like last time might help here.

Nope, I tried using my fork of library with ulong/long, it doesn't work.

A workaround for the MSVC problem:

Add additionalIl2CppArgs: --compiler-flags="/d2SSAOptimizer-" to ProjectSettings.asset

I am getting a similar error on WebGL platform and using the additional CppArgs doesn't seem to fix it (can't build the project). I did the native integer types test, and it also reports wrong.

64310096
64236544
125

Any help would be great :)

The WebGL platform does not have proper debugging tools to find the root cause.
You can report a problem with a native integers in WebGL to Unity.

@Jake-NSW @in0finite
Looks like decompression works in Unity 2022.3.26f1 WebGL

Thanks for letting me know.

However, in the meantime, I switched to 2023.3.0b5 and the bug is still present here.