CriticalErrors in FWindowsErrorOutputDevice::Serialize (and other platforms) run some code after the error is detected rather than immediately terminating the process. Some of this other code is specific and important, such as flushing logs, crashreporting, and restoring hardware settings. But it also calls FPlatformMisc::RequestExit, which then runs a lot of shutdown code.
Assertions during this shutdown code continue to be reported, and can confuse developers reviewing the log of a crash.
Add code to prevent those followup assertions in the most robust way possible.
Example log:
LogSourceControl: Attempting 'p4 fstat -Or <filename.uasset>' LogWindows: Error: appError called: Assertion failed: Pipeline->MaxLocalRootSignatureSize <= SBT->GetInitializer().LocalBindingDataSize [File:Engine\Source\Runtime\D3D12RHI\Private\D3D12RayTracing.cpp] [Line: 5058] LogWindows: Windows GetLastError: The operation completed successfully. (0) LogRHI: Error: Breadcrumbs 'RHIThread' - Scene - FRDGBuilder::Execute - Frame 32043 LogAudioMixer: Warning: AudioMixerPlatformInterface Timeout [21 Seconds] waiting for h/w. InstanceID=1 LogThreadingWindows: Error: Runnable thread RHIThread crashed. LogWindows: Error: Error reentered: Assertion failed: Pool != FPoolRoot::Instance() [File:Engine\Source\Runtime\Core\Private\External\Memory\MemoryPoolImpl.cpp] [Line: 759] Don't allocate against FPoolRoot! LogWindows: Error: HandleError re-entered. LogWindows: FPlatformMisc::RequestExit(1, WindowsErrorOutputDevice::Serialize.!GIsGuarded) LogWindows: FPlatformMisc::RequestExitWithStatus(1, 3, WindowsErrorOutputDevice::Serialize.!GIsGuarded) LogCore: Engine exit requested (reason: Win RequestExit) LogWindows: Error: Error reentered: Assertion failed: Pool != FPoolRoot::Instance() [File:Engine\Source\Runtime\Core\Private\External\Memory\MemoryPoolImpl.cpp] [Line: 759] Don't allocate against FPoolRoot! ... <message repeats forever until process is terminated>
Not yet known; reporter is working on creating a repro case.
How do I set a material as a post-processing material?
Why does the REMOVE method of map container remove elements have memory leaks?
How does TextureRenderTarget2D get TArray<uint8> type data?
What is the difference between Camera and CineCamera?
What controls of umg have mouse wheel events in UE4.27?
How to use the.usf file in the ue4 engine Shader in the material?
There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-221417 in the post.