Using presence with steam subsystem causes SteamUtilsPtr crash?

Hey guys. I’m trying to get my dedicated server to work with steam. Where I can register the server to steam for a server list however I am getting a SteamUtilsPtr crash when the server loads up. However when I turn bUsesPresence and AllowJoinViaPresence off the server loads up fine and goes to its waitingformatch state.

Here is my code for the RegisterServer in GameSession



void ARokkitGameSession::RegisterServer() {
    const int MaxNumPlayers = 8;
    const bool bIsPresence = false;
    const bool bIsLAN = false;
    const int HostingPlayerNum = 0;
    const FString GameType = "RokkitGameMode";
    const FString MapName = "Playground"; //< TODO: Get actual name.
    const auto UserId = MakeShareable(new FUniqueNetIdString(FString::Printf(TEXT("%d"), HostingPlayerNum)));

    IOnlineSubsystem* const OnlineSub = IOnlineSubsystem::Get();
    if (OnlineSub)
    {
        IOnlineSessionPtr Sessions = OnlineSub->GetSessionInterface();
        if (Sessions.IsValid())
        {
            FOnlineSessionSettings Settings;
            Settings.NumPublicConnections = 8;
            Settings.bShouldAdvertise = true;
            Settings.bAllowJoinInProgress = true;
            Settings.bIsLANMatch = false;
            Settings.bUsesPresence = false;
            Settings.bAllowJoinViaPresence = false;
            Settings.bIsDedicated = true;

            UE_LOG(LogTemp, Warning, TEXT("Creating Session for Dedicated Server"));

            Sessions->CreateSession(0, GameSessionName, Settings);
        }
    }
}


Interestingly enough I can find the game in the server list in steam. It shows up as “Unreal Test” and you can see 0/8 slots etc etc. However anytime I try to join game via that in steam I get some error about not having the mod install (very separate issue). I do have a UI in my game set up right now to see if I can get the list of servers however that is coming back 0. Someone told me you can’t necessarily join a dedicated server if its on the same machine with steam is that true? Which would make sense why I can’t see my server in the list. Any way around that?

Anyways, here’s the crash dump. Important bit is at the bottom of it.



