PCGRuntimeGenScheduler.cpp attempts to detect the editor viewport like so:
#if WITH_EDITOR
// If we're in an editor world, stop updating preview if the editor window/viewport is not active (follows
// same behaviour as other things).
if (!World->IsGameWorld())
{
FViewport* Viewport = GEditor ? GEditor->GetActiveViewport() : nullptr;
FEditorViewportClient* ViewportClient = Viewport ? static_cast<FEditorViewportClient*>(Viewport->GetClient()) : nullptr;
if (!ViewportClient || !ViewportClient->IsVisible())
{
return false;
}
}
#endif
When the editor is signing into the OSS, and before the PIE window is actually created, calling GetClient on the viewport returns a client of type `CommonGameViewportClient` and not `EditorViewportClient`; the static cast is invalid. When the code then calls `IsVisible()`, it crashes because the underlying memory isn’t actually an `FEditorViewportClient`.
[Attachment Removed]