Fake IP not released after game exits

Abierto
#465 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 2 días

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
4/5
Tiempo estimado
Más de una semana
Aptitud para principiantes
12/100
Tipo de issue
Error
Claridad
Necesita aclaración
Estado de actividad
Activo
Stack tecnológico
cpp, csharp
Área
networking

Línea de trabajo

The report describes a Steam client bug: after a Fake IP is allocated, BeginAsyncRequestFakeIP keeps failing on relaunch until Steam restarts, with the cause logged in console_log.txt. The reproduction is a C# probe in an external gist that calls SteamAPI_Init, InitRelayNetworkAccess, and GetFakeIP/BeginAsyncRequestFakeIP, and nothing in this repository's source is named as the fix location. Done would mean the repro is confirmed and the report is routed to the Steamworks team, since the code involved is in the closed-source Steam client.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

Apologies I know this repo isn't technically related to the Steam client's SDR/FakeIP networking, but I see a couple of older tickets mentioning it so this seems like the best place to post about it where someone involved with it might see it.


So after my game successfully allocates a Fake IP via GetFakeIP/BeginAsyncRequestFakeIP and then exits normally, any more re-launches of that same App ID get a k_EResultFail from BeginAsyncRequestFakeIP for as long as the Steam client is running. Steam's console_log.txt shows this error message:

src/clientdll/clientnetworkingapi.cpp (2809) : YldRequestFakeIP called again.  Not allowed!

Restarting the Steam client fixes it for one launch, so does launching another game in between.

I've reproduced this on both Windows x64 and macOS arm64, Steam client version 1793235415

Steps to reproduce it:

  1. Restart Steam
  2. Run a minimal program that calls SteamAPI_Init, InitRelayNetworkAccess, InitAuthentication, requests a fake ip via GetFakeIP/BeginAsyncRequestFakeIP and wait for the result. The first time will give you a k_EResultOK with a valid Fake IP address and port. Then exit the program if its still running.
  3. Re-run the program, but this time you'll get k_EResultFail and the line in the console_log.txt from above.
  4. From now on it will keep failing with k_EResultFail

To clear it you'll need to either restart Steam or launch any other game that goes through the SteamAPI_Init.

Here's a .NET 10 C# project using Steamworks.NET that I've reproduced the error with: https://gist.github.com/philo23/f3ebcbe8aaf14df6f49a0822f8843534

It'll write a probe.log file into bin/Debug/net10.0/ along side the dll

$ echo 480 > steamapp_id.txt

