shkhln / linuxulator-steam-utils

Steam launcher for FreeBSD
MIT License
129 stars 14 forks source link

Assertion at mono-threads.c:1092, condition `(current > *staddr) && (current < *staddr + *stsize)' not met #74

Closed ottop closed 1 year ago

ottop commented 2 years ago

I'm using FreeBSD 13.0-RELEASE-p4 and want to use linux-steam-utils to run a game (Stardew Valley). This has been marked as working on the compatibility list as well. As far as graphics drivers go, I run the Nvidia proprietary ones. The issue occurs whether I get linux-steam-utils from the FreeBSD repo or compile it manually.

Each time I try to launch the game, I get the following:

/bin/sh\0-c\0/home/steam/.steam/steam/ubuntu12_32/reaper SteamLaunch AppId=413150 -- '/usr/home/steam/.steam/steam/steamapps/common/Stardew Valley/StardewValley' STEAM_RUNTIME=0\0
Game process added : AppID 413150 "/home/steam/.steam/steam/ubuntu12_32/reaper SteamLaunch AppId=413150 -- '/usr/home/steam/.steam/steam/steamapps/common/Stardew Valley/StardewValley' STEAM_RUNTIME=0", ProcID 5501, IP 0.0.0.0:0
chdir /usr/home/steam/.steam/steam/steamapps/common/Stardew Valley
GameAction [AppID 413150, ActionID 1] : LaunchApp changed task to WaitingGameWindow with ""
ERROR: ld.so: object '/usr/home/steam/.steam/steam/ubuntu12_32/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded: ignored.
ERROR: ld.so: object '/usr/home/steam/.steam/steam/ubuntu12_32/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded: ignored.
GameAction [AppID 413150, ActionID 1] : LaunchApp changed task to Completed with ""
ERROR: ld.so: object '/usr/home/steam/.steam/steam/ubuntu12_32/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded: ignored.
ERROR: ld.so: object '/usr/home/steam/.steam/steam/ubuntu12_32/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded: ignored.
ERROR: ld.so: object '/usr/home/steam/.steam/steam/ubuntu12_32/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded: ignored.
ERROR: ld.so: object '/usr/home/steam/.steam/steam/ubuntu12_32/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded: ignored.
ERROR: ld.so: object '/usr/home/steam/.steam/steam/ubuntu12_32/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded: ignored.
* Assertion at mono-threads.c:1092, condition `(current > *staddr) && (current < *staddr + *stsize)' not met

Native stacktrace:

        ./StardewValley.bin.x86_64() [0x45124d]
        [0x7ffffffff514]
        /lib64/libc.so.6(gsignal+0x37) [0x8020363d7]
        /lib64/libc.so.6(abort+0x148) [0x802037ac8]
        ./StardewValley.bin.x86_64() [0x59b2c9]
        ./StardewValley.bin.x86_64() [0x59b4d7]
        ./StardewValley.bin.x86_64() [0x59b626]
        ./StardewValley.bin.x86_64() [0x5921e1]
        ./StardewValley.bin.x86_64() [0x522d2c]
        ./StardewValley.bin.x86_64() [0x54fa84]
        ./StardewValley.bin.x86_64() [0x5922e7]
        ./StardewValley.bin.x86_64() [0x522f19]
        ./StardewValley.bin.x86_64() [0x523c77]
        ./StardewValley.bin.x86_64() [0x5504c2]
        ./StardewValley.bin.x86_64() [0x523f8e]
        ./StardewValley.bin.x86_64() [0x49e6f5]
        ./StardewValley.bin.x86_64() [0x46011e]
        ./StardewValley.bin.x86_64(mono_main+0x38a) [0x4223ca]
        ./StardewValley.bin.x86_64(main+0x2ef) [0x42015e]
        /lib64/libc.so.6(__libc_start_main+0xf5) [0x802022555]
        ./StardewValley.bin.x86_64(_start+0x29) [0x41fbf9]

Debug info from gdb:

=================================================================
Got a SIGABRT while executing native code. This usually indicates
a fatal error in the mono runtime or one of the native libraries 
used by your application.
=================================================================

/usr/home/steam/.steam/steam/steamapps/common/Stardew Valley/StardewValley: line 38:  6707 Aborted                 LC_ALL="C" ./StardewValley.bin.x86_64 $@
Game process removed: AppID 413150 "/home/steam/.steam/steam/ubuntu12_32/reaper SteamLaunch AppId=413150 -- '/usr/home/steam/.steam/steam/steamapps/common/Stardew Valley/StardewValley' STEAM_RUNTIME=0", ProcID 5501 
Uploaded AppInterfaceStats to Steam
shkhln commented 2 years ago

