Mac Crash on launch (Steam)

Turil

Terrarian
I recently bought Terraria and tried to launch it on MacOS, but it crashes before even a screen is showing.

Launching it from the terminal I get this output. Doesn't matter if I try the /gldevice flag or not (found that on a GoG forum thread): Also, putting /gldevice:OpenGL in the launch arguments via steam doesn't work either. Any idea how to fix this?

System in use:
MacOS Monterey Version 12.2.1 (21D62)
MacBook Pro (13-inch, 2020, Four Thunderbolt 3 ports)
CPU 2 GHz Quad-Core Intel Core i5
RAM 16 GB 3733 MHz LPDDR4X
GPU (via eGPU enclosure) AMD Radeon RX 5700 XT 8 GB


Bash:
stefan@MacBook-Pro ~ % "${HOME}/Library/Application Support/Steam/SteamApps/common/Terraria/Terraria.app/Contents/MacOS/Terraria" /gldevice:OpenGL

/Users/stefan/Library/Application Support/Steam/SteamApps/common/Terraria/Terraria.app/Contents/MacOS/Terraria: line 11: ./fixDylibs.sh: No such file or directory
Error Logging Enabled.
objc[2520]: Class SDLApplication is implemented in both /usr/local/Cellar/sdl2/2.0.20/lib/libSDL2-2.0.0.dylib (0x11c1fbe60) and /Users/stefan/Library/Application Support/Steam/steamapps/common/Terraria/Terraria.app/Contents/MacOS/osx/libSDL2-2.0.0.dylib (0x11e55e588). One of the two will be used. Which one is undefined.
objc[2520]: Class SDLAppDelegate is implemented in both /usr/local/Cellar/sdl2/2.0.20/lib/libSDL2-2.0.0.dylib (0x11c1fbeb0) and /Users/stefan/Library/Application Support/Steam/steamapps/common/Terraria/Terraria.app/Contents/MacOS/osx/libSDL2-2.0.0.dylib (0x11e55e5d8). One of the two will be used. Which one is undefined.
objc[2520]: Class SDLTranslatorResponder is implemented in both /usr/local/Cellar/sdl2/2.0.20/lib/libSDL2-2.0.0.dylib (0x11c1fbf28) and /Users/stefan/Library/Application Support/Steam/steamapps/common/Terraria/Terraria.app/Contents/MacOS/osx/libSDL2-2.0.0.dylib (0x11e55e650). One of the two will be used. Which one is undefined.
objc[2520]: Class SDLMessageBoxPresenter is implemented in both /usr/local/Cellar/sdl2/2.0.20/lib/libSDL2-2.0.0.dylib (0x11c1fbf50) and /Users/stefan/Library/Application Support/Steam/steamapps/common/Terraria/Terraria.app/Contents/MacOS/osx/libSDL2-2.0.0.dylib (0x11e55e678). One of the two will be used. Which one is undefined.
objc[2520]: Class SDL_cocoametalview is implemented in both /usr/local/Cellar/sdl2/2.0.20/lib/libSDL2-2.0.0.dylib (0x11c1fbfa0) and /Users/stefan/Library/Application Support/Steam/steamapps/common/Terraria/Terraria.app/Contents/MacOS/osx/libSDL2-2.0.0.dylib (0x11e55e6c8). One of the two will be used. Which one is undefined.
objc[2520]: Class SDLOpenGLContext is implemented in both /usr/local/Cellar/sdl2/2.0.20/lib/libSDL2-2.0.0.dylib (0x11c1fbff0) and /Users/stefan/Library/Application Support/Steam/steamapps/common/Terraria/Terraria.app/Contents/MacOS/osx/libSDL2-2.0.0.dylib (0x11e55e718). One of the two will be used. Which one is undefined.
objc[2520]: Class SDLWindow is implemented in both /usr/local/Cellar/sdl2/2.0.20/lib/libSDL2-2.0.0.dylib (0x11c1fc040) and /Users/stefan/Library/Application Support/Steam/steamapps/common/Terraria/Terraria.app/Contents/MacOS/osx/libSDL2-2.0.0.dylib (0x11e55e768). One of the two will be used. Which one is undefined.
objc[2520]: Class Cocoa_WindowListener is implemented in both /usr/local/Cellar/sdl2/2.0.20/lib/libSDL2-2.0.0.dylib (0x11c1fc068) and /Users/stefan/Library/Application Support/Steam/steamapps/common/Terraria/Terraria.app/Contents/MacOS/osx/libSDL2-2.0.0.dylib (0x11e55e790). One of the two will be used. Which one is undefined.
objc[2520]: Class SDLView is implemented in both /usr/local/Cellar/sdl2/2.0.20/lib/libSDL2-2.0.0.dylib (0x11c1fc0e0) and /Users/stefan/Library/Application Support/Steam/steamapps/common/Terraria/Terraria.app/Contents/MacOS/osx/libSDL2-2.0.0.dylib (0x11e55e808). One of the two will be used. Which one is undefined.
objc[2520]: Class METAL_RenderData is implemented in both /usr/local/Cellar/sdl2/2.0.20/lib/libSDL2-2.0.0.dylib (0x11c1fc130) and /Users/stefan/Library/Application Support/Steam/steamapps/common/Terraria/Terraria.app/Contents/MacOS/osx/libSDL2-2.0.0.dylib (0x11e55e858). One of the two will be used. Which one is undefined.
objc[2520]: Class METAL_TextureData is implemented in both /usr/local/Cellar/sdl2/2.0.20/lib/libSDL2-2.0.0.dylib (0x11c1fc180) and /Users/stefan/Library/Application Support/Steam/steamapps/common/Terraria/Terraria.app/Contents/MacOS/osx/libSDL2-2.0.0.dylib (0x11e55e8a8). One of the two will be used. Which one is undefined.
No supported FNA3D driver found!
================
4/2/2022 5:19:13 PM: Unhandled Exception
Thread: 1 [Main Thread]
Culture: en-US
Exception: System.InvalidOperationException: No supported FNA3D driver found!
  at Microsoft.Xna.Framework.FNALoggerEXT.FNA3DLogError (System.IntPtr msg) [0x00012] in <0d98e7b0b9fd41c99d818f5193269d29>:0
  at (wrapper native-to-managed) Microsoft.Xna.Framework.FNALoggerEXT.FNA3DLogError(intptr)
  at (wrapper managed-to-native) Microsoft.Xna.Framework.Graphics.FNA3D.FNA3D_PrepareWindowAttributes()
  at Microsoft.Xna.Framework.SDL2_FNAPlatform.CreateWindow () [0x00000] in <0d98e7b0b9fd41c99d818f5193269d29>:0
  at Microsoft.Xna.Framework.Game..ctor () [0x00142] in <0d98e7b0b9fd41c99d818f5193269d29>:0
  at Terraria.Main..ctor () [0x0024c] in <d5874df731ca44cdb9092615bdae78ae>:0
  at Terraria.Program.LaunchGame (System.String[] args, System.Boolean monoArgs) [0x00082] in <d5874df731ca44cdb9092615bdae78ae>:0
  at Terraria.MacLaunch.Main (System.String[] args) [0x00038] in <d5874df731ca44cdb9092615bdae78ae>:0
