[Mesa-dev] [PATCH] clover: Increment an object's reference count in ret_object()
Francisco Jerez
currojerez at riseup.net
Wed Jun 27 16:09:20 PDT 2012
Tom Stellard <tstellar at gmail.com> writes:
> We need to increment the reference count for objects, like cl_event,
> that the user is responsible for destroying when they are returned from
> the API. Otherwise, the object will be destroyed when clover is done with
> it, even though the user will still have a reference to it. For example:
>
> 1. clEnqueueNDRangeKernel(queue, ... , &event)
> - create an event object
> - refcount = 1
>
> 2. clFlush(queue)
> - event object is removed from the queue and its reference count is
> decremented.
> - refcount = 0, event is deleted
>
> 3. clGetEventInfo(event, ...)
> - segfault
I don't think this could cause the problem you've seen... After step 1
the event object ends up queued in queue->queued_events, a ref_ptr<>
list that holds additional references to each object it contains, so,
after step 1 refcount is supposed to be 2 already... You're probably
hitting something more subtle, try the attached patch.
PS: Can you CC me when you send clover-related patches to the mailing
list? I'm likely to miss them otherwise.
> ---
> src/gallium/state_trackers/clover/api/util.hpp | 4 +++-
> 1 files changed, 3 insertions(+), 1 deletions(-)
>
> diff --git a/src/gallium/state_trackers/clover/api/util.hpp b/src/gallium/state_trackers/clover/api/util.hpp
> index 2f9ec1f..5cfc528 100644
> --- a/src/gallium/state_trackers/clover/api/util.hpp
> +++ b/src/gallium/state_trackers/clover/api/util.hpp
> @@ -156,8 +156,10 @@ namespace clover {
> template<typename T, typename S>
> void
> ret_object(T p, S v) {
> - if (p)
> + if (p) {
> *p = v;
> + v->retain();
> + }
> else
> v->release();
> }
-------------- next part --------------
A non-text attachment was scrubbed...
Name: clover_ref_ptr_ctor_tmpl.patch
Type: text/x-patch
Size: 480 bytes
Desc: not available
URL: <http://lists.freedesktop.org/archives/mesa-dev/attachments/20120628/f53fce7f/attachment.bin>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 229 bytes
Desc: not available
URL: <http://lists.freedesktop.org/archives/mesa-dev/attachments/20120628/f53fce7f/attachment.pgp>
More information about the mesa-dev
mailing list