Quantcast
Channel: Intel® Software - OpenCL*
Viewing all articles
Browse latest Browse all 1182

cl_command_queue reference count does not track cl_event instances and leads to segmentation fault

$
0
0

I have discovered what I consider to be a bug in the reference tracking for cl_command_queue instances that leads to a segmentation fault under a reasonable usage scenario.

The cl_command_queue reference count is not incremented when a cl_event instance is created.  It should be.

clReleaseCommandQueue can be called while there are still cl_event instances that have not been released.  Now, in this case, it is still possible to get a reference to the command queue associated with cl_event by calling clGetEventInfo ( cl_event event, CL_EVENT_COMMAND_QUEUE, , &queue ... ).

I experience a segmentation fault if I use that queue reference to get information about the command queue,  for example:  clGetCommandQueueInfo( command_queue, CL_QUEUE_DEVICE, ...)

I have not been able to get the attachment feature to work for this post.  So my reproducer can be downloaded from the following links: command_queue_ref_cnt_demo.cpp and bugDemoSupport.cpp

My output shows the queue reference count is unaffected by the event lifecycle.  The cl_context reference count also remains fixed.  This may or may not be ok.  I did not explore it.

$ g++ -o bugDemo command_queue_ref_cnt_demo.cpp bugDemoSupport.cpp -I/opt/intel/opencl/include
$ ./bugDemo -p 1
Selected CL_PLATFORM_NAME: Intel(R) OpenCL
CL_DEVICE_NAME:       Intel(R) Xeon(R) CPU E5-2630 v2 @ 2.60GHz
CL_DRIVER_VERSION: 1.2.0.82248

reference count after instantiation:       context 1, queue 1
reference count after creating an event:   context 1, queue 1
reference count after releasing the event: context 1, queue 1

The Apple implementation does not suffer this problem.  The queue reference count tracks the number of event instances associated with that queue:

$ ./bugDemo
Selected CL_PLATFORM_NAME: Apple
CL_DEVICE_NAME: Intel(R) Core(TM) i7-3615QM CPU @ 2.30GHz
CL_DRIVER_VERSION: 1.1

reference count after instantiation:       context 2, queue 1
reference count after creating an event:   context 4, queue 2
reference count after releasing the event: context 3, queue 1

 


Viewing all articles
Browse latest Browse all 1182

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>