================
[ERROR] FATAL UNHANDLED EXCEPTION: System.InvalidOperationException: No supported FNA3D driver found!
  at Microsoft.Xna.Framework.FNALoggerEXT.FNA3DLogError (System.IntPtr msg) [0x00012] in <0d98e7b0b9fd41c99d818f5193269d29>:0
  at (wrapper native-to-managed) Microsoft.Xna.Framework.FNALoggerEXT.FNA3DLogError(intptr)
  at (wrapper managed-to-native) Microsoft.Xna.Framework.Graphics.FNA3D.FNA3D_PrepareWindowAttributes()
  at Microsoft.Xna.Framework.SDL2_FNAPlatform.CreateWindow () [0x00000] in <0d98e7b0b9fd41c99d818f5193269d29>:0
  at Microsoft.Xna.Framework.Game..ctor () [0x00142] in <0d98e7b0b9fd41c99d818f5193269d29>:0
  at Terraria.Main..ctor () [0x0024c] in <d5874df731ca44cdb9092615bdae78ae>:0
  at Terraria.Program.LaunchGame (System.String[] args, System.Boolean monoArgs) [0x00082] in <d5874df731ca44cdb9092615bdae78ae>:0
  at Terraria.MacLaunch.Main (System.String[] args) [0x00038] in <d5874df731ca44cdb9092615bdae78ae>:0
 
