Here are sample stacks from Linux and Windows: Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code) C [libamdocl64.so+0x42664e] clCreateKernelsInProgram+0xae [error occurred during error reporting (printing native stack), id 0xb] Java frames: (J=compiled Java code, j=interpreted, Vv=VM code) j com.jogamp.opencl.llb.impl.CLAbstractImpl.dispatch_clCreateKernelsInProgram0(JILjava/lang/Object;ILjava/lang/Object;IJ)I+0 j com.jogamp.opencl.llb.impl.CLAbstractImpl.clCreateKernelsInProgram(JILcom/jogamp/common/nio/PointerBuffer;Ljava/nio/IntBuffer;)I+104 j com.jogamp.opencl.CLProgram.createCLKernels()Ljava/util/Map;+40 j com.jogamp.opencl.CLProgramTest.programBinariesTest()V+334 Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code) C [amdocl64.dll+0x16f454] j com.jogamp.opencl.llb.impl.CLAbstractImpl.clCreateKernelsInProgram(JILcom/jogamp/common/nio/PointerBuffer;Ljava/nio/IntBuffer;)I+104 j com.jogamp.opencl.CLProgram.createCLKernels()Ljava/util/Map;+40 j com.jogamp.opencl.CLProgramTest.programBinariesTest()V+327 v ~StubRoutines::call_stub V [jvm.dll+0x1cb0c3] Java frames: (J=compiled Java code, j=interpreted, Vv=VM code) j com.jogamp.opencl.llb.impl.CLAbstractImpl.dispatch_clCreateKernelsInProgram0(JILjava/lang/Object;ILjava/lang/Object;IJ)I+0 j com.jogamp.opencl.llb.impl.CLAbstractImpl.clCreateKernelsInProgram(JILcom/jogamp/common/nio/PointerBuffer;Ljava/nio/IntBuffer;)I+104 j com.jogamp.opencl.CLProgram.createCLKernels()Ljava/util/Map;+40 j com.jogamp.opencl.CLProgramTest.programBinariesTest()V+327
Bought a used Radeon HD 5450 at a thrift shop yesterday, will try to duplicate these at home and debug.
Duplicated these errors on Win 8.1 with Radeon HD 5450, debugging now.
programBinariesTest() failure was due to AMD drivers crashing in clCreateKernelsInProgram() when the program is not built yet, instead of returning error code CL_INVALID_PROGRAM_EXECUTABLE as they should. lowLevelVectorAddTest() failure was apparently due to the AMD drivers writing past the end of a direct byte buffer in such a way that it made System.gc() crash when called during teardown (this crash didn't even dump stack). Making the buffer larger solved the problem.
Fixes are at https://github.com/WadeWalker/jocl/tree/bug_989_fix_AMD_driver_crashes, waiting to merge until build server is back up
lowLevelVectorAddTest() still fails on linux-x86_64-amd and win7-x86_32-amd; will try increasing buffer size further and rewinding it between all reuses.
That fixed it.