Microsoft hat in den am 27. Oktober 2022 veröffentlichten Release Notes zum June 2022 Microsoft Game Development Kit (GDK) Update 4 einen Fehler im PlayFabMultiplayer C++ Client SDK korrigiert, der zu einem Speicherleck bei Websocket-Ressourcen führte. Laut Dokumentation gaben Websocket-Ressourcen ihren Speicher nicht frei, wenn die Funktion PFMultiplayerUninitialize() aufgerufen wurde oder wenn die Bibliothek intern eine App-Suspendierung auf Xbox-Konsolen verarbeitete.
Speicherleck bei De-Initialisierung und Suspendierung
Der behobene Fehler betraf zwei konkrete Szenarien im Lebenszyklus einer Anwendung. Zum einen trat das Leck beim expliziten Aufruf von PFMultiplayerUninitialize() auf, also der regulären De-Initialisierung der PlayFabMultiplayer-Bibliothek. Zum anderen manifestierte es sich bei der internen Verarbeitung einer App-Suspendierung auf Xbox-Hardware, einem Vorgang, der durch das Betriebssystem ausgelöst wird, wenn ein Titel in den Hintergrund wechselt. In beiden Fällen verblieben Websocket-Ressourcen im Speicher, ohne korrekt freigegeben zu werden.
Für Titel, die wiederholt initialisieren und de-initialisieren oder häufig zwischen aktivem und suspendiertem Zustand wechseln, summiert sich ein solches Leck über die Laufzeit. Auf den ressourcenbeschränkten Konsolen-Umgebungen wiegt ein kontinuierlich wachsender Speicherverbrauch schwerer als auf typischer Desktop-Hardware, da der zur Verfügung stehende Arbeitsspeicher fest zugeteilt ist. Die Korrektur stellt sicher, dass die Websocket-Ressourcen bei beiden Auslösern ordnungsgemäß freigegeben werden.
Zweite Korrektur in der XSAPI-Sitzungsverwaltung
Neben der Speicherleck-Korrektur dokumentiert Update 4 einen weiteren Fix in der Xbox Services API. Dort wurde ein Problem behoben, bei dem der asynchrone Callback von XblMultiplayerWriteSessionAsync nicht zurückkehrte, sofern dieser auf eine RTA-Connection-ID wartete und der Real-Time-Activity-Dienst nach einem Verlust der Netzwerkverbindung nicht erneut verbinden konnte. Damit blieb ein anhängiger asynchroner Vorgang dauerhaft offen, statt einen Abschluss zu signalisieren.
Update 4 steht zudem im Kontext eines Verteilungsproblems der Vorgängerversion. Microsoft weist in den Release Notes darauf hin, dass Update 3 wegen eines Packaging-Fehlers vorübergehend entfernt wurde und mit Update 4 die entsprechenden Korrekturen eingespielt wurden. Die beiden behobenen Fehler adressieren die Stabilität von Multiplayer-Komponenten innerhalb des June-2022-GDK-Zweigs und betreffen Entwickler, die PlayFabMultiplayer beziehungsweise die Multiplayer-Sitzungsverwaltung der XSAPI einsetzen.
Solche Wartungsversionen prägen den Rhythmus des GDK, das Microsoft in regelmäßigen Abständen mit gebündelten Fehlerbehebungen und Funktionen pflegt, wie etwa beim März-2024-Update des Game Development Kit. Die Backend-Komponente PlayFab wird parallel weiterentwickelt; spätere Ausgaben des PlayFab Digest belegen, wie kontinuierlich an dem Dienst und seinen SDKs gearbeitet wird.