### Godot version

4.1 and 4.0.3 debug build

### System information

OS: Manjaro Linux x86_64
Kernel: 6.1.38-1-MANJARO 
CPU: AMD Ryzen 5 5600X (12) @ 3.700GHz 
GPU: NVIDIA GeForce RTX 3070 Ti
X11 backend
OpenGL API 3.3.0 NVIDIA 535.54.03

### Issue description

Game crashes silently after switching to compatibility rendering method. 
It's a pure 2D game. Forward+ and mobile work fine.

logs in console:

[4.0.3 debug build](https://github.com/Calinou/godot-debug-builds):
```
================================================================
handle_crash: Program crashed with signal 11
Engine version: Godot Engine v4.0.3.stable.custom_build (5222a99f5d38cd5346254cefed8f65315bca4fcb)
Dumping the backtrace. Please include this when reporting the bug to the project developer.
[1] /usr/lib/libc.so.6(+0x39ab0) [0x7fe425c9dab0] (??:0)
[2] /usr/lib/libGLdispatch.so.0(+0x4d6c9) [0x7fe4176de6c9] (??:0)
-- END OF BACKTRACE --
================================================================

```

4.1 official:
```
================================================================
handle_crash: Program crashed with signal 11
Engine version: Godot Engine v4.1.stable.official (970459615f6b2b4151742ec6d7ef8559f87fd5c5)
Dumping the backtrace. Please include this when reporting the bug to the project developer.
[1] /usr/lib/libc.so.6(+0x39ab0) [0x7fc48dfd9ab0] (??:0)
[2] /usr/lib/libGLdispatch.so.0(+0x4d6c9) [0x7fc48462b6c9] (??:0)
-- END OF BACKTRACE --
================================================================

```


### Steps to reproduce

Switch to compatibility rendering method and run game in editor.

### Minimal reproduction project
[signal11.zip](https://github.com/godotengine/godot/files/12061947/signal11.zip)



}                                                                                                     \
		return ret;                                                                                           \
	}
#define FUNCRIDTEX1(m_type, m_type1)                                                                          \
	virtual RID m_type##_create(m_type1 p1) override {                                                        \
		RID ret = RSG::texture_storage->texture_allocate();                                                   \
		if (Thread::get_caller_id() == server_thread || RSG::texture_storage->can_create_resources_async()) { \
			RSG::texture_storage->m_type##_initialize(ret, p1);                                               \
		} else {                                                                                              \
			command_queue.push(RSG::texture_storage, &RendererTextureStorage::m_type##_initialize, ret, p1);  \
		}                                                                                                     \
		return ret;                                                                                           \
	}
#define FUNCRIDTEX2(m_type, m_type1, m_type2)                                                                    \
	virtual RID m_type##_create(m_type1 p1, m_type2 p2) override {                                               \
		RID ret = RSG::texture_storage->texture_allocate();                                                      \
		if (Thread::get_caller_id() == server_thread || RSG::texture_storage->can_create_resources_async()) {    \
			RSG::texture_storage->m_type##_initialize(ret, p1, p2);                                              \
		} else {                                                                                                 \
			command_queue.push(RSG::texture_storage, &RendererTextureStorage::m_type##_initialize, ret, p1, p2); \
		}                                                                                                        \
		return ret;                                                                                              \
	}
#define FUNCRIDTEX6(m_type, m_type1, m_type2, m_type3, m_type4, m_type5, m_type6)                                                \
	virtual RID m_type##_create(m_type1 p1, m_type2 p2, m_type3 p3, m_type4 p4, m_type5 p5, m_type6 p6) override {               \
		RID ret = RSG::texture_storage->texture_allocate();                                                                      \
		if (Thread::get_caller_id() == server_thread || RSG::texture_storage->can_create_resources_async()) {                    \
			RSG::texture_storage->m_type##_initialize(ret, p1, p2, p3, p4, p5, p6);                                              \
		} else {                                                                                                                 \
			command_queue.push(RSG::texture_storage, &RendererTextureStorage::m_type##_initialize, ret, p1, p2, p3, p4, p5, p6); \