UE 5.8.1 editor crash: MovieGraphCoreTimeStep GetBlendedMotionBlurAmount null PlayerController deref when Movie Render Graph runs against an editor world

Summary

UMovieGraphPipeline::Initialize is BlueprintCallable and accepts an editor world, so Movie Render Graph can be driven programmatically from editor Python (no executor) — useful for automated linear-content pipelines. The pipeline initializes, builds its shot list, logs “MovieGraph Initializing Camera Cut [1/1]” — then the editor dies with EXCEPTION_ACCESS_VIOLATION reading 0x0000000000000540, entirely inside MovieRenderPipelineCore on its own OnBeginFrame tick.

Cause — MovieGraphCoreTimeStep.cpp:785 (GetBlendedMotionBlurAmount):

APlayerCameraManager* PlayerCameraManager = GetWorld()->GetFirstPlayerController()->PlayerCameraManager;
if (PlayerCameraManager) // null-checks the wrong pointer

It guards PlayerCameraManager but dereferences GetFirstPlayerController() unguarded. An EWorldType::Editor world has no player controller; the faulting address 0x540 is exactly the PlayerCameraManager member offset.

Checked before filing: (1) the call site (UpdateFrameMetrics) runs unconditionally for every produced frame — no graph setting skips it; (2) the time-step class is graph-selectable, but every shipped class descends from UMovieGraphCoreTimeStep; (3) GetBlendedMotionBlurAmount is virtual but not a UFUNCTION, so a Python subclass cannot override it.

What Type of Bug are you experiencing?

Editor

Steps to Reproduce

  1. UE 5.8.1, any project with the Movie Render Pipeline plugin enabled. Open an editor world (no PIE session). A Level Sequence with one camera cut bound to a camera actor in the level.
  2. In the editor Python console:

import unreal
world = unreal.EditorLevelLibrary.get_editor_world() # EWorldType::Editor
pipeline = unreal.new_object(unreal.MovieGraphPipeline, outer=world)
pipeline.initialize(job, graph) # a MoviePipelineExecutorJob for the sequence + any Movie Graph config

  1. Let the editor tick. On the first frame after “MovieGraph Initializing Camera Cut [1/1]” the editor crashes.

Expected Result

Either Initialize refuses an editor world up front, or the time step handles the absent player controller — the existing if (PlayerCameraManager) branch suggests that was the intent. A one-line null check on GetFirstPlayerController() with fallback (no blended motion blur) would make the whole editor-world drive path usable for automated rendering pipelines.

Observed Result

Hard editor crash (EXCEPTION_ACCESS_VIOLATION reading 0x0000000000000540) on the pipeline’s first OnBeginFrame tick after camera-cut initialization. Log excerpt:

LogMovieRenderPipeline: Initializing MovieGraph Render
LogMovieRenderPipeline: Finished initializing MovieGraph Render
LogMovieRenderPipeline: MovieGraph Initializing Camera Cut [1/1] … InnerName: GL_MRGProbeCam.
LogWindows: Error: Unhandled Exception: EXCEPTION_ACCESS_VIOLATION reading address 0x0000000000000540
LogWindows: Error: [Callstack] UnrealEditor-MovieRenderPipelineCore.dll!UnknownFunction

No project code on the stack — the crash is entirely inside MovieRenderPipelineCore.

Affects Versions

5.8

Platform(s)

Windows