Incorrect kernel argument alignment - "UNREACHABLE EXECUTED"

Discussion created by klkblake on Sep 8, 2013

When a float3 is passed before an image2d_t to a kernel, the program responds with "UNREACHABLE EXECUTED" (when run on the GPU), or segfaults/hangs/only-one-write-recognised (when run on the CPU). Switching the order of the arguments usually makes it work. I am also experiencing full-system lockups when exiting one of my OpenCL applications (closing the window while the kernel is running), which may or may not be related. I am using 13.8_beta2 (in 13.6_beta, the full system lockups were only segfaults). Incidentally, calling clReleaseCommandQueue() seems to also trigger segfaults under some circumstances (the VolumeRendering sample suffers from this, and also (rarely) triggers full system hangs). I believe the incorrect kernel argument alignment may be the root cause behind http://devgurus.amd.com/message/1298930 and http://devgurus.amd.com/message/1299102. Indeed, most of the OpenCL bugs I have found could plausibly be traced back to alignment issues. Attached is a slightly modified version of the GaussionNoiseGL sample which reproduces the issue. I have only attached the modified files. It has an extra float3 argument before the other kernel arguments, which is added to the output just before it is written to the image in order to ensure that the optimiser does not eliminate it.


EDIT: The hang on close only occurs when compiled with optimisation and killing the process while in clFinish().