Hi guys!
Can someone help me to try to fix snowrunner on Mac? The game crash while loading.
Ive tried everything. Here some teste I did:
What was analyzed (measured)
Dump (Saber's CrashDump.dmp): exception c0000005, write to address 0, at SnowRunner.exe+0x17BC07B. It is a deliberate abort (mov dword ptr [0],1) from the free() validator of the game's allocator (dlmalloc-style; mstate at 0x142b29090, least_addr at 0x142b290a8). Freed pointer: 0x9ee0600 (rbx=0x9ee05f0). Variants: +0x1770d64 (mov eax,[rbx-8], rbx=7) and once +0x17BC037. All are free() of an invalid pointer inside the script interpreter.
Game script stack: GameMain.GameMain > ApplicationMode.Init (instr 244) > InitBackendSystems > Mr2BackendSystems.__initializer > ProsClientProfileStatBiRule.__initializer (instr 8). All network objects are freshly created (null), so the crash happens before any backend connection.
Native stack of the crashing thread: only SnowRunner.exe/ntdll/ucrtbase frames. None from EOSSDK, pros.sdk, WS2_32 or MSWSOCK. Among the other 82 threads, only one (0x658) has pros.sdk frames, and it is parked in a wait.
Run history (19 runs, Sevoflurane runs/2026-10.jsonl): the failure point varies between runs, including on the ORIGINAL engine before any change (10/24: +0x17BC07B x3, +0x1770d64 x2). So the crash is not deterministic.
DXMT log: 1770x "CreateQuery1: query type not implemented: 6" (probably D3D11_QUERY_SO_STATISTICS, from memory, not verified) and 2x "Only 2D texture SRV can be created on dynamic texture". Link to the crash NOT proven.
Static analysis of the exe: it does not reference d3d12.dll or trueforce_sdk_x64.dll. Static imports (EOSSDK, pros.sdk, d3d11, dxgi, HFFBSDK, GFSDK_Aftermath, XAudio2_9Redist, etc.) are all loaded on the Mac. xinput9_1_0 and xinput1_4 also load. On Windows, d3d12 comes from System32 and trueforce from C:\Program Files\Logi\Trueforce\ (environment, not part of the game). So missing DLLs do not explain the crash.
D3DMetal: it only runs on Apple Silicon and this is an Intel Mac. The "d3dmetal" runs in the history are exit-errors with no diagnostic value.
Windows: BackendLog/LegacyLog/ModMapError/trace_truck are also 0 bytes there, so empty logs are normal. Process Monitor capture (1994 events, all SUCCESS, ~70 s): UDP loopback 61733/61734; TLS to 172.64.155.112:443; 11 connect/accept pairs on loopback; TCP to 7 IPs on ports 11701-11706 and 81.28.14.13:443; Steam UDP (27xxx). API Monitor does not work (SteamStub: "Application Load Error 3:0000065432").
Tests done and results
Initial hypothesis: the staging patchset ws2_32-af_unix (connect(addr=NULL) reading addr->sa_family, WS2_32+0xc60a). I reverted all of AF_UNIX (ws2_32/socket.c, server/sock.c, ws2_32_private.h, ntdll/unix/socket.c; ntdll.so not swapped) and compiled ws2_32.dll and wineserver. The game kept crashing with the same type of failure.
Null guard only in connect(): crashed at +0x1770d64.
Guard if (!addr || len < sizeof(sa_family)) { SetLastError(WSAEFAULT); return -1; } (ws2_32 staging + original wineserver): crashed at +0x17BC07B, with registers identical to the revert test.
msync disabled: same result.
Conclusion: no change to ws2_32/wineserver altered the outcome in any run. ws2_32 does not appear to be the cause of the crash with DXMT.
Current state
Everything is restored to the original and verified by SHA1: the engine's and the bottle's ws2_32.dll = ba56d323c7193378de28cf6d9a007f1eb2990221; wineserver = 9e12875b87ae030925827d551e1bc49a8b3b8af7; sevo diag off (level 0); renderer = dxmt. Saved on the Desktop: revert-afunix-backup.patch, ws2_32-guard-wsaefault.dll, originais-antes-do-teste/. Nothing was changed on Windows.