Hi there
I have a set of kernels that do some image operations.
They all run fine on several gpu’s and cpu’s but for some reason when using a gpu of the intel platform that’s integrated in the cpu it just plain crashes my whole java vm.
The source of the problem seems to be coming from inside of jocl, when calling Delete in clBuildProgram.
I will post the full stack trace at the end of this post so you can have a look yourself.
Maybe it’s possible that one of the pointer has already been destroyed and can’t be used again or maybe it just wasn’t renewed. I don’t know what exactly is going on ofcourse inside of the function.
The hardware:
- i7 3770 @ 3,40 Ghz
- integrated graphics: Intel HD Graphics 4000
The driver:
- Intel OpenCL SDK (this one --> http://software.intel.com/en-us/vcsource/tools/opencl-sdk)
Here is the full crash log:
# A fatal error has been detected by the Java Runtime Environment:
#
# EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x000007fee906fe6a, pid=1264, tid=2992
#
# JRE version: 6.0_27-b07
# Java VM: Java HotSpot(TM) 64-Bit Server VM (20.2-b06 mixed mode windows-amd64 compressed oops)
# Problematic frame:
# C [igdfcl64.dll+0x91fe6a]
#
# If you would like to submit a bug report, please visit:
# http://java.sun.com/webapps/bugreport/crash.jsp
# The crash happened outside the Java Virtual Machine in native code.
# See problematic frame for where to report the bug.
#
--------------- T H R E A D ---------------
Current thread (0x00000000005cd800): JavaThread "main" [_thread_in_native, id=2992, stack(0x00000000026d0000,0x00000000027d0000)]
siginfo: ExceptionCode=0xc0000005, reading address 0x0000000000000040
Registers:
RAX=0x0000000000000000, RBX=0x0000000000000007, RCX=0x0000000000000000, RDX=0x00000000027c8810
RSP=0x00000000027c8758, RBP=0x0000000000000007, RSI=0x00000000027c87e8, RDI=0x00000000027c8820
R8 =0x0000000000000000, R9 =0x00000000027c8bb0, R10=0x0000000000000010, R11=0x00000000027c87d8
R12=0x0000000017bd9470, R13=0x0000000017a98090, R14=0x00000000027ccad0, R15=0x0000000000000000
RIP=0x000007fee906fe6a, EFLAGS=0x0000000000010202
Top of Stack: (sp=0x00000000027c8758)
0x00000000027c8758: 000007fee877acaa 0000000000000000
0x00000000027c8768: 00000000027c8810 00000000027c87f8
0x00000000027c8778: 17aeb5f000000009 17aa9c5000000000
0x00000000027c8788: 0000000000000000 00000000027c8910
0x00000000027c8798: 00000000027c8910 00000000027c8914
0x00000000027c87a8: 000007fee892448e 0000000018802698
0x00000000027c87b8: 000007fee8b639fc 0000000000000000
0x00000000027c87c8: 000007fe00000004 0000000000000000
0x00000000027c87d8: 000007fe00000005 0000000000000000
0x00000000027c87e8: 00000000027c87d8 00000000027c88a0
0x00000000027c87f8: 000007fee8797dd3 00000000183364d0
0x00000000027c8808: 0000000000000000 000007fe00000005
0x00000000027c8818: 0000000000000000 00000000027c8db0
0x00000000027c8828: 000007fee8797d9e 0000000018802698
0x00000000027c8838: fffffffffffffffe 0000000000000000
0x00000000027c8848: 00000000027c8930 00000000027c8a20
Instructions: (pc=0x000007fee906fe6a)
0x000007fee906fe4a: 8b 4c 24 30 e8 cd dd 8d ff 48 8b c8 e8 35 d8 23
0x000007fee906fe5a: 00 48 83 c4 28 c3 48 89 4c 24 08 48 8b 44 24 08
0x000007fee906fe6a: 48 8b 40 40 c3 cc 48 89 54 24 10 48 89 4c 24 08
0x000007fee906fe7a: 48 83 ec 28 48 8b 54 24 38 48 8b 4c 24 30 e8 e3
Register to memory mapping:
RAX=0x0000000000000000 is an unknown value
RBX=0x0000000000000007 is an unknown value
RCX=0x0000000000000000 is an unknown value
RDX=0x00000000027c8810 is pointing into the stack for thread: 0x00000000005cd800
RSP=0x00000000027c8758 is pointing into the stack for thread: 0x00000000005cd800
RBP=0x0000000000000007 is an unknown value
RSI=0x00000000027c87e8 is pointing into the stack for thread: 0x00000000005cd800
RDI=0x00000000027c8820 is pointing into the stack for thread: 0x00000000005cd800
R8 =0x0000000000000000 is an unknown value
R9 =0x00000000027c8bb0 is pointing into the stack for thread: 0x00000000005cd800
R10=0x0000000000000010 is an unknown value
R11=0x00000000027c87d8 is pointing into the stack for thread: 0x00000000005cd800
R12=0x0000000017bd9470 is an unknown value
R13=0x0000000017a98090 is an unknown value
R14=0x00000000027ccad0 is pointing into the stack for thread: 0x00000000005cd800
R15=0x0000000000000000 is an unknown value
Stack: [0x00000000026d0000,0x00000000027d0000], sp=0x00000000027c8758, free space=993k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
C [igdfcl64.dll+0x91fe6a] Delete+0x91edfa
Java frames: (J=compiled Java code, j=interpreted, Vv=VM code)
j org.jocl.CL.clBuildProgramNative(Lorg/jocl/cl_program;I[Lorg/jocl/cl_device_id;Ljava/lang/String;Lorg/jocl/BuildProgramFunction;Ljava/lang/Object;)I+0
j org.jocl.CL.clBuildProgram(Lorg/jocl/cl_program;I[Lorg/jocl/cl_device_id;Ljava/lang/String;Lorg/jocl/BuildProgramFunction;Ljava/lang/Object;)I+8
j id.compare.image.impl.gpu.operation.MaxOperation.<init>(Lid/compare/image/impl/gpu/OpenCLEnvironment;)V+66
j id.compare.image.impl.gpu.ImageComparisonServiceImpl.createMaxOperation()Lcom/id/compare/image/operation/IMaxOperation;+20
j com.id.compare.image.ImageComparator.calculateDiff(Lcom/id/compare/image/IImage;Lcom/id/compare/image/IImage;Lcom/id/compare/image/ImageComparator$ImageComparisonServicePoolObject;)Lcom/id/compare/image/IImage;+40
j com.id.compare.image.ImageComparator.createDifferenceImage(Ljavax/media/jai/PlanarImage;Ljavax/media/jai/PlanarImage;)Ljava/awt/image/BufferedImage;+1317
j com.id.compare.image.ImageComparator.createDifferenceImage(Ljava/awt/image/BufferedImage;Ljava/awt/image/BufferedImage;)Ljava/awt/image/BufferedImage;+15
j com.id.compare.image.test.testcase.TestBenchmark.doImageCompare(Ljava/io/File;Ljava/io/File;)Lcom/id/compare/image/test/testcase/BenchmarkImage;+23
j com.id.compare.image.test.testcase.TestBenchmark.testBenchmark()V+42
v ~StubRoutines::call_stub
j sun.reflect.NativeMethodAccessorImpl.invoke0(Ljava/lang/reflect/Method;Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+0
j sun.reflect.NativeMethodAccessorImpl.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+87
j sun.reflect.DelegatingMethodAccessorImpl.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+6
j java.lang.reflect.Method.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+161
j junit.framework.TestCase.runTest()V+107
j junit.framework.TestCase.runBare()V+7
j junit.framework.TestResult$1.protect()V+4
j junit.framework.TestResult.runProtected(Ljunit/framework/Test;Ljunit/framework/Protectable;)V+1
j junit.framework.TestResult.run(Ljunit/framework/TestCase;)V+18
j junit.framework.TestCase.run(Ljunit/framework/TestResult;)V+2
j junit.framework.TestSuite.runTest(Ljunit/framework/Test;Ljunit/framework/TestResult;)V+2
j junit.framework.TestSuite.run(Ljunit/framework/TestResult;)V+40
j junit.framework.TestSuite.runTest(Ljunit/framework/Test;Ljunit/framework/TestResult;)V+2
j junit.framework.TestSuite.run(Ljunit/framework/TestResult;)V+40
j org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(Lorg/eclipse/jdt/internal/junit/runner/TestExecution;)V+40
j org.eclipse.jdt.internal.junit.runner.TestExecution.run([Lorg/eclipse/jdt/internal/junit/runner/ITestReference;)V+17
j org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests([Ljava/lang/String;Ljava/lang/String;Lorg/eclipse/jdt/internal/junit/runner/TestExecution;)V+61
j org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(Lorg/eclipse/jdt/internal/junit/runner/TestExecution;)V+10
j org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run()V+70
j org.eclipse.pde.internal.junit.runtime.RemotePluginTestRunner.main([Ljava/lang/String;)V+14
j org.eclipse.pde.internal.junit.runtime.CoreTestApplication.run(Ljava/lang/Object;)Ljava/lang/Object;+4
v ~StubRoutines::call_stub
j sun.reflect.NativeMethodAccessorImpl.invoke0(Ljava/lang/reflect/Method;Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+0
j sun.reflect.NativeMethodAccessorImpl.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+87
j sun.reflect.DelegatingMethodAccessorImpl.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+6
j java.lang.reflect.Method.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+161
j org.eclipse.equinox.internal.app.EclipseAppContainer.callMethodWithException(Ljava/lang/Object;Ljava/lang/String;[Ljava/lang/Class;[Ljava/lang/Object;)Ljava/lang/Object;+15
j org.eclipse.equinox.internal.app.EclipseAppHandle.run(Ljava/lang/Object;)Ljava/lang/Object;+196
j org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(Ljava/lang/Object;)Ljava/lang/Object;+103
j org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(Ljava/lang/Object;)Ljava/lang/Object;+29
j org.eclipse.core.runtime.adaptor.EclipseStarter.run(Ljava/lang/Object;)Ljava/lang/Object;+149
j org.eclipse.core.runtime.adaptor.EclipseStarter.run([Ljava/lang/String;Ljava/lang/Runnable;)Ljava/lang/Object;+183
v ~StubRoutines::call_stub
j sun.reflect.NativeMethodAccessorImpl.invoke0(Ljava/lang/reflect/Method;Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+0
j sun.reflect.NativeMethodAccessorImpl.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+87
j sun.reflect.DelegatingMethodAccessorImpl.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+6
j java.lang.reflect.Method.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+161
j org.eclipse.equinox.launcher.Main.invokeFramework([Ljava/lang/String;[Ljava/net/URL;)V+211
j org.eclipse.equinox.launcher.Main.basicRun([Ljava/lang/String;)V+126
j org.eclipse.equinox.launcher.Main.run([Ljava/lang/String;)I+4
j org.eclipse.equinox.launcher.Main.main([Ljava/lang/String;)V+10
v ~StubRoutines::call_stub
--------------- P R O C E S S ---------------
Java Threads: ( => current thread )
0x000000000c964800 JavaThread "Java2D Disposer" daemon [_thread_blocked, id=3908, stack(0x0000000017730000,0x0000000017830000)]
0x000000000c961800 JavaThread "Thread-23" daemon [_thread_blocked, id=3936, stack(0x000000000f3a0000,0x000000000f4a0000)]
0x000000000c964000 JavaThread "Thread-21" daemon [_thread_blocked, id=3944, stack(0x000000000dd90000,0x000000000de90000)]
0x000000000c963000 JavaThread "Thread-19" daemon [_thread_blocked, id=3980, stack(0x000000000c4e0000,0x000000000c5e0000)]
0x000000000c969800 JavaThread "LoggerThread" daemon [_thread_blocked, id=3940, stack(0x000000000ff70000,0x0000000010070000)]
0x000000000c968000 JavaThread "Thread-13" daemon [_thread_blocked, id=3912, stack(0x000000000f2a0000,0x000000000f3a0000)]
0x000000000c967800 JavaThread "Thread-11" daemon [_thread_blocked, id=3920, stack(0x000000000e590000,0x000000000e690000)]
0x000000000c967000 JavaThread "Thread-9" daemon [_thread_blocked, id=3924, stack(0x000000000e490000,0x000000000e590000)]
0x000000000c966000 JavaThread "Thread-7" daemon [_thread_blocked, id=3904, stack(0x000000000e390000,0x000000000e490000)]
0x000000000c962800 JavaThread "Shared file monitor" daemon [_thread_blocked, id=3896, stack(0x000000000df90000,0x000000000e090000)]
0x000000000c960800 JavaThread "Shared file monitor" daemon [_thread_blocked, id=3888, stack(0x000000000b030000,0x000000000b130000)]
0x000000000c11d800 JavaThread "ReaderThread" [_thread_in_native, id=2264, stack(0x000000000b230000,0x000000000b330000)]
0x0000000009727800 JavaThread "Worker-JM" [_thread_blocked, id=1620, stack(0x000000000b410000,0x000000000b510000)]
0x0000000009673000 JavaThread "[Timer] - Main Queue Handler" daemon [_thread_blocked, id=3504, stack(0x000000000b130000,0x000000000b230000)]
0x000000000996a800 JavaThread "Bundle File Closer" daemon [_thread_blocked, id=3500, stack(0x0000000009f60000,0x000000000a060000)]
0x0000000008a67800 JavaThread "Start Level Event Dispatcher" daemon [_thread_blocked, id=3664, stack(0x0000000009e60000,0x0000000009f60000)]
0x0000000008c02000 JavaThread "Framework Event Dispatcher" daemon [_thread_blocked, id=2792, stack(0x0000000009d60000,0x0000000009e60000)]
0x0000000008abc000 JavaThread "State Saver" [_thread_blocked, id=2712, stack(0x0000000009c60000,0x0000000009d60000)]
0x00000000089c9800 JavaThread "Framework Active Thread" [_thread_blocked, id=2996, stack(0x0000000009b60000,0x0000000009c60000)]
0x0000000008d08800 JavaThread "OSGi Console" [_thread_blocked, id=2060, stack(0x00000000091e0000,0x00000000092e0000)]
0x00000000076ae800 JavaThread "Low Memory Detector" daemon [_thread_blocked, id=1652, stack(0x0000000008790000,0x0000000008890000)]
0x00000000076a5800 JavaThread "C2 CompilerThread1" daemon [_thread_blocked, id=3028, stack(0x0000000008690000,0x0000000008790000)]
0x000000000769a000 JavaThread "C2 CompilerThread0" daemon [_thread_blocked, id=2720, stack(0x0000000008590000,0x0000000008690000)]
0x0000000007699000 JavaThread "Attach Listener" daemon [_thread_blocked, id=2868, stack(0x0000000008490000,0x0000000008590000)]
0x0000000007698000 JavaThread "Signal Dispatcher" daemon [_thread_blocked, id=740, stack(0x0000000008390000,0x0000000008490000)]
0x0000000007649000 JavaThread "Finalizer" daemon [_thread_blocked, id=2744, stack(0x0000000008290000,0x0000000008390000)]
0x0000000007642800 JavaThread "Reference Handler" daemon [_thread_blocked, id=796, stack(0x0000000008190000,0x0000000008290000)]
=>0x00000000005cd800 JavaThread "main" [_thread_in_native, id=2992, stack(0x00000000026d0000,0x00000000027d0000)]