Log file open, 08/29/17 10:15:23
LogPlatformFile: Not using cached read wrapper
LogInit:Display: RandInit(306925828) SRandInit(306925828).
LogTaskGraph: Started task graph with 5 named threads and 9 total threads with 1 sets of task threads.
LogStats: Stats thread started at 0.087235
LogInit: Using libcurl 7.47.1
LogInit:  - built for x86_64-pc-win32
LogInit:  - supports SSL with OpenSSL/1.0.2g
LogInit:  - supports HTTP deflate (compression) using libz 1.2.8
LogInit:  - other features:
LogInit:      CURL_VERSION_SSL
LogInit:      CURL_VERSION_LIBZ
LogInit:      CURL_VERSION_IPV6
LogInit:      CURL_VERSION_ASYNCHDNS
LogInit:      CURL_VERSION_LARGEFILE
LogInit:      CURL_VERSION_IDN
LogInit:  CurlRequestOptions (configurable via config and command line):
LogInit:  - bVerifyPeer = false  - Libcurl will NOT verify peer certificate
LogInit:  - bUseHttpProxy = false  - Libcurl will NOT use HTTP proxy
LogInit:  - bDontReuseConnections = false  - Libcurl will reuse connections
LogInit:  - CertBundlePath = nullptr  - Libcurl will use whatever was configured at build time.
LogOnline:Display: STEAM: Loading Steam SDK 1.39
LogInit: WinSock: version 1.1 (2.2), MaxSocks=32767, MaxUdp=65467
LogInit: Build: ++UE4+Release-4.16-CL-0
LogInit: Engine Version: 4.16.3-0+++UE4+Release-4.16
LogInit: Compatible Engine Version: 4.16.0-0+++UE4+Release-4.16
LogInit: Net CL: 0
LogDevObjectVersion: Number of dev versions registered: 16
LogDevObjectVersion:   Dev-Blueprints (B0D832E4-1F89-4F0D-ACCF-7EB736FD4AA2): 9
LogDevObjectVersion:   Dev-Build (E1C64328-A22C-4D53-A36C-8E866417BD8C): 0
LogDevObjectVersion:   Dev-Core (375EC13C-06E4-48FB-B500-84F0262A717E): 2
LogDevObjectVersion:   Dev-Editor (E4B068ED-F494-42E9-A231-DA0B2E46BB41): 17
LogDevObjectVersion:   Dev-Framework (CFFC743F-43B0-4480-9391-14DF171D2073): 23
LogDevObjectVersion:   Dev-Mobile (B02B49B5-BB20-44E9-A304-32B752E40360): 0
LogDevObjectVersion:   Dev-Networking (A4E4105C-59A1-49B5-A7C5-40C4547EDFEE): 0
LogDevObjectVersion:   Dev-Online (39C831C9-5AE6-47DC-9A44-9C173E1C8E7C): 0
LogDevObjectVersion:   Dev-Physics (78F01B33-EBEA-4F98-B9B4-84EACCB95AA2): 0
LogDevObjectVersion:   Dev-Platform (6631380F-2D4D-43E0-8009-CF276956A95A): 0
LogDevObjectVersion:   Dev-Rendering (12F88B9F-8875-4AFC-A67C-D90C383ABD29): 15
LogDevObjectVersion:   Dev-Sequencer (7B5AE74C-D270-4C10-A958-57980B212A5A): 4
LogDevObjectVersion:   Dev-VR (D7296918-1DD6-4BDD-9DE2-64A83CC13884): 0
LogDevObjectVersion:   Dev-LoadTimes (C2A15278-BFE7-4AFE-6C17-90FF531DF755): 1
LogDevObjectVersion:   Private-Geometry (6EACA3D4-40EC-4CC1-B786-8BED09428FC5): 1
LogDevObjectVersion:   Dev-AnimPhys (29E575DD-E0A3-4627-9D10-D276232CDCEA): 3
LogInit: Compiled (64-bit): Aug  2 2017 12:47:17
LogInit: Compiled with Visual C++: 19.00.24215.01
LogInit: Build Configuration: Development
LogInit: Branch Name: ++UE4+Release-4.16
LogInit: Command line: -log LOG=the_steam_tests_1.log
LogInit: Base directory: D:/Unreal Engine Projects/Rokkit/WindowsNoEditor/Rokkit/Binaries/Win64/
LogInit: Installed Engine Build: 0
LogInit: Presizing for max 2097152 objects, including 0 objects not considered by GC, pre-allocating 0 bytes for permanent pool.
LogStreaming:Display: Async Loading initialized: Event Driven Loader: true, Async Loading Thread: false
LogInit: Object subsystem initialized
[2017.08.29-14.15.23:448]  0]LogInit: Selected Device Profile: [WindowsServer]
[2017.08.29-14.15.23:449]  0]LogInit: Applying CVar settings loaded from the selected device profile: [WindowsServer]
[2017.08.29-14.15.23:454]  0]LogInit: Computer: BRANDON-PC
[2017.08.29-14.15.23:454]  0]LogInit: User: Brandon
[2017.08.29-14.15.23:455]  0]LogInit: CPU Page size=4096, Cores=6
[2017.08.29-14.15.23:455]  0]LogInit: High frequency timer resolution =3.416985 MHz
[2017.08.29-14.15.23:456]  0]LogMemory: Memory total: Physical=15.9GB (16GB approx)
[2017.08.29-14.15.23:456]  0]LogMemory: Platform Memory Stats for WindowsServer
[2017.08.29-14.15.23:456]  0]LogMemory: Process Physical Memory: 105.44 MB used, 105.44 MB peak
[2017.08.29-14.15.23:457]  0]LogMemory: Process Virtual Memory: 117.44 MB used, 117.44 MB peak
[2017.08.29-14.15.23:457]  0]LogMemory: Physical Memory: 8358.28 MB used,  7951.31 MB free, 16309.59 MB total
[2017.08.29-14.15.23:458]  0]LogMemory: Virtual Memory: 433.45 MB used,  7951.31 MB free, 134217728.00 MB total
[2017.08.29-14.15.23:503]  0]LogInit: Using OS detected language (en-US).
[2017.08.29-14.15.23:503]  0]LogInit: Using OS detected locale (en-US).
[2017.08.29-14.15.23:504]  0]LogTextLocalizationManager: No specific localization for 'en-US' exists, so the 'en' localization will be used.
[2017.08.29-14.15.23:549]  0]LogAssetRegistry: FAssetRegistry took 0.0082 seconds to start up
[2017.08.29-14.15.23:630]  0]LogPackageLocalizationCache: Processed 4 localized package path(s) for 2 prioritized culture(s) in 0.003241 seconds
[2017.08.29-14.15.23:630]  0]LogPakFile: New pak file ../../../Rokkit/Content/Paks/Rokkit-WindowsNoEditor.pak added to pak precacher.
[2017.08.29-14.15.23:632]  0]LogInit: Selected Device Profile: [WindowsServer]
[2017.08.29-14.15.23:678]  0]LogNetVersion: Rokkit , NetCL: 0, EngineNetVer: 2, GameNetVer: 0 (Checksum: 3894751114)
[2017.08.29-14.15.23:690]  0]LogUObjectArray: 29698 objects as part of root set at end of initial load.
[2017.08.29-14.15.23:691]  0]LogUObjectAllocator: 6159456 out of 0 bytes used by permanent object pool.
[2017.08.29-14.15.23:691]  0]LogUObjectArray: CloseDisregardForGC: 0/0 objects in disregard for GC pool
[2017.08.29-14.15.23:692]  0]LogModuleManager:Warning: ModuleManager: Module 'XAudio2' not found - its StaticallyLinkedModuleInitializers function is null.
[2017.08.29-14.15.23:709]  0]LogAndroidPermission: UAndroidPermissionCallbackProxy::GetInstance
[2017.08.29-14.15.23:722]  0]LogEngine: Initializing Engine...
[2017.08.29-14.15.23:722]  0]LogStreaming:Error: Couldn't find file for package /Script/Engine requested by async loading code. NameToLoad: /Script/Engine
[2017.08.29-14.15.23:762]  0]LogStats: UGameplayTagsManager::ConstructGameplayTagTree: Construct from data asset -  0.000 s
[2017.08.29-14.15.23:762]  0]LogStats: UGameplayTagsManager::ConstructGameplayTagTree: GameplayTagTreeChangedEvent.Broadcast -  0.000 s
[2017.08.29-14.15.23:763]  0]LogInit: Texture streaming: Disabled
[2017.08.29-14.15.23:767]  0]LogInit:Display: Game Engine Initialized.
[2017.08.29-14.15.23:767]  0]LogInit:Display: Starting Game.
[2017.08.29-14.15.23:767]  0]LogNet: Browse: /Game/Maps/Playground?Name=Player
[2017.08.29-14.15.23:768]  0]LogLoad: LoadMap: /Game/Maps/Playground?Name=Player
[2017.08.29-14.15.23:785]  0]LogMemory: Platform Memory Stats for WindowsServer
[2017.08.29-14.15.23:786]  0]LogMemory: Process Physical Memory: 185.46 MB used, 252.70 MB peak
[2017.08.29-14.15.23:786]  0]LogMemory: Process Virtual Memory: 173.25 MB used, 243.55 MB peak
[2017.08.29-14.15.23:787]  0]LogMemory: Physical Memory: 8446.48 MB used,  7863.11 MB free, 16309.59 MB total
[2017.08.29-14.15.23:787]  0]LogMemory: Virtual Memory: 503.49 MB used,  7863.11 MB free, 134217728.00 MB total
[2017.08.29-14.15.23:787]  0]LogMemory: 
[2017.08.29-14.15.23:788]  0]Allocator Stats for binned2: (not implemented)
[2017.08.29-14.15.23:794]  0]LogAIModule: Creating AISystem for world Playground
[2017.08.29-14.15.23:795]  0]LogLoad: Game class is 'RokkitGameMode'
[2017.08.29-14.15.23:795]  0]LogTemp:Display: ParseSettings for GameNetDriver
[2017.08.29-14.15.23:796]  0]LogTemp:Display: ParseSettings for SteamNetDriver_0
[2017.08.29-14.15.23:796]  0]LogTemp:Display: ParseSettings for GameNetDriver
[2017.08.29-14.15.23:797]  0]LogNet:Display: SteamNetDriver_0 bound to port 7777
[2017.08.29-14.15.23:797]  0]PacketHandlerLog: Loaded PacketHandler component: Engine.EngineHandlerComponentFactory (StatelessConnectHandlerComponent)
[2017.08.29-14.15.23:798]  0]LogNet: GameNetDriver SteamNetDriver_0 IpNetDriver listening on port 7777
[2017.08.29-14.15.23:799]  0]LogWorld: Bringing World /Game/Maps/Playground.Playground up for play (max tick rate 30) at 2017.08.29-10.15.23
[2017.08.29-14.15.23:800]  0]LogTemp:Warning: Creating Session for Dedicated Server
[2017.08.29-14.15.23:800]  0]LogNetVersion: Rokkit 1.0.0.0, NetCL: 0, EngineNetVer: 2, GameNetVer: 0 (Checksum: 2887692576)
[2017.08.29-14.15.23:801]  0]LogWorld: Bringing up level for play took: 0.002063
[2017.08.29-14.15.23:801]  0]LogGameMode:Display: Match State Changed from EnteringMap to WaitingToStart
[2017.08.29-14.15.23:802]  0]LogScript:Warning: Accessed None trying to read property CallFunc_Create_ReturnValue
    Playground_C /Game/Maps/Playground.Playground:PersistentLevel.Playground_C_0
    Function /Game/Maps/Playground.Playground_C:ExecuteUbergraph_Playground:0081
