From ea84b36592398a7dae5db60f4d88581028ae5ced Mon Sep 17 00:00:00 2001 From: Lionel Landwerlin Date: Thu, 28 Mar 2024 18:12:02 +0200 Subject: [PATCH] anv: fix incorrect blorp dynamic state heap usage Found with valgrind : ==253563== Invalid free() / delete / delete[] / realloc() ==253563== at 0x6EEBB88: anv_state_pool_free (anv_allocator.c:962) ==253563== by 0x6EFB563: anv_device_finish_blorp (anv_blorp.c:143) ==253563== by 0x6F204F8: anv_DestroyDevice (anv_device.c:4063) ==253563== by 0x6DE1CD7: loader_layer_destroy_device (loader.c:4387) ==253563== by 0x6DF1D5E: vkDestroyDevice (trampoline.c:1025) ==253563== by 0x407C54: vk::refdetails::Deleter::operator()(vk::VkDevice_s*) const (vkRef.hpp:131) ==253563== by 0x42C016: vk::refdetails::RefBase::reset() (vkRef.hpp:303) ==253563== by 0x40B385: vk::refdetails::RefBase::~RefBase() (vkRef.hpp:296) ==253563== by 0x40A95D: vk::refdetails::Unique::~Unique() (vkRef.hpp:376) ==253563== by 0x402501: vkt::DefaultDevice::~DefaultDevice() (vktTestCase.cpp:658) ==253563== by 0x444807: de::DefaultDeleter::operator()(vkt::DefaultDevice*) const (deDefs.hpp:112) ==253563== by 0x43922D: de::details::UniqueBase >::reset() (deUniquePtr.hpp:90) ==253563== Address 0xd3df000 is 0 bytes inside a block of size 272 client-defined ==253563== at 0x6EEBA0B: anv_state_pool_alloc (anv_allocator.c:940) ==253563== by 0x6EFA610: anv_state_pool_emit_data (anv_private.h:852) ==253563== by 0x6EFB206: upload_dynamic_state (anv_blorp.c:106) ==253563== by 0x6FC8C31: blorp_init_dynamic_states (blorp_genX_exec_brw.h:2211) ==253563== by 0x6FCD02D: gfx9_blorp_init_dynamic_states (genX_blorp_exec.c:507) ==253563== by 0x6EFB47E: anv_device_init_blorp (anv_blorp.c:129) ==253563== by 0x6F1FBBA: anv_CreateDevice (anv_device.c:3908) ==253563== by 0x840B669: vk_tramp_CreateDevice (vk_dispatch_trampolines.c:78) ==253563== by 0x6DE663A: terminator_CreateDevice (loader.c:5836) ==253563== by 0x6DE3E39: loader_create_device_chain (loader.c:4940) ==253563== by 0x6DE1AC5: loader_layer_create_device (loader.c:4320) ==253563== by 0x6DF1CBF: vkCreateDevice (trampoline.c:1005) Signed-off-by: Lionel Landwerlin Fixes: fe1baa6481 ("anv: reduce blorp dynamic state emissions") Reviewed-by: Ivan Briano Part-of: --- src/intel/vulkan/anv_blorp.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/intel/vulkan/anv_blorp.c b/src/intel/vulkan/anv_blorp.c index 1ef35fd514d..1fec49fdedd 100644 --- a/src/intel/vulkan/anv_blorp.c +++ b/src/intel/vulkan/anv_blorp.c @@ -140,7 +140,7 @@ anv_device_finish_blorp(struct anv_device *device) anv_state_pool_free(&device->dynamic_state_pool, device->blorp.dynamic_states[i].state); if (device->vk.enabled_extensions.EXT_descriptor_buffer) { - anv_state_pool_free(&device->dynamic_state_pool, + anv_state_pool_free(&device->dynamic_state_db_pool, device->blorp.dynamic_states[i].db_state); }