浏览代码

We need to remove handles from the cache hash when unregistering them

Samuel Thibault 7 年之前
父节点
当前提交
dac2371224
共有 1 个文件被更改,包括 7 次插入0 次删除
  1. 7 0
      mpi/src/starpu_mpi_cache.c

+ 7 - 0
mpi/src/starpu_mpi_cache.c

@@ -104,12 +104,19 @@ void _starpu_mpi_cache_shutdown()
 void _starpu_mpi_cache_data_clear(starpu_data_handle_t data_handle)
 {
 	struct _starpu_mpi_data *mpi_data = data_handle->mpi_data;
+	struct _starpu_data_entry *entry;
 
 	if (_starpu_cache_enabled == 0) return;
 
 	STARPU_PTHREAD_MUTEX_LOCK(&_cache_mutex);
 	_starpu_mpi_cache_flush_nolock(data_handle);
 	free(mpi_data->cache_sent);
+	HASH_FIND_PTR(_cache_data, &data_handle, entry);
+	if (entry != NULL)
+	{
+		HASH_DEL(_cache_data, entry);
+		free(entry);
+	}
 	STARPU_PTHREAD_MUTEX_UNLOCK(&_cache_mutex);
 }