[2017.08.29-14.15.23:803]  0]LogScript:Warning: Script call stack:
    Function /Game/Maps/Playground.Playground_C:ReceiveBeginPlay
    Function /Game/Maps/Playground.Playground_C:ExecuteUbergraph_Playground

[2017.08.29-14.15.23:805]  0]LogGameState: Match State Changed from EnteringMap to WaitingToStart
[2017.08.29-14.15.23:805]  0]LogLoad: Took 0.036719 seconds to LoadMap(/Game/Maps/Playground)
[2017.08.29-14.15.23:806]  0]LogLoad: (Engine Initialization) Total time: 0.79 seconds
[2017.08.29-14.15.23:806]  0]LogExternalProfiler: No external profilers were discovered.  External profiling features will not be available.
[2017.08.29-14.15.23:850]  1]LogWindows: Windows GetLastError: The operation completed successfully. (0)
[2017.08.29-14.15.23:917]  3]LogWindows:Warning: CreateProc failed (2) ../../../Engine/Binaries/Win64/CrashReportClient.exe "D:/Unreal Engine Projects/Rokkit/WindowsNoEditor/Rokkit/Saved/Crashes/UE4CC-Windows-A663BBED4783424C4D7E1BA0235CF43D_0000" -Unattended -nullrhi -AppName=UE4-Rokkit -CrashGUID=UE4CC-Windows-A663BBED4783424C4D7E1BA0235CF43D_0000 -DebugSymbols=..\..\..\Engine\Intermediate\Symbols
[2017.08.29-14.15.23:918]  3]LogThreadingWindows:Error: Runnable thread OnlineAsyncTaskThreadSteam DefaultInstance crashed.
[2017.08.29-14.15.23:918]  3]LogWindows:Error: === Critical error: ===
[2017.08.29-14.15.23:919]  3]LogWindows:Error: 
[2017.08.29-14.15.23:919]  3]LogWindows:Error: Assertion failed: SteamUtilsPtr [File:D:\Unreal Engine Source\UnrealEngine-4.16.3\Engine\Plugins\Online\OnlineSubsystemSteam\Source\Private\OnlineSessionAsyncLobbySteam.cpp] [Line: 433] 
[2017.08.29-14.15.23:920]  3]LogWindows:Error: 
[2017.08.29-14.15.23:921]  3]LogWindows:Error: 
[2017.08.29-14.15.23:921]  3]LogWindows:Error: 
[2017.08.29-14.15.23:922]  3]LogWindows:Error: KERNELBASE.dll!0x00000000ECC93C58
[2017.08.29-14.15.23:922]  3]LogWindows:Error: RokkitServer.exe!0x00000000A50E0EBA
[2017.08.29-14.15.23:923]  3]LogWindows:Error: RokkitServer.exe!0x00000000A4EF788B
[2017.08.29-14.15.23:923]  3]LogWindows:Error: RokkitServer.exe!0x00000000A4E86548
[2017.08.29-14.15.23:924]  3]LogWindows:Error: RokkitServer.exe!0x00000000A8B82EED
[2017.08.29-14.15.23:924]  3]LogWindows:Error: RokkitServer.exe!0x00000000A8B237B9
[2017.08.29-14.15.23:925]  3]LogWindows:Error: RokkitServer.exe!0x00000000A8B21D5B
[2017.08.29-14.15.23:925]  3]LogWindows:Error: RokkitServer.exe!0x00000000A50F42F8
[2017.08.29-14.15.23:926]  3]LogWindows:Error: RokkitServer.exe!0x00000000A50EF1A9
[2017.08.29-14.15.23:927]  3]LogWindows:Error: KERNEL32.DLL!0x00000000EEA58364
[2017.08.29-14.15.23:928]  3]LogWindows:Error: ntdll.dll!0x00000000EF957091
[2017.08.29-14.15.23:928]  3]LogWindows:Error: ntdll.dll!0x00000000EF957091
[2017.08.29-14.15.23:929]  3]LogWindows:Error: 
[2017.08.29-14.15.23:930]  3]LogWindows:Error: Crash in runnable thread OnlineAsyncTaskThreadSteam DefaultInstance
[2017.08.29-14.15.23:933]  3]LogExit: Executing StaticShutdownAfterError
[2017.08.29-14.15.23:933]  3]LogWindows: FPlatformMisc::RequestExit(1)
[2017.08.29-14.15.23:934]  3]Log file closed, 08/29/17 10:15:23


If anyone could help me figure this out I would greatly appreciate it. Been at this a few weeks now and been banging my head against the wall it seems. I just want to find a way to reliably test multiplayer and reliably test it with other people until I get a deployment strategy for future builds.

Bump. Threads fade quick.

Please halp.

Anyone have any inkling? Can point me in A direction? Anyone

Thanks for the help…

The fix is in

void FOnlineAsyncTaskSteamCreateLobby::Tick()
{
ISteamUtils* SteamUtilsPtr = SteamUtils();
// R Keene fixed here for dedicated server. 2/26/2018
if (SteamUtilsPtr == NULL) {
SteamUtilsPtr = SteamGameServerUtils();
}
check(SteamUtilsPtr);

I had the same issue.
Presense is only for hosting a server on the same instance as the client. Presense should not be used on dedicated servers, and thus the solution is to turn it off.
Settings.bUsesPresence = false; Settings.bAllowJoinViaPresence = false;

geNia THANK YOU!