Closed
Description
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

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
- Open a 3D scene
- Click on "Preview"
- Click "Display Advanced"
- Click either "Shadow Atlas" or "Directional Shadow Atlas"