### 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
}
			}
		}
		uint32_t s = compressed_stages[i].size();
		if (s % 4 != 0) {
			s += 4 - (s % 4);
		}
		stages_binary_size += s;
	}
	binary_data.specialization_constants_count = specialization_constants.size();
	binary_data.set_count = uniform_info.size();
	binary_data.stage_count = p_spirv.size();
	CharString shader_name_utf = p_shader_name.utf8();
	binary_data.shader_name_len = shader_name_utf.length();
	uint32_t total_size = sizeof(uint32_t) * 3; 
	total_size += sizeof(RenderingDeviceVulkanShaderBinaryData);
	total_size += binary_data.shader_name_len;
	if ((binary_data.shader_name_len % 4) != 0) { 
		total_size += 4 - (binary_data.shader_name_len % 4);
	}
	for (int i = 0; i < uniform_info.size(); i++) {
		total_size += sizeof(uint32_t);
		total_size += uniform_info[i].size() * sizeof(RenderingDeviceVulkanShaderBinaryDataBinding);
	}
	total_size += sizeof(RenderingDeviceVulkanShaderBinarySpecializationConstant) * specialization_constants.size();
	total_size += compressed_stages.size() * sizeof(uint32_t) * 3; 
	total_size += stages_binary_size;
	Vector<uint8_t> ret;
	ret.resize(total_size);
	{