protonscr

SHENZHEN I/O

protonopen appid 504210Game compatibility - UnofficialXAudio2.NET
ValveSoftware/Proton#5715 · opened 2022-03-24 by magicvodi · updated 2023-11-05 · 20 comments · github · game page · search this game
Mmagicvodi 2022-03-24 github

Hello,

the Steam Deck Verified title SHENZHEN I/O crashes on my Steam Deck when I try to input text in the game.

My Steam Deck is on Beta Channel, I already tried different Proton versions.

It doesn't matter if I try to enter the text via controller macros or the virtual keyboard.

Attached are the files generated by the SHENZHEN I/O crash reporter.
shenzhen-save-directory.zip
shenzhen-crash-report.html.txt

If you need additional information I'm happy to help

.

BBlisto91 2022-03-24 github

Does it work via the native version?
Obviously it shouldn't crash whether it's running via proton or native, but just out of interest.

Mmagicvodi 2022-03-24 github

Oh, I didn't even realize it has a native version. It crashes on native. Where can I report a bug with steam verified title?

BBlisto91 2022-03-24 github

Hmm I'm not sure.
If it's the native version then I'd be inclined to say the bug needs to be reported to the game devs.
Tho if the issue is isolated to the steam deck then i dunno if you should post in the steam discussion forums or on the steam for linux github.

@kisak-valve Might be able to provide some guidance.

Mmagicvodi 2022-03-24 github

It seems like its the "native" version, I thought it must be proton because there were some Windows informations and dlls in the crash report.
I already sent it to the dev and I will try to test it on another computer with linux.

BBlisto91 2022-03-24 github

I agree it does look a bit weird if it's running the native version when it posts this in the crash logs 🤔

SYSTEM INFO:

Platform: Win32NT (2)
OS version: Microsoft Windows NT 10.0.19043.0
OS version (uname): N/A
OS is 64-bit: True
Detected OS: Windows
.NET runtime version: 4.0.30319.42000
Running on Mono: True
Process is 64-bit: False

DirectX adapter #0
AMD RADV VANGOGH

DLL diagnostic:
  d3d11.dll: yes
  dxgi.dll: yes
  dwrite.dll: yes
  msvcr110.dll: yes
  vcruntime140.dll: yes

It looks like the steam deck is running it through proton.

Kkisak-valve maintainer 2022-03-24 github

Hello @magicvodi, please add PROTON_LOG=1 %command% to the game's launch options and attach the generated $HOME/steam-$APPID.log to this issue report as a file. (Proton logs compress well if needed.)

Mmagicvodi 2022-03-24 github

I got a log file, so we can assume its running through proton?
steam-504210.log

Mmagicvodi 2022-03-24 github

FYI when I install it in Linux on my PC it runs the native version, which works without problems. When I run it through Proton 7, it crashes like on the Steam Deck

BBlisto91 2022-03-24 github

Ye it's running Proton then.
Unless the game has issues i would think the steam deck should default to native.

Tho it obviously shouldn't crash anyway so it would be nice to fix the issue if it influences other games.

Mmagicvodi 2022-03-24 github

Unless the game has issues i would think the steam deck should default to native.

It just reinstalled it on the Steam Deck and it definitely downloads the Windows Version (theres a Shenzhen.exe and no Shenzhen.bin.x86_64 like on my PC)

I also opened a bug report in the Steam Deck Forum

Mmagicvodi 2022-03-24 github

I just found out one can force to run the native version on the steam deck which works without crashing.

Fflibitijibibo 2022-03-25 github

Developer of the Linux version here... this behavior on Deck was not what we asked for, but at the same time I don't have partner access for this title so I can't resubmit. If at all possible it'd be great to have this requeued on Valve's end.

Fflibitijibibo 2022-03-26 github

The default depot should now be fixed.

Nnormanr 2023-01-06 github

Openbsd worked around it by suppressing the exception: https://github.com/rfht/fnaify/issues/34

Nnormanr 2023-01-06 github

btw, it looks List<Chip> in Solution is changed while the UI thread is busy looping through the same list to render the Chips to the screen. Disabling the Sort() (it unconditionally increases the version) with ShenzhenMod prevents the crash (but I'm not sure how important it is that the list is sorted correctly). I also didn't look to see which call-site is the cause. I suspect the ones that serialize the Solution state to StringBuilder are the culprit because they seem to be called when the chip is changed.

Update: I changed my patch to do the Sort() conditionally (only if the list is not already sorted) and it works great.

Mmadewokherd 2023-03-28 github

This is very interesting. Someone should probably test native .NET Framework to see if it has the same behavior when Sort() is called on an already-sorted list. Perhaps Mono's Sort() method is wrong.

Mmadewokherd 2023-11-04 github

Testing on Windows shows that List<T>.Sort() always increases the version, but List<T>.Sort(Comparison<T>) never increases the version. So it looks like a .NET Framework bug that SHENZHEN I/O inadvertently takes advantage of.

Mmadewokherd 2023-11-04 github
Nnormanr 2023-11-05 github

Testing on Windows shows that List<T>.Sort() always increases the version, but List<T>.Sort(Comparison<T>) never increases the version. So it looks like a .NET Framework bug that SHENZHEN I/O inadvertently takes advantage of.

That's strange, because the code in dotnet's System.Collections.Generic.List increments the version in both code paths.

Mmadewokherd 2023-11-05 github

That'd be the current version of .NET (descended from .NET Core), not .NET Framework. My guess is they fixed the bug there but had to leave it in Framework for compatibility. And Mono shares that code, which is why it behaves correctly (as opposed to the broken way this application requires) in Mono.

Launch options

DLLs