Hello Turil!
Try to run the game as administrator if this does not work try verifying the terraria game files to do this go to library, Terraria, the little settings icon, then go to properties, and then local files and verify game files might take a bit but that should work and if it doesn't work maybe check the space in you computer if there is not that much try and free some up but another option is look it up on youtube or something.

 
Thank you for your response, but it is not a permission issue (tried to run it with sudo, same error) and I did verify & re-install the game. Disk space is not an issue either.
 
Turns out that Terraria seems unable to solve the "conflict" between the two libraries. I "solved" the error by uninstalling ffmpeg & the sdl2 library.
If a dev is reading this, can Terraria somehow be told to ignore whatever is available on the system and use the packaged libraries?

If you found this thread via Google and are also using homebrew:
Code:
brew uninstall ffmpeg && brew uninstall sdl2
should help you. If you are willing to uninstall ffmpeg for now.
 
I've got a similar crash-on-launch problem on my M2 MacBook Air running macOS “Ventura” 13.0.1 (22A400), and found the command line hint valuable. My stack trace is different, though. Throwing some newlines into the first line:

Code:
Exception: System.TypeInitializationException: 
The type initializer for 'Terraria.Main' threw an exception. ---> 
System.TypeInitializationException: 
The type initializer for 'Terraria.Netplay' threw an exception. --->
System.TypeInitializationException: 
The type initializer for 'System.Net.NetworkInformation.SystemNetworkInterface' threw an exception. --->
System.DllNotFoundException: 
libc.dylib 
assembly:<unknown assembly> 
type:<unknown type> 
member:(null)

libc.dylib is available, though:

Code:
$ file ./osx/libc.dylib

./osx/libc.dylib: Mach-O universal binary with 2 architectures: [x86_64:Mach-O 64-bit dynamically linked shared library x86_64] [i386:Mach-O dynamically linked shared library i386]
./osx/libc.dylib (for architecture x86_64):    Mach-O 64-bit dynamically linked shared library x86_64
./osx/libc.dylib (for architecture i386):    Mach-O dynamically linked shared library i386

Any ideas? Starbound works, but I'd much rather play Terraria.
 
Dear devs, please provide us with an update. I'd like to have ffmpeg and Terraria on the same system...
 
Hello guys.
I encountered similar problem as @deadlybloodyserious, but with Celeste. I believe it may be related, since both games use SDL.

Code:
Unhandled Exception:
System.TypeInitializationException: The type initializer for 'Celeste.Celeste' threw an exception. ---> System.DllNotFoundException: libSDL2-2.0.0.dylib assembly:<unknown assembly> type:<unknown type> member:(null)
  at (wrapper managed-to-native) SDL2.SDL.INTERNAL_SDL_GetPlatform()
  at SDL2.SDL.SDL_GetPlatform () [0x00000] in <1da441a83bdf4bb5b80df9bed1445171>:0
  at Celeste.Celeste..cctor () [0x00006] in <4a26f9ded6704c87a2f47e66d2d85163>:0
   --- End of inner exception stack trace ---

I checked the system log and there are error messages indicating the wrong signature of the library. It's probably blocking dylib from being used by main executable.

Code:
.../Contents/MacOS/osx/libSDL2-2.0.0.dylib not valid: Error Domain=AppleMobileFileIntegrityError Code=-420
"The signature on the file is invalid"
UserInfo={NSURL=file:.../Contents/MacOS/osx/libSDL2-2.0.0.dylib,
NSLocalizedDescription=The signature on the file is invalid}

Code:
AMFI: Check-fix enabled for binary '.../Contents/MacOS/osx/libSDL2-2.0.0.dylib' with TeamID 'EH385AYQ6F',
identifier 'org.libsdl.SDL2': broken signature treated as unsigned without privileges.
This workaround will not work for software built on or after 10.12.

Maybe this information will be useful for someone.
 
Back
Top Bottom