shkhln / linuxulator-steam-utils

Steam launcher for FreeBSD
MIT License
125 stars 12 forks source link

(Test result) Terraria works with issues #44

Closed kquote03 closed 3 years ago

kquote03 commented 3 years ago

The compatibility page lists terraria as not working. It works by running ~/.steam/steam/steamapps/common/Terraria/Terraria.bin.x86_64 manually. Preloading mono wasn't necessary. Sound doesn't work.

Tested on FBSD 13 with a GTX 1050Ti

shkhln commented 3 years ago

running ~/.steam/steam/steamapps/common/Terraria/Terraria.bin.x86_64 manually.

Sound doesn't work.

Those are likely related issues.

adriaandegroot commented 3 years ago

Running from steam (with LD_PRELOAD=${LD_PRELOAD}:monofix.so %command% as mentioned in the compatibility table gets me a crash

EXT_swap_control_tear unsupported. Fall back to standard VSync.
FNA3D Driver: OpenGL
OpenGL Renderer: AMD Radeon (TM) R7 300 Series (BONAIRE, DRM 3.35.0, 3.17.0, LLVM 7.0.1)
OpenGL Driver: 4.5 (Compatibility Profile) Mesa 18.3.4
OpenGL Vendor: X.Org
Stack overflow in unmanaged: IP: 0x802a8faa0, fault addr: 0x7ffffffdf000
MojoShader Profile: glsl120
EXT_swap_control_tear unsupported. Fall back to standard VSync.
EXT_swap_control_tear unsupported. Fall back to standard VSync.
Resolution changed to: 800x600.
INFO: OpenAudioDevice failed: Fragment size must be a power of two
Failed to create mastering voice!
mono_thread_internal_set_priority: pthread_setschedparam failed, error: "Operation not permitted" (1)
INFO: OpenAudioDevice failed: Fragment size must be a power of two

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

=================================================================
        Native stacktrace:
=================================================================
        0x6ec4f2 - ./Terraria.bin.x86_64 : (null)
        0x6ec7ec - ./Terraria.bin.x86_64 : (null)
        0x6e84b9 - ./Terraria.bin.x86_64 : (null)
        0x69d836 - ./Terraria.bin.x86_64 : (null)
        0x83301a3d9 - /usr/home/steam/.steam/steam/steamapps/common/Terraria/lib64/libFAudio.so.0 : FAudioVoice_DestroyVoice
        0x25a23f0 - Unknown

=================================================================
        Telemetry Dumper:
=================================================================
Pkilling 0x806201700 from 0x800b8c840
Pkilling 0x83e264700 from 0x800b8c840
Pkilling 0x83f100700 from 0x800b8c840
Pkilling 0x832aa3700 from 0x800b8c840
Could not exec mono-hang-watchdog, expected on path '/usr/local/etc/../bin/mono-hang-watchdog' (errno 2)
Entering thread summarizer pause from 0x800b8c840
Finished thread summarizer pause from 0x800b8c840.

Waiting for dumping threads to resume

=================================================================
        External Debugger Dump:
=================================================================
mono_gdb_render_native_backtraces not supported on this platform, unable to find gdb or lldb

=================================================================
        Basic Fault Address Reporting
=================================================================
Memory around native instruction pointer (0x83301a3d9):0x83301a3c9  ff 66 0f 1f 44 00 00 55 53 48 89 fb 48 83 ec 08  .f..D..USH..H...
0x83301a3d9  48 8b 3f f6 87 e0 00 00 00 10 0f 85 3f 06 00 00  H.?.........?...
0x83301a3e9  48 89 df e8 8f e5 fe ff 8b 43 0c 85 c0 0f 84 ec  H........C......
0x83301a3f9  04 00 00 83 f8 01 0f 84 cb 06 00 00 83 f8 02 0f  ................

=================================================================
        Managed Stacktrace:
=================================================================
          at <unknown> <0xffffffff>
          at FAudio:FAudioVoice_DestroyVoice <0x0008f>
          at FAudioContext:Dispose <0x00073>
          at Microsoft.Xna.Framework.SDL2_FNAPlatform:ProgramExit <0x0003f>
          at <Module>:runtime_invoke_void__this___object_object <0x00098>
=================================================================
/usr/home/steam/.steam/steam/steamapps/common/Terraria/Terraria: line 22:  7129 Aborted                 ./${BASENAME}.bin.${ext} $@
Game removed: AppID 105600 "", ProcID 7129 

Which points to .. sound, yeah. Running from the command-line mentions

No audio hardware found. Disabling all audio.
shkhln commented 3 years ago

Does setting SDL_AUDIODRIVER=alsa in the launch options work?

INFO: OpenAudioDevice failed: Fragment size must be a power of two Failed to create mastering voice!

That actually leads to https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=245533 and the corresponding FAudio / SDL issues.

shkhln commented 3 years ago

Does setting SDL_AUDIODRIVER=alsa in the launch options work?

So?

shkhln commented 3 years ago

Does setting SDL_AUDIODRIVER=alsa in the launch options work?

I'll answer this myself: FAudio calls SDL_GetNumAudioDevices, SDL_GetNumAudioDevices returns 0, FAudio bails out.

We are, however, dealing with an OSS specific crash here:

INFO: OpenAudioDevice failed: Fragment size must be a power of two Failed to create mastering voice!

That actually leads to https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=245533 and the corresponding FAudio / SDL issues.

The workaround for that bug was committed to FAudio relatively recently, so you need to update the library bundled with the game. Proton 6.3 has a sufficiently recent version: .../steamapps/common % tar -C Terraria/lib64 --strip-components 2 -tf Proton\ 6.3/proton_dist.tar 'lib64/libgst*' 'lib64/libFAudio*'.