ERROR: ld.so: object '/usr/home/steam/.steam/steam/ubuntu12_32/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded: ignored.

This is completely normal, Steam puts both 32-bit and 64-bit gameoverlayrenderer.so in LD_PRELOAD and then glibc's dynamic linker always complaints about one of them.

* Assertion at mono-threads.c:1092, condition `(current > *staddr) && (current < *staddr + *stsize)' not met

That looks like you might need LD_PRELOAD=${LD_PRELOAD}:monofix.so %command%.

ottop commented 2 years ago

ERROR: ld.so: object '/usr/home/steam/.steam/steam/ubuntu12_32/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded: ignored.

This is completely normal, Steam puts both 32-bit and 64-bit gameoverlayrenderer.so in LD_PRELOAD and then glibc's dynamic linker always complaints about one of them.

* Assertion at mono-threads.c:1092, condition `(current > *staddr) && (current < *staddr + *stsize)' not met

That looks like you might need LD_PRELOAD=${LD_PRELOAD}:monofix.so %command%.

Unfortunately it seems that adding the launch option does nothing to change the behaviour or output.

shkhln commented 2 years ago

Yeah, turns out I'm targeting a different codepath with that workaround. Try https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=253337#c7.

ottop commented 2 years ago

Yeah, turns out I'm targeting a different codepath with that workaround. Try https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=253337#c7.

I tried adding 'kern.sgrowsiz="8192"' to my loader.conf, which I presume is what the linked post suggests. Unfortunately that also did not change anything.

shkhln commented 2 years ago

loader.conf? It's a sysctl value.

ottop commented 2 years ago

loader.conf? It's a sysctl value.

Oh, I'll try that.

shkhln commented 2 years ago

Also, it's not specified in kilobytes. You need to set it to 8388608 for 8 MB.

ottop commented 2 years ago

I put it in my sysctl.conf with the corrected value and restarted, but that does not seem to change anything about launching the game either.

shkhln commented 2 years ago

Does sysctl kern.sgrowsiz actually show it as applied?

ottop commented 2 years ago

Does sysctl kern.sgrowsiz actually show it as applied?

Yes it does, assuming that this means that: kern.sgrowsiz: 8388608

shkhln commented 2 years ago

I don't see why that wouldn't work. Are you still getting the same assertion check failure?

ottop commented 2 years ago

I don't see why that wouldn't work. Are you still getting the same assertion check failure?

Yup, I get the exact same output.

shkhln commented 2 years ago

You didn't attempt to upgrade glibc by chance? Or any other packages?

ottop commented 2 years ago

You didn't attempt to upgrade glibc by chance? Or any other packages?

Well, I have updated my system yesterday to have things, well, updated, but I have not upgraded anything after that. I'm currently up to date with 13.0 latest.

shkhln commented 2 years ago

Are you able to test a few more XNA or Unity games? This is a really curious issue.

ottop commented 2 years ago

Are you able to test a few more XNA or Unity games? This is a really curious issue.

So far I have only tested Stardew Valley and another game called One Thousand Lies, which is not on the compatibility list. They both throw the same error. I'll try some other games that use unity or xna from the list and from outside of the list later. I'm also going to be away for about a week from tomorrow, so I won't be able to try anything in that time, but I'll try to at least test a few more games before then.

shkhln commented 2 years ago

So far I have only tested Stardew Valley and another game called One Thousand Lies, which is not on the compatibility list. They both throw the same error.

I don't think that's physically possible, there is no Mono in the second game.

ottop commented 2 years ago

So far I have only tested Stardew Valley and another game called One Thousand Lies, which is not on the compatibility list. They both throw the same error.

I don't think that's physically possible, there is no Mono in the second game.

You are right. My memory was wrong there. It has a problem with not finding /etc/machine-id.

ottop commented 2 years ago

So I tired running Hollow Knight with the relevant launch option and I get a different error: Error in `/usr/home/steam/.steam/steam/steamapps/common/Hollow Knight/hollow_knight.x86_64': free(): invalid pointer: 0x000000080d82feb6

monwarez commented 2 years ago

Have you try to run it with "native" mono ? See https://github.com/rfht/fnaify I had success to run it with the version 1.5.4 (had it on GOG)

ottop commented 2 years ago

Have you try to run it with "native" mono ? See https://github.com/rfht/fnaify I had success to run it with the version 1.5.4 (had it on GOG)

In my case it didn't work and just gave me a blind configuration check failure. Might be because it's the Steam version. I presume it would be better if I could get it from GOG, but I would much prefer not spending the money on another copy.