[Beignet] [PATCH 1/3] Runtime: fix a recurrent release context error.
He Junyan
junyan.he at inbox.com
Mon Jul 10 01:58:42 UTC 2017
This patchset is OK for me.
On Tue, Jun 20, 2017 at 07:07:45PM +0800, Yang Rong wrote:
> Date: Tue, 20 Jun 2017 19:07:45 +0800
> From: Yang Rong <rong.r.yang at intel.com>
> To: beignet at lists.freedesktop.org
> Cc: Yang Rong <rong.r.yang at intel.com>
> Subject: [Beignet] [PATCH 1/3] Runtime: fix a recurrent release context
> error.
> X-Mailer: git-send-email 2.1.4
>
> Before release internal resources, must set them to null, otherwize,
> when delete these resources, will call release context again.
> The ctx->built_in_prgs should be release by application.
>
> Signed-off-by: Yang Rong <rong.r.yang at intel.com>
> ---
> src/cl_context.c | 18 ++++++++----------
> 1 file changed, 8 insertions(+), 10 deletions(-)
>
> diff --git a/src/cl_context.c b/src/cl_context.c
> index c5f3678..f3dd421 100644
> --- a/src/cl_context.c
> +++ b/src/cl_context.c
> @@ -366,9 +366,6 @@ cl_context_delete(cl_context ctx)
> ++internal_ctx_refs;
> }
>
> - if (ctx->built_in_prgs)
> - ++internal_ctx_refs;
> -
> if (ctx->image_queue)
> ++internal_ctx_refs;
>
> @@ -382,30 +379,31 @@ cl_context_delete(cl_context ctx)
> CL_OBJECT_INC_REF(ctx);
>
> if (ctx->image_queue) {
> - clReleaseCommandQueue(ctx->image_queue);
> + cl_command_queue q = ctx->image_queue;
> ctx->image_queue = NULL;
> + clReleaseCommandQueue(q);
> }
>
> /* delete the internal programs. */
> for (i = CL_INTERNAL_KERNEL_MIN; i < CL_INTERNAL_KERNEL_MAX; i++) {
> if (ctx->internal_kernels[i]) {
> - cl_kernel_delete(ctx->internal_kernels[i]);
> + cl_kernel k = ctx->internal_kernels[i];
> ctx->internal_kernels[i] = NULL;
> + cl_kernel_delete(k);
>
> assert(ctx->internal_prgs[i]);
> - cl_program_delete(ctx->internal_prgs[i]);
> + cl_program p = ctx->internal_prgs[i];
> ctx->internal_prgs[i] = NULL;
> + cl_program_delete(p);
> }
>
> if (ctx->built_in_kernels[i]) {
> - cl_kernel_delete(ctx->built_in_kernels[i]);
> + cl_kernel k = ctx->built_in_kernels[i];
> ctx->built_in_kernels[i] = NULL;
> + cl_kernel_delete(k);
> }
> }
>
> - cl_program_delete(ctx->built_in_prgs);
> - ctx->built_in_prgs = NULL;
> -
> CL_OBJECT_DEC_REF(ctx);
>
> cl_free(ctx->prop_user);
> --
> 2.1.4
>
> _______________________________________________
> Beignet mailing list
> Beignet at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/beignet
More information about the Beignet
mailing list