### 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
_load_pipeline_cache();
		if (pipelines_cache.current_size > pso_blob_size) {
			pso_blob_size = pipelines_cache.current_size;
			if (pipelines_cache_save_task != WorkerThreadPool::INVALID_TASK_ID || !WorkerThreadPool::get_singleton()->is_task_completed(pipelines_cache_save_task)) {
				WorkerThreadPool::get_singleton()->wait_for_task_completion(pipelines_cache_save_task);
			}
		}
	}
	if (pso_blob_size == pipelines_cache.current_size) {
		return;
	} else if (difference < save_interval && !p_closing) {
		return;
	}
	if (p_closing) {
		if (pipelines_cache_save_task == WorkerThreadPool::INVALID_TASK_ID || WorkerThreadPool::get_singleton()->is_task_completed(pipelines_cache_save_task)) {
			pipelines_cache_save_task = WorkerThreadPool::get_singleton()->add_template_task(this, &RenderingDeviceVulkan::_save_pipeline_cache_threaded, pso_blob_size, false, "PipelineCacheSave");
			WorkerThreadPool::get_singleton()->wait_for_task_completion(pipelines_cache_save_task);
		} else {
			WorkerThreadPool::get_singleton()->wait_for_task_completion(pipelines_cache_save_task);
			pipelines_cache_save_task = WorkerThreadPool::get_singleton()->add_template_task(this, &RenderingDeviceVulkan::_save_pipeline_cache_threaded, pso_blob_size, false, "PipelineCacheSave");
			WorkerThreadPool::get_singleton()->wait_for_task_completion(pipelines_cache_save_task);
		}
	} else {
		if (pipelines_cache_save_task == WorkerThreadPool::INVALID_TASK_ID || WorkerThreadPool::get_singleton()->is_task_completed(pipelines_cache_save_task)) {
			pipelines_cache_save_task = WorkerThreadPool::get_singleton()->add_template_task(this, &RenderingDeviceVulkan::_save_pipeline_cache_threaded, pso_blob_size, false, "PipelineCacheSave");
		}
	}
}
void RenderingDeviceVulkan::_save_pipeline_cache_threaded(size_t p_pso_blob_size) {