### Godot version

Godot Engine v4.0.beta9.mono.official.e780dc332

### System information

Vulkan API 1.3.205 - Using Vulkan Device #0: NVIDIA - NVIDIA GeForce RTX 3070 Ti Laptop GPU

### Issue description

When using a sampler2d[] in a shader, the game window will not close and the task must be killed/forced closed.  Debugging shows that the code is frozen on this method: godotsharp_internal_refcounted_disposed;




### Steps to reproduce

In the attached project, there is a shader "foliageShader.gdshader" that contains a sampler2d[].  If you run the project as is and then just click X to close the window, you should see the described behavior.  Changing the shader to a single sampler2d should cause the issue to go away.

### Minimal reproduction project

[Repro (2).zip](https://github.com/godotengine/godot/files/10298745/Repro.2.zip)

if (!global_shader_uniforms.variables.has(p_name)) {
		return; 
	}
	ERR_FAIL_COND(p_value.get_type() == Variant::OBJECT);
	GlobalShaderUniforms::Variable &gv = global_shader_uniforms.variables[p_name];
	gv.override = p_value;
	if (gv.buffer_index >= 0) {
		
		if (gv.override.get_type() == Variant::NIL) {
			_global_shader_uniform_store_in_buffer(gv.buffer_index, gv.type, gv.value);
		} else {
			_global_shader_uniform_store_in_buffer(gv.buffer_index, gv.type, gv.override);
		}
		_global_shader_uniform_mark_buffer_dirty(gv.buffer_index, gv.buffer_elements);
	} else {
		
		MaterialStorage *material_storage = MaterialStorage::get_singleton();
		for (const RID &E : gv.texture_materials) {
			Material *material = material_storage->get_material(E);
			ERR_CONTINUE(!material);
			material_storage->_material_queue_update(material, false, true);
		}
	}
}
Variant MaterialStorage::global_shader_parameter_get(const StringName &p_name) const {