GPU crash detected: - Device 0 Removed: DXGI_ERROR_DEVICE_HUNG [2026.04.16-10.41...
错误信息
[2026.04.16-10.40.48:586][ 61]LogAkAudio: Warning: Failed to post invalid AkAudioEvent.
[2026.04.16-10.41.01:585][175]LogD3D12RHI: Error: GPU crash detected:
- Device 0 Removed: DXGI_ERROR_DEVICE_HUNG
[2026.04.16-10.41.01:586][175]LogD3D12RHI: Error: Shader diagnostic messages and asserts:
Device: 0, Queue 3D:
No shader diagnostics found for this queue.
Device: 0, Queue Copy:
No shader diagnostics found for this queue.
Device: 0, Queue Compute:
No shader diagnostics found for this queue.
[2026.04.16-10.41.01:587][175]LogD3D12RHI: Error: DRED: No breadcrumb head found.
[2026.04.16-10.41.01:587][175]LogD3D12RHI: Error: DRED: No PageFault data.
[2026.04.16-10.41.01:587][175]LogD3D12RHI: Error: Video Memory Stats from frame ID 8:
[2026.04.16-10.41.01:587][175]LogD3D12RHI: Error: Local Budget: 0.00 MB
[2026.04.16-10.41.01:588][175]LogD3D12RHI: Error: Local Used: 0.00 MB
[2026.04.16-10.41.01:588][175]LogD3D12RHI: Error: System Budget: 0.00 MB
[2026.04.16-10.41.01:588][175]LogD3D12RHI: Error: System Used: 0.00 MB
[2026.04.16-10.41.01:595][175]LogD3D12RHI: Error: GPU发生崩溃,或D3D设备已移除。
检查日志中的GPU状态信息。
AI 解决方案
报错分析报告
1.错误翻译
原文1:Failed to post invalid AkAudioEvent.
译文1:无法发布无效的AkAudioEvent。
原文2:GPU crash detected: Device 0 Removed: DXGI_ERROR_DEVICE_HUNG
译文2:检测到GPU崩溃:设备0已移除,错误码DXGI_ERROR_DEVICE_HUNG。
2. 原因分析
AkAudioEvent对象(事件无效)。 3.解决方案
#### 修复AkAudio无效事件发布
// Unreal Engine C++示例:验证事件有效性后发布
#include "AkAudioDevice.h"
void PlayValidAkEvent(UObject* WorldContextObject, const FString& EventName) {
FAkAudioDevice* AkDevice = FAkAudioDevice::Get();
if (!AkDevice) return;
// 加载事件所在的Bank(确保已预加载)
AkDevice->LoadBank(TEXT("GameSounds"), AK_DEFAULT_POOL_ID);
// 获取有效事件ID(替换为实际事件名)
AkGameObjectID GameObjID = GetWorld()->GetFirstPlayerController()->GetViewTarget()->GetUniqueID();
AkPlayingID PlayingID = AkDevice->PostEvent(EventName, GameObjID);
if (PlayingID == AK_INVALID_PLAYING_ID) {
UE_LOG(LogAkAudio, Error, TEXT("发布AkAudioEvent失败:事件[%s]无效"), *EventName);
}
}
#### 缓解D3D12 GPU崩溃
// 示例:显存使用监控与预警(Unreal D3D12RHI)
#include "D3D12RHIPrivate.h"
void CheckVideoMemoryBudget(FD3D12Device* D3DDevice) {
IDXGIAdapter3* Adapter = D3DDevice->GetAdapter();
DXGI_QUERY_VIDEO_MEMORY_INFO MemInfo;
// 查询本地显存状态
HRESULT hr = Adapter->QueryVideoMemoryInfo(0, DXGI_MEMORY_SEGMENT_GROUP_LOCAL, &MemInfo);
if (SUCCEEDED(hr)) {
float UsageRatio = (float)MemInfo.CurrentUsage / MemInfo.Budget;
if (UsageRatio > 0.9f) {
UE_LOG(LogD3D12RHI, Warning, TEXT("显存使用超90%!当前%.2fMB/预算%.2fMB"),
MemInfo.CurrentUsage / (1024*1024), MemInfo.Budget / (1024*1024));
// 触发资源释放(如卸载非必要纹理)
}
}
}
4.️ 预防措施
TSharedPtr<AkAudioEvent>)管理音频事件,发布前调用AK::SoundEngine::IsEventIDValid验证有效性。