### Godot version

master CI builds

### System information

Linux / Editor with doubles and GCC sanitizers

### Issue description

The `Linux / Editor with doubles and GCC sanitizers` build can fail with a `attempting free on address which was not malloc()-ed` crash in the `Open and close editor (Vulkan)` step.

https://github.com/godotengine/godot/actions/runs/5366302204/jobs/9735786296#step:15:138
https://github.com/godotengine/godot/actions/runs/5389199469/jobs/9783070708?pr=78740#step:15:138

The failure doesn't seem related to either PR (in fact one of them is just a docs change). I have only seen this issue these two times, still probably worth looking into.

### Steps to reproduce

Open and close https://github.com/godotengine/regression-test-project/archive/4.0.zip using the Vulkan renderer.

### Minimal reproduction project

https://github.com/godotengine/regression-test-project/archive/4.0.zip
float float_value;
		bool bool_value;
	};
	uint32_t stage_flags;
};
struct RenderingDeviceVulkanShaderBinaryData {
	uint32_t vertex_input_mask;
	uint32_t fragment_output_mask;
	uint32_t specialization_constants_count;
	uint32_t is_compute;
	uint32_t compute_local_size[3];
	uint32_t set_count;
	uint32_t push_constant_size;
	uint32_t push_constant_vk_stages_mask;
	uint32_t stage_count;
	uint32_t shader_name_len;
};
Vector<uint8_t> RenderingDeviceVulkan::shader_compile_binary_from_spirv(const Vector<ShaderStageSPIRVData> &p_spirv, const String &p_shader_name) {
	SpirvReflectionData spirv_data;
	if (_reflect_spirv(p_spirv, spirv_data) != OK) {
		return Vector<uint8_t>();
	}
	ERR_FAIL_COND_V_MSG((uint32_t)spirv_data.uniforms.size() > limits.maxBoundDescriptorSets, Vector<uint8_t>(),
			"Number of uniform sets is larger than what is supported by the hardware (" + itos(limits.maxBoundDescriptorSets) + ").");
	
	RenderingDeviceVulkanShaderBinaryData binary_data{};
	Vector<Vector<RenderingDeviceVulkanShaderBinaryDataBinding>> uniform_info; 
	Vector<RenderingDeviceVulkanShaderBinarySpecializationConstant> specialization_constants;
	{
		binary_data.vertex_input_mask = spirv_data.vertex_input_mask;