### 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
pipelines_cache.current_size = p_pso_blob_size;
	pipelines_cache.buffer.clear();
	pipelines_cache.buffer.resize(p_pso_blob_size);
	VkResult vr = vkGetPipelineCacheData(device, pipelines_cache.cache_object, &p_pso_blob_size, pipelines_cache.buffer.ptrw());
	ERR_FAIL_COND(vr);
	print_verbose(vformat("Updated PSO cache (%.1f MiB)", p_pso_blob_size / (1024.0f * 1024.0f)));
	VkPhysicalDeviceProperties props;
	vkGetPhysicalDeviceProperties(context->get_physical_device(), &props);
	PipelineCacheHeader header = {};
	header.magic = 868 + VK_PIPELINE_CACHE_HEADER_VERSION_ONE;
	header.data_size = pipelines_cache.buffer.size();
	header.data_hash = hash_murmur3_buffer(pipelines_cache.buffer.ptr(), pipelines_cache.buffer.size());
	header.device_id = props.deviceID;
	header.vendor_id = props.vendorID;
	header.driver_version = props.driverVersion;
	for (size_t i = 0; i < VK_UUID_SIZE; i++) {
		header.uuid[i] = props.pipelineCacheUUID[i];
	}
	header.driver_abi = sizeof(void *);
	Ref<FileAccess> f = FileAccess::open("user://vulkan/pipelines.cache", FileAccess::WRITE, nullptr);
	if (f.is_valid()) {
		f->store_buffer((const uint8_t *)&header, sizeof(PipelineCacheHeader));
		f->store_buffer(pipelines_cache.buffer);
	}
}
template <class T>
void RenderingDeviceVulkan::_free_rids(T &p_owner, const char *p_type) {