ZstdSharp icon indicating copy to clipboard operation
ZstdSharp copied to clipboard

Error on Unity 2022.3.13 on Windows IL2CPP

Open in0finite opened this issue 2 years ago • 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.

in0finite avatar Jan 21 '24 16:01 in0finite

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

oleg-st avatar Jan 30 '24 11:01 oleg-st

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.

in0finite avatar Jan 30 '24 15:01 in0finite

WebGL fails the test with native integer types

https://sharplab.io/#v2:EYLgxg9gTgpgtADwGwBYA0AXEUCuA7AHwAEAmARgFgAoIgZgAJT6Bhegb2vq8ZJPc+6CiZAJwAKACQAiNvjAALGGADWMACZixeHAEs8GAJQAGBMGAAzAKxIR5m0ZTAwtUQfoAed/QDs9AHx+9JbeAL5SBgDcAoJcwuLSsngKSqoaWnqGJmZWNnYiDk4uIm6ePv6BwWGR0TFxkjJyiirqmjgANhB4AObGphbWtvaOzq4eXr4BQaHhUVSCIdQLVEA=

Right answer is: 125 -3 125

WebGL reports: 18 18 125

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

oleg-st avatar Jan 30 '24 16:01 oleg-st

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.

in0finite avatar Jan 30 '24 17:01 in0finite

A workaround for the MSVC problem:

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

oleg-st avatar Jan 30 '24 17:01 oleg-st

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 :)

Jake-NSW avatar Feb 19 '24 23:02 Jake-NSW

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.

oleg-st avatar Feb 20 '24 08:02 oleg-st

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

oleg-st avatar Apr 29 '24 14:04 oleg-st

Thanks for letting me know.

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

in0finite avatar Apr 29 '24 16:04 in0finite