Skip to content

Crash when using shadow atlas debug modes with Metal renderer #96821

Closed
@clayjohn

Description

@clayjohn

Tested versions

  • Reproducible in 4.4-dev2 and master (97ef3c8)

System information

Godot v4.4.dev (29df589) - macOS 14.6.1 - Metal (Forward+) - integrated Apple M2 (Apple8) - Apple M2 (8 Threads)

Issue description

When selecting either the "shadow atlas" or "directional shadow atlas" viewport debug draw modes Godot crashes. Even in an empty project. Changing the rendering backend to Vulkan makes the crash go away

Screenshot 2024-09-10 at 12 49 18 PM

Output:

Metal 3.1 - Forward+ - Using Device #0: Apple - Apple M2 (Apple8)

ERROR: FATAL: Index p_index = 4294967295 is out of bounds (size() = 1).
   at: get (./core/templates/cowdata.h:205)

================================================================
handle_crash: Program crashed with signal 5
Engine version: Godot Engine v4.4.dev.custom_build (29df5896322c708924c1c2cea3330fe88dface80)
Dumping the backtrace. Please include this when reporting the bug to the project developer.
[1] 1   libsystem_platform.dylib            0x000000018d27a584 _sigtramp + 56
[2] CowData<MDAttachment>::get(long long) const (in godot.macos.editor.dev.arm64) (cowdata.h:205)
[3] Vector<MDAttachment>::operator[](long long) const (in godot.macos.editor.dev.arm64) (vector.h:97)
[4] MDCommandBuffer::_render_clear_render_area() (in godot.macos.editor.dev.arm64) (metal_objects.mm:563)
[5] MDCommandBuffer::render_next_subpass() (in godot.macos.editor.dev.arm64) (metal_objects.mm:668)
[6] MDCommandBuffer::render_begin_pass(RenderingDeviceDriver::RenderPassID, RenderingDeviceDriver::FramebufferID, RenderingDeviceDriver::CommandBufferType, Rect2i const&, VectorView<RenderingDeviceDriver::RenderPassClearValue>) (in godot.macos.editor.dev.arm64) (metal_objects.mm:521)
[7] RenderingDeviceDriverMetal::command_begin_render_pass(RenderingDeviceDriver::CommandBufferID, RenderingDeviceDriver::RenderPassID, RenderingDeviceDriver::FramebufferID, RenderingDeviceDriver::CommandBufferType, Rect2i const&, VectorView<RenderingDeviceDriver::RenderPassClearValue>) (in godot.macos.editor.dev.arm64) (rendering_device_driver_metal.mm:3009)
[8] RenderingDeviceGraph::_run_render_commands(int, RenderingDeviceGraph::RecordedCommandSort const*, unsigned int, RenderingDeviceDriver::CommandBufferID&, RenderingDeviceGraph::CommandBufferPool&, int&, int&) (in godot.macos.editor.dev.arm64) (rendering_device_graph.cpp:830)
[9] RenderingDeviceGraph::end(bool, bool, RenderingDeviceDriver::CommandBufferID&, RenderingDeviceGraph::CommandBufferPool&) (in godot.macos.editor.dev.arm64) (rendering_device_graph.cpp:2045)
[10] RenderingDevice::_end_frame() (in godot.macos.editor.dev.arm64) (rendering_device.cpp:5259)
[11] RenderingDevice::swap_buffers() (in godot.macos.editor.dev.arm64) (rendering_device.cpp:5077)
[12] RendererCompositorRD::end_frame(bool) (in godot.macos.editor.dev.arm64) (renderer_compositor_rd.cpp:108)
[13] RenderingServerDefault::_draw(bool, double) (in godot.macos.editor.dev.arm64) (rendering_server_default.cpp:93)
[14] RenderingServerDefault::draw(bool, double) (in godot.macos.editor.dev.arm64) (rendering_server_default.cpp:407)
[15] Main::iteration() (in godot.macos.editor.dev.arm64) (main.cpp:4350)
[16] OS_MacOS::run() (in godot.macos.editor.dev.arm64) (os_macos.mm:787)
[17] main (in godot.macos.editor.dev.arm64) (godot_main_macos.mm:84)
[18] 18  dyld                                0x000000018cebf154 start + 2476
-- END OF BACKTRACE --
================================================================

Steps to reproduce

  1. Open a 3D scene
  2. Click on "Preview"
  3. Click "Display Advanced"
  4. Click either "Shadow Atlas" or "Directional Shadow Atlas"

Minimal reproduction project (MRP)

metal-debug-atlas-crash.zip

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions