### Godot version

v4.1.beta3.official [ada712e06]

### System information

Godot v4.1.beta3 - Windows 10.0.22621 - Vulkan (Mobile) - dedicated NVIDIA GeForce RTX 2080 with Max-Q Design (NVIDIA; 31.0.15.3161) - Intel(R) Core(TM) i9-8950HK CPU @ 2.90GHz (12 Threads)

### Issue description

I am using the main renderingdevice to do offscreen drawing to a texture. If I use the same code on a local rendering device created using `RenderingServer.create_local_rendering_device()`, it works fine, but the moment I do anything on the main rendering device (from RenderingServer.get_rendering_device() ), my code will run for one or two frames, then the game quits silently.

I've narrowed it down with a passthrough shader and no actual draw calls - just any call to `draw_list_begin` and `draw_list_end`, and it dies.

If you use single threaded renderingdevice, it works.

I feel like this is a good test of the stability of the vulkan multithreading ( see https://github.com/godotengine/godot-proposals/discussions/7163 ) - if we want to allow multithreaded use of a single renderingdevice, then this should work.

### Steps to reproduce

Hit play on the project below. It will hopefully print out before, inside, after, then silently quit. Does on mine at least, on dev builds and on 4.1b3. If you set rendering to single-threaded (safe or unsafe), then it works happily.



### Minimal reproduction project

[crashtest.zip](https://github.com/godotengine/godot/files/11892220/crashtest.zip)

case LIMIT_MAX_SAMPLERS_PER_UNIFORM_SET:
			return limits.maxDescriptorSetSamplers;
		case LIMIT_MAX_STORAGE_BUFFERS_PER_UNIFORM_SET:
			return limits.maxDescriptorSetStorageBuffers;
		case LIMIT_MAX_STORAGE_IMAGES_PER_UNIFORM_SET:
			return limits.maxDescriptorSetStorageImages;
		case LIMIT_MAX_UNIFORM_BUFFERS_PER_UNIFORM_SET:
			return limits.maxDescriptorSetUniformBuffers;
		case LIMIT_MAX_DRAW_INDEXED_INDEX:
			return limits.maxDrawIndexedIndexValue;
		case LIMIT_MAX_FRAMEBUFFER_HEIGHT:
			return limits.maxFramebufferHeight;
		case LIMIT_MAX_FRAMEBUFFER_WIDTH:
			return limits.maxFramebufferWidth;
		case LIMIT_MAX_TEXTURE_ARRAY_LAYERS:
			return limits.maxImageArrayLayers;
		case LIMIT_MAX_TEXTURE_SIZE_1D:
			return limits.maxImageDimension1D;
		case LIMIT_MAX_TEXTURE_SIZE_2D:
			return limits.maxImageDimension2D;
		case LIMIT_MAX_TEXTURE_SIZE_3D:
			return limits.maxImageDimension3D;
		case LIMIT_MAX_TEXTURE_SIZE_CUBE:
			return limits.maxImageDimensionCube;
		case LIMIT_MAX_TEXTURES_PER_SHADER_STAGE:
			return limits.maxPerStageDescriptorSampledImages;
		case LIMIT_MAX_SAMPLERS_PER_SHADER_STAGE:
			return limits.maxPerStageDescriptorSamplers;
		case LIMIT_MAX_STORAGE_BUFFERS_PER_SHADER_STAGE:
			return limits.maxPerStageDescriptorStorageBuffers;