Fatal Error when trying to find Steam lobbies through C++ in Unreal 5.5/5.6.

Hi, I’ve been having an issue with finding sessions in Unreal 5.5/5.6. In a packaged build when testing multiplayer through 2 different Steam accounts on 2 different computers, I always get a fatal error when I attempt to Find Sessions. I’ve tried a bunch of different combinations of settings and I simply cannot get it to work.

My session create code looks like this:

FOnlineSessionSettings Settings;
Settings.bAllowJoinInProgress = true;
Settings.bIsDedicated = false;
Settings.bShouldAdvertise = true;
Settings.bUsesPresence = true;
Settings.NumPublicConnections = 5;
Settings.bUseLobbiesIfAvailable = true;
	
SessionInterface->CreateSession(0, NAME_GameSession, Settings);

And my find sessions code looks like this:

SessionSearch = MakeShared<FOnlineSessionSearch>();
SessionSearch->bIsLanQuery = false;
SessionSearch->MaxSearchResults = 10000;
SessionSearch->QuerySettings.Set(SEARCH_LOBBIES, true, EOnlineComparisonOp::Equals);
SessionInterface->FindSessions(0, SessionSearch.ToSharedRef());

DefaultEngine.ini:

[/Script/Engine.GameEngine]
!NetDriverDefinitions=ClearArray
+NetDriverDefinitions=(DefName="GameNetDriver",DriverClassName="/Script/SteamSockets.SteamSocketsNetDriver",DriverClassNameFallback="OnlineSubsystemUtils.IpNetDriver")

[OnlineSubsystem]
DefaultPlatformService=Steam

[OnlineSubsystemSteam]
bEnabled=True
SteamDevAppId=[My id]
bInitServerOnClient=true
SteamAppId=[My id]

[/Script/OnlineSubsystemUtils.IpNetDriver]
MaxClientRate=1000000000
MaxInternetClientRate=1000000000
InitialConnectTimeout=120.0

[/Script/OnlineSubsystemSteam.SteamNetDriver]
NetConnectionClassName=OnlineSubsystemSteam.SteamNetConnection

Build.cs file:

PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs;
	
		PublicDependencyModuleNames.AddRange(new string[]
		{
			"Core",
			"CoreOnline",
			"CoreUObject",
			"GameplayAbilities",
			"GameplayTags",
			"GameplayTasks",
			"Engine",
			"EnhancedInput",
			"InputCore",
			"Networking",
			"OnlineSubsystem",
			"OnlineSubsystemUtils",
			"Paper2D",
			"UMG"
		});

		PrivateDependencyModuleNames.AddRange(new string[]
		{
			"EnhancedInput",
			"OnlineSubsystemSteam"
		});

If I remove the line SessionSearch->QuerySettings.Set(SEARCH_LOBBIES, true, EOnlineComparisonOp::Equals); it won’t crash with a fatal error anymore but I also won’t find any sessions at all. There also seems to be no difference whether I use SEARCH_LOBBIES or SEARCH_PRESENCE, it will crash just in the same way.

I also tried both the SteamSockets net driver and the default Steam Net Driver, same issue. Another thing I noticed while debugging is that if I don’t bind anything to the OnFindSessionsCompleteDelegates, it also won’t crash so I thought it could perhaps be a object lifetime issue or similar, but the problem is that it crashes way before it even attampts to broadcast the delegate, so I’m a bit dumbfounded as to what the issue might be.

I would be thankful if anyone can help me solve this issue, as I’ve been stuck on it quite some time.

I’m bumping this, as it’s very crucial for me to get this fixed.

It’s been 7 months and I have been focusing on other things but I have to get this bumped again as it’s still not working.

An update to this though is that if I start the actual gameplay map as the host and send an invite through Steam that the other player accepts, the other player will correctly enter the session. However, if I send an invite through Steam as the host when in the menu, the other player can join through the invite and arrives at the menu, but if I do a ServerTravel to the gameplay map the host will crash with a Fatal Error as well.