$ dotnet bin/Debug/net10.0/Probe.dll
[2026-10-31 22:49:48.331Z pid=7012] PROBE start
[2026-10-31 22:49:48.348Z pid=7012] PROBE launched by Steam=False; SteamAppId=-; SteamGameId=-
[2026-10-31 22:49:48.348Z pid=7012] PROBE cwd=/tmp/steam-fakeip-probe; args=
[S_API] SteamAPI_Init(): Loaded '/Users/redacted/Library/Application Support/Steam/Steam.AppBundle/Steam/Contents/MacOS/steamclient.dylib' OK.
Setting breakpad minidump AppID = 480
SteamInternal_SetMinidumpSteamID:  Caching Steam ID:  7656119XXXXXXXXXX [API loaded no]
[2026-10-31 22:49:48.405Z pid=7012] PROBE init=k_ESteamAPIInitResult_OK;
[2026-10-31 22:49:48.406Z pid=7012] PROBE app=480
[2026-10-31 22:49:48.410Z pid=7012] PROBE auth=k_ESteamNetworkingAvailability_Attempting
[2026-10-31 22:49:48.412Z pid=7012] PROBE initial=k_EResultNoMatch; IPv4 present=False; port present=False
[2026-10-31 22:49:48.412Z pid=7012] PROBE begin=True
[2026-10-31 22:49:48.418Z pid=7012] SDK k_ESteamNetworkingSocketsDebugOutputType_Verbose: Got cert for steamid:7656119XXXXXXXXXX from Steam
[2026-10-31 22:49:48.419Z pid=7012] SDK k_ESteamNetworkingSocketsDebugOutputType_Msg: Certificate expires in 40h18m at 1793632101 (current time 1793486987), will renew in 38h18m
[2026-10-31 22:49:48.441Z pid=7012] SDK k_ESteamNetworkingSocketsDebugOutputType_Warning: SDR network config fetch attempt #1 failed.  HTTP 504.  .  Trying again.
[2026-10-31 22:49:48.566Z pid=7012] SDK k_ESteamNetworkingSocketsDebugOutputType_Msg: Got SDR network config.  Loaded revision 1793064244 OK
[2026-10-31 22:49:48.566Z pid=7012] SDK k_ESteamNetworkingSocketsDebugOutputType_Msg: Performing ping measurement
[2026-10-31 22:49:48.566Z pid=7012] SDK k_ESteamNetworkingSocketsDebugOutputType_Msg: SDR RelayNetworkStatus:  avail=Attempting  config=OK  anyrelay=Attempting   (Performing ping measurement)
[2026-10-31 22:49:48.566Z pid=7012] SDK k_ESteamNetworkingSocketsDebugOutputType_Msg: AuthStatus (steamid:7656119XXXXXXXXXX):  OK  (OK)
[2026-10-31 22:49:48.652Z pid=7012] SDK k_ESteamNetworkingSocketsDebugOutputType_Verbose: Communications with routing cluster 'fra' established.
[2026-10-31 22:49:48.664Z pid=7012] SDK k_ESteamNetworkingSocketsDebugOutputType_Verbose: Communications with routing cluster 'sto2' established.
[2026-10-31 22:49:48.690Z pid=7012] PROBE callback=k_EResultOK; IPv4 present=True; port present=True
[2026-10-31 22:49:48.713Z pid=7012] PROBE final=k_EResultOK; IPv4 present=True; port present=True
[2026-10-31 22:49:48.741Z pid=7012] PROBE shutdown

$ dotnet bin/Debug/net10.0/Probe.dll
[2026-10-31 22:49:52.799Z pid=7077] PROBE start
[2026-10-31 22:49:52.815Z pid=7077] PROBE launched by Steam=False; SteamAppId=-; SteamGameId=-
[2026-10-31 22:49:52.815Z pid=7077] PROBE cwd=/tmp/steam-fakeip-probe; args=
[S_API] SteamAPI_Init(): Loaded '/Users/redacted/Library/Application Support/Steam/Steam.AppBundle/Steam/Contents/MacOS/steamclient.dylib' OK.
Setting breakpad minidump AppID = 480
SteamInternal_SetMinidumpSteamID:  Caching Steam ID:  7656119XXXXXXXXXX [API loaded no]
[2026-10-31 22:49:52.867Z pid=7077] PROBE init=k_ESteamAPIInitResult_OK;
[2026-10-31 22:49:52.868Z pid=7077] PROBE app=480
[2026-10-31 22:49:52.870Z pid=7077] PROBE auth=k_ESteamNetworkingAvailability_Attempting
[2026-10-31 22:49:52.871Z pid=7077] PROBE initial=k_EResultNoMatch; IPv4 present=False; port present=False
[2026-10-31 22:49:52.872Z pid=7077] PROBE begin=True
[2026-10-31 22:49:53.080Z pid=7077] SDK k_ESteamNetworkingSocketsDebugOutputType_Verbose: Got cert for steamid:7656119XXXXXXXXXX from Steam
[2026-10-31 22:49:53.080Z pid=7077] SDK k_ESteamNetworkingSocketsDebugOutputType_Msg: Certificate expires in 40h18m at 1793632101 (current time 1793486991), will renew in 38h18m
[2026-10-31 22:49:53.084Z pid=7077] PROBE callback=k_EResultFail; IPv4 present=False; port present=False
[2026-10-31 22:49:53.105Z pid=7077] PROBE final=k_EResultFail; IPv4 present=False; port present=False
[2026-10-31 22:49:53.108Z pid=7077] PROBE shutdown
Lenguaje dominante
C++
Estrellas
10k
Forks
767
Métricas de merge de PR
Sin PR fusionados en 30 d

Preparar el entorno

Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de ValveSoftware/GameNetworkingSockets

Todos los issues de ValveSoftware/GameNetworkingSockets

Issues similares

Más issues de C++

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.