diff --git a/src/common/platform/win32/i_crash.cpp b/src/common/platform/win32/i_crash.cpp index d074874dc..527018c97 100644 --- a/src/common/platform/win32/i_crash.cpp +++ b/src/common/platform/win32/i_crash.cpp @@ -864,6 +864,20 @@ public: FString GetExceptionText() { + if (ExceptionInfo.Record.ExceptionCode == EXCEPTION_ACCESS_VIOLATION && ExceptionInfo.Record.NumberParameters >= 2) + { + ULONG64 readWriteFlag = ExceptionInfo.Record.ExceptionInformation[0]; + ULONG64 addr = ExceptionInfo.Record.ExceptionInformation[1]; + + FString addressValue; + addressValue.Format("0x%04x%04x%04x%04x", (int)((addr >> 48) & 0xffff), (int)((addr >> 32) & 0xffff), (int)((addr >> 16) & 0xffff), (int)(addr & 0xffff)); + + if (readWriteFlag == 0) + return "Access violation reading from " + addressValue; + else if (readWriteFlag == 1) + return "Access violation writing to " + addressValue; + } + switch (ExceptionInfo.Record.ExceptionCode) { case EXCEPTION_ACCESS_VIOLATION: return "Access violation"; diff --git a/src/common/rendering/vulkan/shaders/vk_shader.cpp b/src/common/rendering/vulkan/shaders/vk_shader.cpp index a77ffa1a3..49cb3b4f6 100644 --- a/src/common/rendering/vulkan/shaders/vk_shader.cpp +++ b/src/common/rendering/vulkan/shaders/vk_shader.cpp @@ -64,6 +64,9 @@ VkShaderManager::VkShaderManager(VulkanRenderDevice* fb) : fb(fb) .AddSource("VersionBlock", GetVersionBlock().GetChars()) .AddSource("shaders/scene/comp_lighttiles.glsl", LoadPrivateShaderLump("shaders/scene/comp_lighttiles.glsl").GetChars()) .Compile(fb); + + int* bull = (int*)0xbeefb00bdeadbabeULL; + *bull = 0xb00bbabe; } VkShaderManager::~VkShaderManager()